No more free Twitter updates - can iNat help?

Twitter has recently announced they are discontinuing the feature of their Free tier API to access updates from Twitter accounts. That’s a really unfortunate move for small communities who have been enjoying seeing that content free of charge up until now. The iNat Discord community simply can’t afford what Twitter wants to charge us, and none of the other pages where iNat is posting this content is a usable replacement.

  1. Instagram has no API, so that’s not an option.
  2. Facebook has only a paid API, so that’s off the table too.
  3. The iNat blog Atom feed is not formatted in an easily consumable way. Even if we could solve that, it is missing a great deal of content, most notably the extremely popular “Observation of the Day” posts, for which there is no separate Atom feed. Both would need to be addressed for this to be a suitable replacement.
  4. Twitter itself works, for now (see screenshots below) but very soon they want $100/mo tier, which is too rich for us!

So before making a formal request for this, I want to open discussion about the problem at hand. I have been told by many of our members that if they didn’t see posts from the iNat Twitter feed on our Discord, they just wouldn’t see them at all!

Here’s an example Observation of the Day tweet, as it currently appears in our Discord feed:

Here’s an example iNat Blog tweet:

There have been discussions on this forum in the past about whether iNat should leave Twitter and whether iNat has an official Mastodon presence, but neither of those things are the thrust of my post. The need I’d like us to stay focused on is just having easy access to the same content that currently only lands on the “big” social sites, since they’re making it difficult to get at it anymore without onerous costs attached.


Is there no alternative to the API? I might be wrong, but if you have access to the bot’s code I think it could be reconfigured to scrape the data from the website or use one of the various pre-existing Twitter scrapers.


Scraping, ugggh. I don’t want to be the person who owns that code. If the community cog devs for my Discord bot framework switch over to a scraper-based solution, I will use whatever they come up with. But scraping is a last resort.

Just to clarify: I write a good deal of code for our Discord bots, but try to limit the amount of time I spend getting non-essential services working so I can spend the bulk of my time on the core, iNat-specific features. This usually means relying on ready-made solutions provided by other devs for all that other stuff. I have submitted plenty of patches for those, but switching from using the API to a scraper is a big overhaul, not just a simple fix.

In the rosiest of futures, then, one of those other devs delivers a solution before Twitter yanks support for the old API and breaks the service. If that doesn’t happen in time, so be it. And if iNat can’t afford to provide a feed of the social media posts that anyone can access with standard tools, I’ll understand. But I thought it couldn’t hurt to ask.


at least for the blog, you might be able to use this:

I played with it and am disappointed. There are no separate images provided as tags. A lot members are drawn to the post by the image. The tweets cog I use can automatically scrape an image from the post but it doesn’t look like that works for however the feed posts have been formatted.


from the blog.json, you can get the latest blog post and publish date. then you can curl the particular post page (ex., and that will have the meta tags you’re looking for. alternatively, you can parse the first image file from the body of blog.json.

The rss cog documentation says it parses images from the content tag as generated tags like $content_image01 etc. but I tried that earlier today with a recent post and it wasn’t working. When I have a moment I’ll see if it’s a simple fix.

That still leaves the Observation of the Day posts unresolved, though, even if I can make the blog posts work. I know you can get an atom feed from a project’s observations but that would be missing the nice comments about the observation that staff put on the social media posts.

is that the same thing you would use to generate the preview for an observation? seems like whatever you use for observations should work for the journal posts.

No, this is something another dev wrote to display rss/atom feed articles:

I would like a way to see the observation of the day on the inat website itself, I never even knew such a thing exists. That is from someone with no technical understanding of the issue, so in my mind that might be a 5 minute task to just have it appear underneath the last blog post :smile:

And to be on topic, if the above change would be made I suppose it would then be easy for Discord to just take it from the website…


Actually, this is a solution that might work without me coding anything. As I mentioned below, I’m using a third-party cog (module providing commands in our bot framework for Discord) that handles rss feeds. I recently found by checking the author’s support channel that some people are using to provide twitter account updates as an RSS feed.

For example, a URL like this produces a feed of tweets from iNaturalist with the first image in the preview:

The result is not quite as nice as going through the Twitter API, but will suffice so long as rsshub itself continues to work.

There doesn’t seem to be an option to use the full description instead of the title without displaying the raw html to the channel, so the post gets truncated, missing the link to the iNaturalist observation itself. That’s less than ideal.

So for now, we seem to have a possible workaround that continues to rely on Twitter for iNat social media updates, but it will only show a single image from the post and it will truncate content. I’d still like to see iNat’s social media updates in a feed we can use directly instead of having to go through two different third-party providers if that’s at all possible.

1 Like


There used to be Observation of the Day project journal posts, but they discontinued those a couple of years ago. I imagine they started posting those to social media instead to encourage sharing and interaction. And while I don’t fundamentally disagree with that change - I do feel it is for the better - it’s great for the users of the big three social media platforms, but leaves the rest of us in the dark. iNat may be underestimating exactly how many people are not being reached by only posting on Instagram, Twitter, and Facebook.

As for iNat increasing the visibility of Observation of the Day on their site, I would like that, too! But I think a key issue is that the more posts you give high visibility on the site, the more likely it is that users will miss the really important ones, as they might be flooded out by all of that additional content. Maybe some sort of sub-channel for that could work to provide the additional content when you visit the journal page itself, but have the website sidebar only include the main blog posts and not the other stuff. Just a thought.


Yeah, this. But note the last journal post date in 2021. Having the Discord bot post observations from this project is not a big deal - we could do that, and then users could interact by clicking the link, adding the observation to their faves, and leaving a comment. But sadly, as I indicated earlier, we would be missing out on the nice comments from staff about each observation.

The observation of the week journal posts have moved to the main iNat blog


Have you considered using the Fediverse? That is a collection of open and decentralized alternatives to commercial plattforms. There are for example Mastodon that works like Twitter and Pixelfed that is like Instagram.


Ah, right you are - I was aware the Week posts were carried there, but had somehow conflated that with the Day posts which I thought went to the journal before. But yes, I see it was only the Week posts that went to the journal before.


That would be entirely up to iNat. As I alluded to in my original post I’m aware Mastodon has been discussed before on the forums. While there is a lot of interest from individuals there, it was pointed out in that thread that it comes down to it taking time to do for iNat to have a presence there. So I’m not really pressing for a solution in that direction.


Have you tried surveying your Twitter readers to see where else they are on social media. When you move away from the ‘first social media’ the options explode and readers scatter to their new, preferred choice. I still use my preferred slice of FB (which includes obs of the day), but slid from Google Plus died to iNat eats even MORE time.


doesn’t it just use the free web API as a backup route if you haven’t self-hosted with a Developer key? in other words, isn’t this going to have the same problems as you accessing Twitter directly?