Docs
Docs/Getting Started/RSS Feeds

RSS Feeds

Turn a blog, newsletter or changelog into posts. Add its RSS or Atom feed, pick the networks and a template, and every new item becomes a post. Octopost reads the feed for you: you never have to post new articles by hand.

You can manage feeds on the Feeds page, over the REST API, or from an AI agent with the MCP tools list_feeds, add_feed and remove_feed.

How it works

  1. You add a feed address. A site address works too when its page links a feed.
  2. Octopost reads it right away and posts only the latest item. Older items are remembered as seen, so adding a feed never floods your accounts.
  3. After that Octopost checks the feed every 30 minutes (you can pick 15 minutes to 1 day). Each new item becomes a post.
  4. An item is posted once. Octopost remembers every item it has seen, even if the feed edits it later.

Wait for approval, or queue

Each feed has a mode:

ModeWhat happens to a new item
hold (default)It waits for your approval. You get an email with Approve, Reject and Edit links, and it shows on the Posts page. See Approvals.
queueIt joins your post queue and goes out in your next queue slot.

Templates

The post text comes from a template. Use these placeholders:

PlaceholderWhat it becomes
{title}The item's title
{url}The item's link
{excerpt}A plain-text summary of the item (no HTML)

The default is {title} {url}. Another common one:

New on the blog: {title} {excerpt} {url}

If a post would be too long for one of its networks, Octopost shortens the excerpt first, then the title. The link is always kept whole.

Limits and guardrails

  • A feed makes at most 10 posts a day. Items over the limit are posted on a later check.
  • If a check finds more than 5 new items at once (for example, a feed that changed all its item ids), only the newest is posted.
  • The same text to the same network within 7 days is skipped.
  • A post with one of your blocked terms waits for approval even in queue mode.
  • Up to 25 feeds per account.
  • When a feed can't be read, Octopost waits longer between tries (up to a day). After 20 failed checks in a row the feed is paused; turn it back on from the Feeds page.

REST API

All endpoints need your API key (Authorization: Bearer op_...).

List feeds

curl https://octopost.ink/api/feeds -H "Authorization: Bearer op_..."

Add a feed

curl -X POST https://octopost.ink/api/feeds \
  -H "Authorization: Bearer op_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://yourblog.com/feed",
    "platforms": ["twitter", "bluesky"],
    "template": "{title} {url}",
    "mode": "hold",
    "checkEveryMinutes": 30
  }'
FieldRequiredDescription
urlyesFeed address (or a site address that links its feed)
platformsyesNetworks to post to: twitter, bluesky, threads, linkedin, mastodon
templatenoPost text with {title}, {url}, {excerpt}. Default {title} {url}
modenohold (default) or queue
namenoA name for the feed. Default: the feed's own title
checkEveryMinutesno15 to 1440. Default 30

The response (201) has the feed and the result of the first check: the post made from the latest item (posts) and anything skipped (skipped, with a reason).

Change, check or remove a feed

# Change mode, template, networks, interval, or pause it
curl -X PATCH https://octopost.ink/api/feeds/FEED_ID \
  -H "Authorization: Bearer op_..." -H "Content-Type: application/json" \
  -d '{"mode": "queue", "active": true}'

# Check it now (once a minute at most)
curl -X POST https://octopost.ink/api/feeds/FEED_ID/check -H "Authorization: Bearer op_..."

# See it with its 20 most recent items
curl https://octopost.ink/api/feeds/FEED_ID -H "Authorization: Bearer op_..."

# Remove it (posts it already made are kept)
curl -X DELETE https://octopost.ink/api/feeds/FEED_ID -H "Authorization: Bearer op_..."

MCP tools

  • list_feeds: your feeds with their networks, template, mode and last check
  • add_feed: url, platforms, and optionally template, mode, name, check_every_minutes
  • remove_feed: feed_id