Last week my project team made something I’m particularly proud of: Robot Haikubot!
Robot Haikubot combined our interests in poetry, data aggregation, sentiment analysis, automation, and social interaction into a Twitter bot that was fun to make and is even more fun to use.

Created by students at
Alchemy Code Lab
What It Does
Robot Haikubot will tweet you a randomly-generated haiku when you tweet at it; e.g., “Hey @RobotHaikubot, you up?”
You can also include either a #positive, #negative, or #neutral hashtag in your tweet and get back a haiku with that sentiment; e.g., “Hey @RobotHaikubot, I would love a #positive haiku please!”.
Finally, you can add to our database of five-syllable and seven-syllable lines by adding the hashtag #five or #seven to your line; e.g., “@RobotHaikubot #five Get me a glass, please”. And don’t worry about adding erroneous lines to the db. Robot Haikubot uses syllable counting to validate if a line being added has five or seven syllables. If it doesn’t, the line won’t be added — no harm, no foul!
How It’s Built
Robot Haikubot is built using Node.js, MongoDB, and Express for data management and manipulation and the Twit, Sentiment, and Syllable npm packages for accessing the Twitter API and checking syllable count and sentiment. We deployed the final app to Heroku.
For syllable counting, we wrote a function using the Syllable npm package and imported that into a syllable-count middleware that validates the syllables in a line and sends the request to the correct route if valid or an error message if not.
For sentiment, we wrote a function using the Sentiment npm package that maps through a valid five or seven line and assigns a composite sentiment score to the instance of that line model before storing it in the database. This allowed us to take sentiment-specific get requests from the user when asking for a haiku.
Finally, the Twit npm package allowed us to open a stream from our bot account and listen for tweet events that mention our bot’s name and then tweet a haiku to the user making that request.

Make Requests via Postman
Want to interact with Robot Haikubot but don’t have a Twitter account? You can make requests directly to the API via Postman by getting from and posting to these routes:
- Get a Haiku: You can get a randomly-generated haiku by simply visiting Robot Haikubot on Heroku at https://pure-ravine-47428.herokuapp.com/api/v1/haikus. Refresh the page to get a new haiku.
- Add a Five or Seven:
- Create a user account by posting to https://pure-ravine-47428.herokuapp.com/api/v1/auth/signup in the following JSON format: { “username”: “a name”, “password”: “a password” }
- From the account you’ve created, grab the token and put it as the Authorization value in the Header section.
- You can then add a five- or seven-syllable line to our database by posting to https://pure-ravine-47428.herokuapp.com/api/v1/fives (for fives) or https://pure-ravine-47428.herokuapp.com/api/v1/sevens (for sevens) in the following JSON formats: { “text”: “your five syllables” } / { “text”: “your seven syllables here” }
Contribute to Robot Haikubot!
My team did a ton of work to get Robot Haikubot up and running last week but there are still a handful of stretch goals we didn’t get to that we’d love some help with! If you’re comfortable with Node, MongoDB, Express, Mongoose, or just want to play around with our code, grab one of the open tickets here and have a go! For testing, you will need to include a .env file in your root and populate it with your version of the following keys:
//credentials for accessing and authenticating mongodb MONGODB_URI=your-key-here AUTH_SECRET=your-key-here //twitter credentials// CONSUMER_KEY='your-key-here' CONSUMER_SECRET='your-key-here' ACCESS_TOKEN='your-key-here' ACCESS_TOKEN_SECRET='your-key-here' TWITTER_SECRET='your-key-here' //base url for routes/twit API// BASE_URL=http://localhost:your-preferred-port //admin credentials for authenticating fives and sevens// ADMIN_LOGIN='your-key-here'
Finally, don’t forget to follow my brilliant project partners on Twitter:
- Emily Baier, @hellotaco
- Cheri Portman, @cheriportman,
- Marty Martinez, @tddanddragon
- Chris Lu, @curiouscoyote2
Thank you for reading.
Now, log on to Twitter and
have fun with our bot!