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
- You add a feed address. A site address works too when its page links a feed.
- 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.
- After that Octopost checks the feed every 30 minutes (you can pick 15 minutes to 1 day). Each new item becomes a post.
- 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:
| Mode | What 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. |
queue | It joins your post queue and goes out in your next queue slot. |
Templates
The post text comes from a template. Use these placeholders:
| Placeholder | What 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
queuemode. - 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
}'| Field | Required | Description |
|---|---|---|
url | yes | Feed address (or a site address that links its feed) |
platforms | yes | Networks to post to: twitter, bluesky, threads, linkedin, mastodon |
template | no | Post text with {title}, {url}, {excerpt}. Default {title} {url} |
mode | no | hold (default) or queue |
name | no | A name for the feed. Default: the feed's own title |
checkEveryMinutes | no | 15 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 optionallytemplate,mode,name,check_every_minutes - remove_feed:
feed_id