# Content Repurposer

> Take one piece of long-form content (blog post, podcast, talk, article, newsletter) and turn it into a multi-channel asset pack using the STEPPS framework (Jonah Berger, Contagious) to make each derivative asset more shareable. Use when the user says "repurpose this", "turn this into LinkedIn/Twitter/etc", "atomize this", "break this down for social", "create derivative content from X", "make a content pack from this", or wants to maximize output from one input. Each channel is mapped to its strongest STEPPS element. Orchestrates linkedin-post, content-writer, and other skills. For writing the original anchor piece, see thought-leadership-writer or newsletter-writer. For scheduling the derivatives, see social-calendar.

- Skill: `qa-aman/content-repurposer` (Agent Skill)
- Install (CLI): `npx skillmds@latest add qa-aman/content-repurposer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qa-aman/content-repurposer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: qa-aman (https://skillmd.com/u/qa-aman)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/qa-aman/content-repurposer

---


# content-repurposer

Orchestrator skill. One source piece becomes a coordinated asset pack across channels. Each output is fully native to its channel and optimized for shareability using STEPPS. Not a copy-paste with different word counts.

## When to use

- "Repurpose this blog post"
- "Turn this article into LinkedIn / Twitter / email"
- "Atomize my podcast episode"
- "Make a content pack from this newsletter"
- "Break this talk into social posts"

## Inputs needed

- **Source**: file path, URL, or pasted text
- **Source type**: blog, podcast transcript, conference talk, newsletter, video script, internal doc
- **Channels to produce for**: pick from list (default: all)
- **Author voice**: founder, CMO, company (default: company)

## Channels this skill produces

| Output | Format | Length | Primary STEPPS element | Skill it calls |
|---|---|---|---|---|
| LinkedIn post | text | 80-220 words | Social Currency | linkedin-post |
| LinkedIn carousel outline | slide-by-slide | 6-10 slides | Practical Value + Social Currency | inline |
| Twitter/X thread | numbered tweets | 7-12 tweets | Practical Value | inline |
| Substack note | text | 3-5 sentences | Stories + Emotion | inline |
| Email teaser | subject + body | 80-150 words | Triggers + Emotion | content-writer |
| Reddit version (relevant subs) | text + subreddit suggestions | 200-400 words | Practical Value | inline |
| Quote graphic suggestions | pull quotes | 3-5 quotes | Emotion + Social Currency | inline |
| YouTube short script | spoken | 45-60 seconds | Stories + Emotion | inline |
| SEO snippet variant | optimized intro | 150 words | Practical Value | inline |

## Framework: STEPPS (Jonah Berger, *Contagious: Why Things Catch On*)

Berger's argument in *Contagious* is that virality is a property of the **content**, not of the person sharing it. Six characteristics predict whether something gets passed on, and they are designable. That is why this skill scores the source before atomising it: if the source has none of the six, nine derivative assets inherit nothing, and you have produced nine posts that will not travel.

The trap *Contagious* is most often misread into: treating Emotion as "make it emotional". Berger's finding is narrower and more useful. **High-arousal** emotions drive sharing (awe, anger, anxiety, excitement, amusement). **Low-arousal** emotions suppress it (contentment, sadness), even when they are strongly felt. A warm, satisfying, gently positive post is a low-arousal post, and it will not move.

Six reasons things spread. Run this on the source piece before producing any assets.

| Element | What it means | Question to ask |
|---|---|---|
| **S - Social Currency** | Does sharing this make me look good, smart, or in-the-know? | Would someone share this to show off? |
| **T - Triggers** | What everyday cue will remind people of this idea? | What common situation or object does this connect to? |
| **E - Emotion** | High-arousal emotions drive sharing: awe, excitement, anxiety, anger. Low-arousal (contentment, sadness) do not. | Does this make someone feel something intensely? |
| **P - Public** | Can people see others engaging with this? Visibility drives imitation. | Is there a social proof layer? |
| **P - Practical Value** | Useful = shareable. "News you can use." | Can someone apply this today? |
| **S - Stories** | Information travels inside a narrative. The story is the Trojan horse. | Is there a narrative with tension and resolution? |

A score of 4+ out of 6 indicates high virality potential. Below 3, flag it.

### What to do with the score

The score is a routing decision, not a grade. Act on it:

| Total /18 | Verdict | Action |
|---|---|---|
| 14-18 | Strong source | Produce the full pack. Lead with the two highest-scoring elements |
| 10-13 | Workable | Produce the pack, but drop the channels whose target element scored 1. A Twitter thread built on a Practical Value score of 1 is filler |
| 7-9 | Weak | **Stop and say so.** Name the two weakest elements and what would fix them. Offer to produce a reduced pack of three assets rather than nine |
| Below 7 | Not repurposable | **Stop.** The source has no spine to atomise. Nine assets from it produce nine weak posts and burn the channel's attention. Recommend rewriting the source first, or repurposing a different piece |

**Never raise a low score by adding material the source does not contain.** That is the failure mode this table exists to prevent: an agent that finds Emotion scoring 1, invents a dramatic anecdote, and ships a story the author never told under the author's name.

**Which element to fix first when the score is low**, in priority order: Practical Value, then Stories, then Social Currency. Practical Value is the only one that can usually be added honestly, by making the existing advice more specific. Emotion and Public are the hardest to add without inventing, so treat a low score on those as a fact about the source rather than a task.

## Process

0. **Load context.** Read `knowledge/brand/voice.md` and the relevant persona from `knowledge/icp/personas.md` before touching the source. Nine assets in the wrong voice is nine rewrites. If `knowledge/brand/voice.md` is missing, stop: "I need voice context. Run `/brand-context` first." Also check `knowledge/content-library/` for whether this source has already been repurposed, so the pack does not duplicate live posts.

1. **Load source.** If it's a file, read it. If it's a URL, use WebFetch. If pasted, use the chat content. Confirm with the user: "I read X. Source has N words and covers <main themes>. Proceed?"

   Stop conditions on the source itself:
   - **Not the user's to republish.** A third-party article, a client's content, or a talk recorded at someone else's event. Confirm the right to reuse before producing anything
   - **Contains customer names or figures whose consent covered only the original placement.** Consent for a blog post is not consent for a paid carousel. Flag each one and ask
   - **A transcript with speakers other than the author.** Their words are quotes, not raw material. Attribute or cut

2. **Run STEPPS scoring on the source piece.** Score each element 1-3 (1 = weak, 2 = present, 3 = strong). Show the table to the user before producing assets.

   ```
   STEPPS Score - <source title>

   | Element | Score (1-3) | Evidence from source | Notes |
   |---|---|---|---|
   | Social Currency | ? | <quote or example> | Does this make the sharer look good? |
   | Triggers | ? | <quote or example> | What everyday cue connects to this? |
   | Emotion | ? | <quote or example> | Awe, anxiety, excitement, anger? |
   | Public | ? | <quote or example> | Visibility layer present? |
   | Practical Value | ? | <quote or example> | Actionable, specific, saves time? |
   | Stories | ? | <quote or example> | Narrative with tension + resolution? |

   Total: ?/18
   Top 2 elements: <element>, <element>
   Weakest element: <element>
   ```

   If the total is below 9/18, flag: "This piece scores low on shareable elements. Here is what would help: [specific suggestions per weak element]." Offer to strengthen before repurposing.

3. **Extract the spine.** Identify:
   - **The one sentence** (the thesis or core insight)
   - **3-5 supporting points** (the substructure)
   - **The killer line** (the most quotable sentence)
   - **The data points** (numbers, examples)
   - **The contrarian angle** (what the source disagrees with)
   - **The narrative thread** (the story inside the content, if any)

   Show this to the user before producing assets. Get confirmation.

4. **Map each asset to its STEPPS element.** Before writing, confirm the STEPPS target for each channel:

   ```
   Asset STEPPS Map

   LinkedIn post        → Social Currency (makes sharer look insightful)
   LinkedIn carousel    → Practical Value + Social Currency (actionable + impressive)
   Twitter/X thread     → Practical Value (specific, step-by-step, saves time)
   Substack note        → Stories + Emotion (narrative hook, emotional pull)
   Email teaser         → Triggers + Emotion (tap a recurring cue + emotional spike)
   Reddit post          → Practical Value (genuine help, no promo feel)
   Quote graphics       → Emotion + Social Currency (striking + shareable identity signal)
   YouTube short        → Stories + Emotion (narrative, visual, emotional arc)
   SEO snippet          → Practical Value (answers question directly, useful)
   ```

5. **Produce each channel asset.** For each one, include a one-line STEPPS note at the top of the file:

   ```
   <!-- STEPPS target: Social Currency - this post is designed to make the sharer
   look ahead of the curve on [topic]. The hook uses [specific element] to signal
   insider knowledge. -->
   ```

   Each asset must be:
   - **Native to the channel** (not a copy-paste with different word count)
   - **Stand-alone valuable** (works without the source)
   - **Optimized for its primary STEPPS element** (named explicitly)
   - **Linked back to the source** if appropriate (CTA at the end)

6. **Save** all outputs as separate files in `output/repurposed/<DD-MM-YYYY>-<source-slug>/`:
   ```
   output/repurposed/25-04-2026-thoughts-on-ai-pm/
   ├── linkedin-post.md
   ├── linkedin-carousel.md
   ├── twitter-thread.md
   ├── substack-note.md
   ├── email-teaser.md
   ├── reddit-post.md
   ├── quote-graphics.md
   ├── youtube-short.md
   └── README.md
   ```

7. **Generate the README.md** for the folder summarizing:
   - Source link or path
   - STEPPS score table
   - Spine (one sentence + 3 points)
   - Which STEPPS element each asset targets
   - Whether the pack covers at least 4 of 6 STEPPS elements
   - Where each asset is meant to be published
   - Suggested publishing sequence and cadence

8. **Self-check.** Every item is checkable against the saved files. Name the file and line, or the item fails.

   - Each asset file opens with its `STEPPS target:` comment, and the named element scored 2 or 3 on the source. An asset targeting an element that scored 1 is unsupported by the source
   - The asset pack covers at least 4 of 6 STEPPS elements. Show the coverage table
   - Every number, name, quote, date and claim in every derivative appears verbatim or in equivalent form in the source. Grep each derivative's numbers against the source text and list the matches
   - No derivative contains a quote attributed to the author that is not in the source. If the source has no quotable line, the quote-graphics file says so and is empty
   - No two derivatives share their opening sentence, and no derivative is the source's paragraph with words swapped. Compare the first 15 words of each
   - Every derivative stands alone: read each one with the source closed and confirm it makes sense
   - Every asset is inside its stated length, with the count written in the file
   - Every claim about a platform spec in the pack is labelled `[UNVERIFIED default]` or sourced to the platform's current docs
   - Voice matches `knowledge/brand/voice.md`. Name two specific voice traits and where each appears

9. **STEPPS coverage check.** The asset pack as a whole must cover at least 4 of 6 STEPPS elements. If it doesn't, name which are missing and suggest one asset type that would fill the gap.

   ```
   STEPPS Coverage Check

   Social Currency  - covered by LinkedIn post
   Triggers         - covered by email teaser
   Emotion          - covered by quote graphics, YouTube short
   Public           - NOT COVERED (suggest: add a screenshot-friendly stat for the carousel)
   Practical Value  - covered by Twitter thread, carousel, Reddit post
   Stories          - covered by Substack note, YouTube short

   Coverage: 5/6 - PASS
   ```

## Channel-specific rules

### LinkedIn post (Social Currency)
- Open with an insight, not an announcement. Sharers want to look smart.
- The hook should be a claim someone would disagree with at first, then agree with after reading.
- End with a takeaway the reader can quote in their next meeting.

### LinkedIn carousel (Practical Value + Social Currency)
- Slide 1: hook (8-12 words, big text)
- Slide 2: setup (the problem or context)
- Slides 3-7: one point per slide
- Last slide: CTA + tag line
- Output: structured outline ready for design ("Slide 3: Title 'X', body bullets, visual: graph showing Y")

### Twitter/X thread (Practical Value)
- Tweet 1: hook only, no thread emoji
- Tweets 2-N: one actionable idea per tweet, max 280 chars each
- No "1/", use natural numbering only if it adds clarity
- Last tweet: payoff and CTA (link, follow, save)
- Practical Value = specific, actionable, saves time. Not opinion. Not commentary.

### Substack note (Stories + Emotion)
- 3-5 sentences max
- Lead with a moment, not a point. Start mid-scene.
- One contrarian or counterintuitive claim
- The emotional payoff should land in the last sentence
- Link to full piece at the end

### Email teaser (Triggers + Emotion)
- Subject line should connect to a recurring situation the reader faces (the trigger)
- Body opens with the emotional spike, not the content summary
- CTA is one click, zero friction

### Reddit (Practical Value)
- Suggest 2-3 specific subreddits
- Adapt voice: less promotional, more conversational
- Lead with value, not the link
- Include "(I wrote about this in more depth here)" only at the end
- Flag any community rules to check (no self-promo, etc.)

### YouTube short (Stories + Emotion)
- 45-60 seconds spoken (~120-150 words)
- Hook in 3 seconds - start with tension, not context
- One insight, one example, one takeaway
- Emotional arc: problem felt, resolution shown
- Visual cue suggestions in [brackets]

### Quote graphics (Emotion + Social Currency)
- 3-5 pull quotes
- Each under 140 chars
- Each works without context
- High-arousal only: awe, anxiety, excitement. Cut contentment quotes.
- Specify which is best for which platform (LinkedIn carousel cover vs Instagram quote vs Twitter image)

## Rules

- Never paraphrase the source word for word. Each asset must add framing or context appropriate to its channel.
- Never produce identical content with different word counts. A 220-word LinkedIn post is structurally different from a 220-word Substack note.
- The source's killer line should appear in at least one derivative, often the LinkedIn post or a quote graphic.
- If the source has no killer line, **skip the quote graphics.** Never write a quote and
  attribute it to the source's author. A quote graphic ships with a name and often a face on it,
  so an authored line is a fabricated attribution, not a draft. Offering the user the choice does
  not fix it, because they say yes and the graphic ships.
- **Every number, claim and quote in a derivative must already appear in the source.** If a
  derivative needs a fact the source does not contain, cut the fact, not the sourcing rule.
- Each asset file must include its STEPPS target as a comment at the top.
- If the STEPPS score is below 9/18, address it with the user before producing 9 assets from weak source material.

## Quick Reference: STEPPS

| Element | Channel fit | What to amplify |
|---|---|---|
| Social Currency | LinkedIn post, quote graphics | Make the sharer look smart or ahead of the curve |
| Triggers | Email teaser, carousel | Connect to a cue the reader encounters regularly |
| Emotion (high-arousal only) | Quote graphics, YouTube short, Substack note | Awe, anxiety, excitement, anger - not contentment |
| Public | Carousel, thread | Add visible social proof or community signal |
| Practical Value | Thread, Reddit, carousel, SEO snippet | Specific, actionable, saves time |
| Stories | Substack note, YouTube short | Tension + resolution. Start mid-scene. |

## Platform figures are not facts

Any cadence, character count, best-day, format spec or benchmark in this skill is a starting
default recorded at authoring time, not a published platform rule. Two obligations:

1. **Verify current specs in the platform itself before shipping** anything that depends on them.
2. **This account's own historical data always wins.** Where `knowledge/learnings.md` or the
   team's analytics contradict a default here, follow the data and say so in the output.

Never present a default from this file to a client as though the platform published it. That is
the claim their in-house specialist corrects in the meeting, and the correction discredits
everything else in the document.

## Never invent

Repurposing has a specific fabrication risk that original writing does not: the derivative is published **as if it were the source**, so anything added travels with the author's name on it and the source's authority behind it.

- **Never invent a statistic, a customer name, a date, a result, or an example** to make a derivative land harder. If the source does not contain it, cut the beat, not the sourcing rule. Nine assets is nine chances to add one small thing that was never true.
- **Never invent a quote.** A quote graphic ships with a name and often a face. An authored line is a fabricated attribution regardless of how well it captures the source's meaning.
- **Never sharpen a hedge.** If the source says "roughly a third" or "we think", the derivative says the same. Tightening a hedged claim into a hard number is the most common way a true source becomes a false post.
- **Never invent the source's opinion on something it does not discuss** to fill a channel that wants a contrarian take. Mark it `[NEEDS INPUT: does the author hold a view on <X>?]` and ask.
- If a channel cannot be produced honestly from this source, produce fewer assets. The pack size is not a target.

## What this skill cannot know

These are limitations of the skill. Anything below that reaches the output must be labelled `[UNVERIFIED]` there.

- **Current platform specs, character limits, image dimensions and format support.** Everything in this file is a starting default from authoring time.
- **Current community rules for a suggested subreddit or forum.** Self-promotion rules, flair requirements and posting frequency limits are set per community and change. Read the sidebar and recent moderator posts before posting, and treat any subreddit suggestion here as a candidate to verify, not a recommendation.
- **Whether the source's claims are still true.** A post repurposed a year later carries last year's numbers into this year's feed.
- **Whether the people, customers or partners named in the source consented to appear in these placements.** Consent is usually scoped to the original piece.
- **Whether the derivative duplicates something already published.** Check `knowledge/content-library/` and the live channels.

## Related skills

- `/brand-context` first, if `knowledge/brand/voice.md` does not exist yet
- `/linkedin-post` for the LinkedIn derivative, which this skill calls rather than duplicating
- `/social-calendar` for scheduling the pack, so nine assets do not all ship in one week
- `/thought-leadership-writer` or `/newsletter-writer` when the STEPPS score says the source itself needs strengthening before it is worth atomising
- `/seo-article-writer` when the source should become a search-targeted article rather than social derivatives
- `/case-study-writer` when the source is a customer story, because consent and approval rules apply that this skill does not enforce
- `/content-writer` for the email teaser and any one-off asset outside the standard pack
- `/copy-review` for a pass over the finished pack before it is scheduled
- `/retro` after the pack has run, to record which derivative actually travelled

