I haven’t made too many Twitter bots recently, so let’s check in on my old bots and see how they’re doing. All numbers are as of September 2021. This post contains embedded tweets which might take a moment or two to fully load.

Everybird

  • @_everybird_
  • Created: December 2014
  • Followers: 42.6K
  • Tweets: 9,799
  • Still Functional:

See the original post on everybird.

One of my very first bots, and still my most popular Twitter bot by follower count. In 2019 everybird finished its original task of “posting every bird” after five years of posting six times per day.

Along the way I made some small updates to the code to make the images more accurate, after a few instances of something like this happening:

As of now, the account is on “rerun” mode: it simply picks one of its old posts at random and retweets it. I had planned to stop the account entirely but a ton of people said that looking at the birds was one of their favorite parts of Twitter and I wanted to make that a continued possibility.

And of course, something as popular as everybird needed some merchandise. A couple years ago I worked with an artist to make a design for custom everybird t-shirt:

I put it up for sale via Teespring’s charity program, with 100% of the profits going to BirdLife International. The Teespring charity program was really convenient as it meant I didn’t have to handle the money or the shirts at all, and as of today we’ve raised more than $600 that went directly to bird and general wildlife preservation.

Pharmaduke

  • @pharmaduke3000
  • Created: December 2015
  • Followers: 8,284
  • Tweets: 10.3K
  • Still Functional:

I never wrote a blog about this one, so I’ll go over it briefly. This bot takes Marmaduke comics, removes the original caption, and replaces it with a line from an Erowid trip report. The idea came to me when I was thinking of the phrase “Big Pharma” and my mind associated it with Marmaduke, which I used to read daily as a kid, along with all the other strips in the daily paper.

If you aren’t aware, Erowid is a classic and legendary internet site where people go to write down their experiences with all kinds of psychedelic drugs. This, naturally, leads to some pretty wild stories, and so it’s the perfect place to grab a bunch of content to be used in a bot or other cultural mash-up.

Pharmaduke mainly works because the caption in Marmaduke is always from the first-person perspective, spoken by one of the humans in the strip, and Erowid reports are almost always written from the first-person perspective as well.

If I remember correctly I wrote this bot in about 48 hours and it’s been running since then without a single problem. The hardest part from a technical perspective was that the Marmaduke strips seem to have been scanned in to the archive manually, so the strip itself is not always in a consistent place, and the images are not always the same size. I wrote a small function to find the bottom of the strip by looking for a horizontal black line. Since all I’m doing from there is adding the new caption, all I need to know is the bottom of the strip. Once I have the coordinates of the strip’s lower edge, I just move down a set number of pixels and place the caption there.

Compy

  • @__compy
  • Created: May 2016
  • Followers: 2,843
  • Tweets: 68.5K
  • Still Functional:

Check out the original blog post about compy.

The good news: Compy has been running for more than 5 years and has posted more than 70k times. Aside from maybe 100 manual posts I’ve made through the account, each post is a response to a request from a user. That means that individual Twitter users have interacted with Compy, asking for a horoscope or a gift or to battle one of their e-friends, almost 70,000 times, or roughly 40 times per day since it was first deployed in 2016.

The bad news: Compy is likely nearing the end of its life :(. It runs on a free Heroku dyno on an older, nearly unsupported version of Ruby. I tried briefly to update to the latest version of Ruby but many of the things Compy relies on (mainly, a Ruby implementation of Imgkit for turning HTML and CSS into .png files) would not be an easy transition. The amount of work I would need to put in to update this bot to a supported Ruby version would be more than I’m willing to spend on an old project like this… so when Compy finally breaks I’ll simply retire it. We had our fun, and some things aren’t meant to last forever.

Statbot

  • @_statbot
  • Created: March 2016
  • Followers: 7.7K
  • Tweets: 27.9K
  • Still Functional:

Check out the original blog post about Statbot here.

Statbot is still fully functional, though the demand has slowed down quite a bit. When I first deployed Statbot it was often hitting the Twitter limit of 15 posts every 10 minutes, and now it posts once or twice a week. Still tickin’, though.

36 Headlines

  • @36Headlines
  • Created: October 2016
  • Followers: 75
  • Tweets: 25K
  • Still Functional:

I stopped following this one a while ago since it’s kind of one joke repeated over and over and over and it was starting to annoy me when it showed up on my timeline. Not enough to shut down the bot entirely, though.

It looks at recent headlines, replaces the subject with one of the members of the Wu-Tang Clan, and then posts the remixed headline. That’s it. The idea was funnier than the execution, I think.

screencap of the Wu Tang headline bot

GARFIELD ZONE

  • @GARFIELD_ZONE
  • Created: November 2014
  • Followers: 208
  • Tweets: 56K
  • Still Functional:

a glitched out garfield strip

This isn’t one of my favorite bots in terms of the output it produces, but it has been posting every four hours for more than 7 years at this point so I have to admire it for its sheer determination. I haven’t touched the code for this one since I first deployed it.

Trebek3000

  • @GARFIELD_ZONE
  • Created: October 2014
  • Followers: 394
  • Tweets: 8K (this bot deletes old tweets)
  • Still Functional:

a Jeopardy clue presented by my bot

Also haven’t touched this one since it was first deployed, though all of the clues are stored in the repo itself and not scraped at the time from another site so it’s less impressive.