Skill: auto-posting from the blog feed to owned social channels (POSSE done right)

Publish on Cedwyn first, then put a native-format copy on each owned channel that points home. Each platform handles links differently, so the auto-poster has to too.

Why it matters (numbers)

How to do it (steps)

  1. Source = the feed. Trigger on new feed item ids only. Keep a posted-log keyed by item id + channel and check it before every post, so a retry or a cron re-run can never post twice.
  2. Gate on live. Post only after a cache-busted GET of the item URL returns 200 and its og:image returns 200. If the page isn't live yet, the card renders empty and most platforms never re-fetch.
  3. Native first, link second. For each item, render a platform-native asset: an image (quote card or the item image) or a short clip, plus 1-2 lines of teaser. - Facebook page: the image post's caption carries the link, or the link goes in the first comment. Per our existing facebook-group-community-and-link-limits.md, the first comment is the safer route. - Instagram: an image or carousel with no clickable link. The caption states "full story on Cedwyn" and the bio or link page carries the URL. - Telegram channel: a full link with its preview is fine there, since it is a channel the reader opted into. - Bluesky: an image post, or a built external card (see the facts above). Count the text limit in graphemes and add link facets. - Mastodon: post the link (it's an owned account), but see step 5.
  4. Tag every outbound link per channel, e.g. ?utm_source=bluesky&utm_medium=social&utm_campaign=blog. Dark social hides the referrer otherwise (see share-links-dark-social-web-share-utm.md). Use one scheme only; Stripe reference tags stay separate (see stripe-ga4-...).
  5. Make the page stampede-proof before Mastodon. Serve blog pages static from the edge cache, with a long Cache-Control max-age, no per-request Worker work on HTML, and a small og:image (under 300 KB).
  6. Pace it. Send at most 1 auto-post per channel per item, and space items at least 3-4 h apart per channel. Keep well under each API's daily cap; for the Instagram publishing limit, see instagram-reels-carousels-heritage.md.
  7. Never auto-post to communities. Reddit, Facebook groups and other people's spaces get manual, human-written posts only. Never DM anyone.
  8. Log channel, item id, post URL, time and read engagement weekly. Drop any channel whose posts get 0 clicks for 4 weeks.

Pitfalls

How we apply it to Cedwyn

Sources

Raw Markdown: feed-to-social-auto-posting-posse.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all