Content syndication
Take one piece of already-published content and produce platform-native
variations for up to twelve channels. Each variation carries a contextual
backlink to the original — and a canonical URL on platforms that support one —
so the syndication compounds into SEO lift rather than competing with the source
for rankings.
Why backlinks are the point
Syndication only pays off if the variations point back. The user is doing this
to earn:
- Brand-search lift and direct-traffic signals
- Parasite rankings on third-party domains (Medium, Dev.to, etc.)
- LLM citations from those parasites occupying top SERP slots
- Indexing help from new inbound links to the original
Never generate a variation without its backlink. Never strip UTM parameters the
user already attached to the source URL.
Workflow
- Ask for the source if the user hasn't provided one — a URL or a local
path to the published post.
- Load the source. URL → WebFetch. Local path → Read.
- Extract the skeleton (see "Extracting the skeleton" below).
- Show the skeleton back to the user in 5–8 lines so they can confirm it's
accurate before you generate twelve variations off a bad base.
- Ask which platforms to cover. Default offer: all twelve, grouped by
syndication bucket so the user can pick by intent.
- For each chosen platform, Read its template file at
skills/content-syndication/platforms/<platform>.md. Only load the ones the
user picked — the per-platform files exist so the agent doesn't carry
templates it isn't using.
- Generate each variation following its template, baking in the appropriate
backlink or canonical.
- Write each variation to
./syndicated/<slug>/<platform>.md. Create the
directory if needed. If it already exists, see the edge case below.
- Print a summary listing every file written, the hook preview of each, and
which still need manual steps from the user (subreddit choice, Hacker News
submission, Medium import vs paste).
Reading the source content
URL — use WebFetch with a prompt like "Extract the title, main body content,
author name, publication date, hero image URL, and any embedded images and
outbound links." If the response is a login wall, paywall, or near-empty page,
see edge cases.
Local path — use Read. Markdown, HTML, or plain text all work. If it's HTML,
strip the chrome (nav, sidebar, footer) and focus on the article body.
Extracting the skeleton
Before any platform-specific work, pull these fields out of the source:
title — the original post title
slug — kebab-case version of the title, used as the output directory name.
If the source URL already has a slug in its path, prefer that one.
hook — the single most attention-grabbing line in the source, usually the
opening sentence or the central contrarian claim
key_claims — 3–7 bullet-sized takeaways, in the author's own words where
possible
body — the full prose, retained for the republish bucket
cta — what the source asks the reader to do (sign up, download, reply, buy)
images — URLs of any images in the source, especially the hero
outbound_links — any URLs the source links to, preserved for the republish
bucket
author and brand — for attribution. If the brand name isn't obvious from
the source URL's domain, ask before writing backlink anchor text.
source_url — the canonical URL the variations will link back to, preserving
any UTM parameters the user supplied
Show this back to the user as a compact bulleted block and ask them to confirm
or correct before proceeding.
Asking which platforms
Default to offering all twelve, grouped by bucket so the user understands the
syndication strategy behind each choice. Use a multi-select prompt:
Republish (full article, canonical URL): medium, devto, hashnode
Native thread (hook-first, backlink in final post): twitter, bluesky,
threads
Teaser → read-more (hook + takeaways + click-through): linkedin, facebook,
substack, instagram
Discussion submission (title + URL or short self-post): reddit, hackernews
If the source URL is itself native to a platform — e.g. the source is a
twitter.com or x.com URL — skip that platform automatically and tell the user
why. Same for a linkedin.com source URL.
Output layout
./syndicated/<slug>/
medium.md
devto.md
hashnode.md
twitter.md
bluesky.md
threads.md
linkedin.md
facebook.md
substack.md
instagram.md
reddit.md
hackernews.md
<slug> comes from the skeleton. If ./syndicated/<slug>/ already exists, list
the files inside it and ask the user whether to overwrite, suffix with a date
(e.g. <slug>-2026-05-19/), or abort.
Loading platform templates
After the user picks platforms, Read each chosen template from
skills/content-syndication/platforms/<platform>.md. These files contain the
per-platform length limits, hook conventions, format scaffolds, hashtag rules,
and backlink placement. They are intentionally separate so the agent only loads
what it's generating.
Do not invent platform rules from training data. If a template file doesn't
cover a question, ask the user; don't guess.
Voice and content guardrails (apply to every variation)
- Preserve the author's voice and claims. Adapt structure, not substance.
Don't invent statistics, case studies, or quotes that aren't in the source.
- No engagement bait the source didn't include ("comment YES for the
playbook", "drop a 🔥 if you agree"). If the source had it, keep it; if not,
don't manufacture it.
- No AI-cliché openers. Skip "In today's fast-paced world…", "Let's dive
in…", "Buckle up…", "Here's the thing…".
- Match the source's emoji use. If the source has none, the variation has
none.
- Hashtag discipline is per-platform — see each template file.
- Preserve technical accuracy. Don't round numbers, soften qualifiers, or
merge claims the source kept separate.
Edge cases
- Paywall, login wall, or empty WebFetch result — tell the user, ask them to
paste the content directly, and continue from the skeleton extraction step.
- Source has no clear hook — surface this; ask the user for one sentence to
lead with. Don't invent one.
- Brand or site name not derivable from the URL — ask before writing the
backlink anchor text on platforms where anchor text is visible (LinkedIn,
Facebook, Reddit, Medium intro line).
- Source is itself native to a platform (twitter.com, x.com, linkedin.com,
medium.com, substack URL, etc.) — skip that platform and tell the user why.
./syndicated/<slug>/ already exists — show the user what's in it, ask
whether to overwrite, date-suffix, or abort.
- Source contains unsourced statistics — preserve them as-is. Don't add
[source needed] annotations.
- Source URL has UTM parameters — keep them. They're how the user tracks
syndicated traffic.
What to return to the user
After writing, print a summary block listing each file with the opening hook of
its variation:
Wrote N variations to ./syndicated/<slug>/:
medium.md — "Originally published at <site>. <opening line>…"
devto.md — "Originally published at <site>. <opening line>…"
...
twitter.md — "<hook tweet, first 80 chars>…"
linkedin.md — "<hook line, first 80 chars>…"
reddit.md — "<suggested title>"
hackernews.md — "<title> → <source_url>"
Backlinks: all N point to <source_url>.
Canonicals: medium.md, devto.md, hashnode.md have canonical URLs set.
Manual steps still needed:
- reddit.md: pick a subreddit (suggestions in the file)
- hackernews.md: submit the URL at news.ycombinator.com/submit
- medium.md: paste into Medium's editor or use their import-by-URL flow
Don't omit the manual-steps section — these are the platforms where the user
still has work to do.
1---2name: content-syndication3description: Take a piece of content already published on the user's own site and produce platform-native variations for syndication to Medium, X/Twitter, LinkedIn, Reddit, Hacker News, Dev.to, Hashnode, Bluesky, Threads, Substack, Facebook, and Instagram. Every variation includes a backlink to the original (and a canonical URL where supported) to capture the SEO benefits of syndication — brand search lift, parasite rankings, LLM citations, and indexing. Use this skill whenever the user wants to "syndicate", "repurpose", "cross-post", "distribute", or "make X versions of" an existing post or article. Triggers on phrases like "syndicate this post", "turn this into a Twitter thread", "make a LinkedIn version", "cross-post to Medium", "repurpose this content".4---56# Content syndication78Take one piece of already-published content and produce platform-native9variations for up to twelve channels. Each variation carries a contextual10backlink to the original — and a canonical URL on platforms that support one —11so the syndication compounds into SEO lift rather than competing with the source12for rankings.1314## Why backlinks are the point1516Syndication only pays off if the variations point back. The user is doing this17to earn:1819- Brand-search lift and direct-traffic signals20- Parasite rankings on third-party domains (Medium, Dev.to, etc.)21- LLM citations from those parasites occupying top SERP slots22- Indexing help from new inbound links to the original2324Never generate a variation without its backlink. Never strip UTM parameters the25user already attached to the source URL.2627## Workflow28291. **Ask for the source** if the user hasn't provided one — a URL or a local30 path to the published post.312. **Load the source.** URL → WebFetch. Local path → Read.323. **Extract the skeleton** (see "Extracting the skeleton" below).334. **Show the skeleton back** to the user in 5–8 lines so they can confirm it's34 accurate before you generate twelve variations off a bad base.355. **Ask which platforms** to cover. Default offer: all twelve, grouped by36 syndication bucket so the user can pick by intent.376. **For each chosen platform, Read its template file** at38 `skills/content-syndication/platforms/<platform>.md`. Only load the ones the39 user picked — the per-platform files exist so the agent doesn't carry40 templates it isn't using.417. **Generate each variation** following its template, baking in the appropriate42 backlink or canonical.438. **Write each variation** to `./syndicated/<slug>/<platform>.md`. Create the44 directory if needed. If it already exists, see the edge case below.459. **Print a summary** listing every file written, the hook preview of each, and46 which still need manual steps from the user (subreddit choice, Hacker News47 submission, Medium import vs paste).4849## Reading the source content5051**URL** — use WebFetch with a prompt like "Extract the title, main body content,52author name, publication date, hero image URL, and any embedded images and53outbound links." If the response is a login wall, paywall, or near-empty page,54see edge cases.5556**Local path** — use Read. Markdown, HTML, or plain text all work. If it's HTML,57strip the chrome (nav, sidebar, footer) and focus on the article body.5859## Extracting the skeleton6061Before any platform-specific work, pull these fields out of the source:6263- `title` — the original post title64- `slug` — kebab-case version of the title, used as the output directory name.65 If the source URL already has a slug in its path, prefer that one.66- `hook` — the single most attention-grabbing line in the source, usually the67 opening sentence or the central contrarian claim68- `key_claims` — 3–7 bullet-sized takeaways, in the author's own words where69 possible70- `body` — the full prose, retained for the republish bucket71- `cta` — what the source asks the reader to do (sign up, download, reply, buy)72- `images` — URLs of any images in the source, especially the hero73- `outbound_links` — any URLs the source links to, preserved for the republish74 bucket75- `author` and `brand` — for attribution. If the brand name isn't obvious from76 the source URL's domain, ask before writing backlink anchor text.77- `source_url` — the canonical URL the variations will link back to, preserving78 any UTM parameters the user supplied7980Show this back to the user as a compact bulleted block and ask them to confirm81or correct before proceeding.8283## Asking which platforms8485Default to offering all twelve, grouped by bucket so the user understands the86syndication strategy behind each choice. Use a multi-select prompt:8788**Republish (full article, canonical URL):** medium, devto, hashnode8990**Native thread (hook-first, backlink in final post):** twitter, bluesky,91threads9293**Teaser → read-more (hook + takeaways + click-through):** linkedin, facebook,94substack, instagram9596**Discussion submission (title + URL or short self-post):** reddit, hackernews9798If the source URL is itself native to a platform — e.g. the source is a99twitter.com or x.com URL — skip that platform automatically and tell the user100why. Same for a linkedin.com source URL.101102## Output layout103104```105./syndicated/<slug>/106 medium.md107 devto.md108 hashnode.md109 twitter.md110 bluesky.md111 threads.md112 linkedin.md113 facebook.md114 substack.md115 instagram.md116 reddit.md117 hackernews.md118```119120`<slug>` comes from the skeleton. If `./syndicated/<slug>/` already exists, list121the files inside it and ask the user whether to overwrite, suffix with a date122(e.g. `<slug>-2026-05-19/`), or abort.123124## Loading platform templates125126After the user picks platforms, Read each chosen template from127`skills/content-syndication/platforms/<platform>.md`. These files contain the128per-platform length limits, hook conventions, format scaffolds, hashtag rules,129and backlink placement. They are intentionally separate so the agent only loads130what it's generating.131132Do not invent platform rules from training data. If a template file doesn't133cover a question, ask the user; don't guess.134135## Voice and content guardrails (apply to every variation)136137- **Preserve the author's voice and claims.** Adapt structure, not substance.138 Don't invent statistics, case studies, or quotes that aren't in the source.139- **No engagement bait** the source didn't include ("comment YES for the140 playbook", "drop a 🔥 if you agree"). If the source had it, keep it; if not,141 don't manufacture it.142- **No AI-cliché openers.** Skip "In today's fast-paced world…", "Let's dive143 in…", "Buckle up…", "Here's the thing…".144- **Match the source's emoji use.** If the source has none, the variation has145 none.146- **Hashtag discipline** is per-platform — see each template file.147- **Preserve technical accuracy.** Don't round numbers, soften qualifiers, or148 merge claims the source kept separate.149150## Edge cases151152- **Paywall, login wall, or empty WebFetch result** — tell the user, ask them to153 paste the content directly, and continue from the skeleton extraction step.154- **Source has no clear hook** — surface this; ask the user for one sentence to155 lead with. Don't invent one.156- **Brand or site name not derivable from the URL** — ask before writing the157 backlink anchor text on platforms where anchor text is visible (LinkedIn,158 Facebook, Reddit, Medium intro line).159- **Source is itself native to a platform** (twitter.com, x.com, linkedin.com,160 medium.com, substack URL, etc.) — skip that platform and tell the user why.161- **`./syndicated/<slug>/` already exists** — show the user what's in it, ask162 whether to overwrite, date-suffix, or abort.163- **Source contains unsourced statistics** — preserve them as-is. Don't add164 `[source needed]` annotations.165- **Source URL has UTM parameters** — keep them. They're how the user tracks166 syndicated traffic.167168## What to return to the user169170After writing, print a summary block listing each file with the opening hook of171its variation:172173```174Wrote N variations to ./syndicated/<slug>/:175176 medium.md — "Originally published at <site>. <opening line>…"177 devto.md — "Originally published at <site>. <opening line>…"178 ...179 twitter.md — "<hook tweet, first 80 chars>…"180 linkedin.md — "<hook line, first 80 chars>…"181 reddit.md — "<suggested title>"182 hackernews.md — "<title> → <source_url>"183184Backlinks: all N point to <source_url>.185Canonicals: medium.md, devto.md, hashnode.md have canonical URLs set.186187Manual steps still needed:188 - reddit.md: pick a subreddit (suggestions in the file)189 - hackernews.md: submit the URL at news.ycombinator.com/submit190 - medium.md: paste into Medium's editor or use their import-by-URL flow191```192193Don't omit the manual-steps section — these are the platforms where the user194still has work to do.