Content Repurposing Engine
Transform any content into platform-optimized outputs across 17+ channels.
Quick Reference
| Command |
Description |
/repurpose <url-or-file> |
Full repurpose pipeline (all platforms) |
/repurpose <input> --platforms twitter,linkedin |
Repurpose to specific platforms only |
/repurpose <input> --voice casual |
Override brand voice (casual/professional/witty) |
/repurpose <input> --brief |
Quick mode: 1 post per platform, no calendar |
/repurpose <input> --images |
Generate image prompts (or /banana images if available) |
/repurpose analyze <input> |
Atomize content only, no platform outputs |
/repurpose calendar <input> |
Generate 7-day publishing calendar only |
Step 1: Input Detection
Detect the input type and extract raw content accordingly.
Detection patterns (check in order):
| Pattern |
Type |
Extraction Method |
youtube\.com/watch|youtu\.be/|youtube\.com/shorts |
YouTube video |
Run scripts/extract_transcript.py <url> |
https?:// (any other URL) |
Blog/article |
Run scripts/extract_article.py <url> |
Path ending in .mp3, .wav, .m4a, .ogg, .flac |
Audio file |
Run scripts/transcribe_audio.py <path> |
Path ending in .md, .txt, .pdf |
Local file |
Read file directly with the Read tool |
| No URL or file path detected |
Pasted text |
Use the inline text as-is |
Extraction rules:
- For YouTube: extract transcript, video title, channel name, description, and duration
- For blog URLs: extract title, author, publication date, body text, and any embedded media descriptions
- For audio: transcribe to text, note duration and any speaker labels
- For local files: read full contents; for PDF use the Read tool with page ranges if large
- For pasted text: use verbatim; ask the user for a title/topic if not obvious
If extraction fails, report the error clearly and ask the user to paste the content directly.
Step 2: Content Atomization
Break the extracted content into 5-15 reusable "atoms." Each atom is a self-contained content unit.
Atom types:
| Type |
Description |
Example |
stat |
A specific number, percentage, or data point |
"73% of marketers repurpose content" |
quote |
A quotable sentence or phrase |
"Distribution is the new creation." |
insight |
A non-obvious takeaway or lesson |
"Repurposing beats fresh creation 3:1 on ROI" |
question |
A thought-provoking question from the content |
"What if you never had to write from scratch again?" |
contrarian |
A bold or counterintuitive claim |
"Posting less actually grows your audience faster" |
howto |
An actionable step or mini-tutorial |
"Step 1: Record a 10-min video. Step 2: Extract 8 clips." |
analogy |
A comparison that makes the concept click |
"Repurposing is composting: old material feeds new growth" |
casestudy |
A real example, result, or before/after |
"Gary Vee turns one keynote into 35M+ views across platforms" |
prediction |
A forward-looking claim or trend |
"By 2027, 90% of content will be AI-assisted remixes" |
tldr |
The single-sentence summary of the entire piece |
Always extract exactly one |
Atomization rules:
- Extract between 5 and 15 atoms (aim for 8-12 for most content)
- Always include at least one
tldr, one insight, and one quote or contrarian
- Label each atom with its type
- Rate each atom's standalone impact from 1-5 (5 = works perfectly as a standalone post)
- Identify the main argument, target audience, and primary topic
- Preserve the original author's voice in quoted atoms
- For longer content (>2000 words), aim for 12-15 atoms; for shorter, 5-8
Atomization output format:
## Content Atoms
**Main Argument:** [one sentence]
**Target Audience:** [who benefits from this content]
**Primary Topic:** [category/niche]
| # | Type | Atom | Impact |
|---|------|------|--------|
| 1 | tldr | ... | 5 |
| 2 | insight | ... | 4 |
| ... | ... | ... | ... |
Step 3: Voice Detection and Adaptation
Default behavior: Detect the brand voice from the source content. Analyze formality, humor level, directness, emotion, and jargon to infer the author's natural voice.
Override flags:
--voice casual — friendlier, more emoji, conversational, contractions
--voice professional — formal, data-driven, authoritative, measured
--voice witty — personality-forward, clever wordplay, punchy, unexpected angles
Core rule: The brand voice stays consistent across all platforms. Only the TONE adapts per platform. Load references/voice-adaptation.md for the full platform-tone matrix.
Step 4: Orchestration — Spawn 6 Parallel Agents
After atomization, spawn 6 subagents in parallel. Each agent receives:
- The full list of content atoms (with types and impact ratings)
- The main argument, target audience, and primary topic
- The detected or overridden brand voice
- The
--brief flag status (if true, produce 1 post per platform instead of full sets)
- The
--images flag status
Agent 1: repurpose-social
Platforms: Twitter/X, Threads, LinkedIn, Facebook
Receives: All atoms, voice profile, platform specs
Produces:
- Twitter: 1 standalone tweet + 1 thread (8-12 tweets) + 1 poll + image prompt
- Threads: 1 thread (5-10 posts) + 3-5 standalone posts + 1 image post concept
- LinkedIn: 1 text post + 1 carousel outline (8-10 slides) + 1 poll
- Facebook: 1 text post + 1 question post + 1 poll
Sub-skills invoked:
repurpose-twitter, repurpose-threads, repurpose-linkedin, repurpose-facebook
Agent 2: repurpose-visual
Platforms: Instagram, TikTok, Pinterest, Snapchat, Quote cards, Image prompts
Receives: All atoms (especially quotes, stats, insights), voice profile
Produces:
- Instagram: 1 carousel (7-10 slides with copy) + 1 reel script (30-60s) + caption + hashtags
- TikTok: 1 video script (15-60s) + 1 carousel (2-10 slides) + 1 stitch/duet concept
- Pinterest: 3-5 pin descriptions + 1 idea pin script (5-10 slides) + board suggestions
- Snapchat: 1 story script (3-5 frames) + 1 Spotlight script (60s) + AR lens concept
- Quote cards: 3-5 text overlays for image generation
- Image prompts: hero image + carousel cover + 3 quote card prompts
Sub-skills invoked:
repurpose-instagram, repurpose-tiktok, repurpose-pinterest, repurpose-snapchat, repurpose-quotes
Agent 3: repurpose-longform
Platforms: Newsletter, Email sequence, Reddit, Quora
Receives: All atoms, full original content reference, voice profile
Produces:
- Newsletter: subject line + preview text + 200-500 word body
- Email sequence: 3-email drip (day 0, day 2, day 4) with subject lines and CTAs
- Reddit: title + post body adapted to subreddit norms
- Quora: 1 answer (300-1000 words) + 1 Space post + question suggestions
Sub-skills invoked:
repurpose-newsletter, repurpose-reddit, repurpose-quora
Agent 4: repurpose-community
Platforms: YouTube Community, Skool, Discord
Receives: All atoms (especially questions, polls, insights), voice profile
Produces:
- YouTube Community: 1 text post + 1 poll (5 options) + 1 image post concept
- Skool: 1 discussion post + 1 challenge/action post + 1 poll
- Discord: 1 announcement post + 1 discussion thread prompt + 1 embed message
Sub-skills invoked:
repurpose-youtube, repurpose-skool, repurpose-discord
Agent 5: repurpose-seo
Platforms: Cross-platform SEO metadata
Receives: All atoms, main argument, target audience, topic
Produces:
- Primary keywords (3-5) and secondary keywords (5-10)
- Hashtag sets per platform
- SEO title and meta description (for blog/newsletter)
- Alt text suggestions for all generated images
- Schema markup suggestions (Article, VideoObject, FAQPage)
Sub-skills invoked:
repurpose-seo
Agent 6: repurpose-broadcast
Platforms: WhatsApp Channels, Telegram Channels, Medium
Receives: All atoms, full original content reference, voice profile
Produces:
- WhatsApp: 1 channel update (100-300 chars) + 1 poll + 1 content teaser
- Telegram: 1 channel post (500-1000 chars) + 1 deep dive (1000-2000 chars) + 1 poll
- Medium: 1 article (1500-3000 words) + title/subtitle + 5 tags + publication suggestions
Sub-skills invoked:
repurpose-whatsapp, repurpose-telegram, repurpose-medium
Platform filtering
If --platforms is specified, only spawn the agents that cover the requested platforms:
twitter, threads, linkedin, facebook → Agent 1
instagram, tiktok, pinterest, snapchat, quotes, images → Agent 2
newsletter, email, reddit, quora → Agent 3
youtube, skool, discord → Agent 4
seo → Agent 5
whatsapp, telegram, medium → Agent 6
If a single platform is requested, spawn only the relevant agent.
Step 5: Collect Outputs and Generate Summary
After all agents complete:
- Compile all outputs into the output directory structure (see below)
- Generate images — ALWAYS attempt image generation when /banana is available (do NOT wait for
--images flag). If /banana is unavailable, save prompts to quotes/banana-prompts.md for manual use later
- Generate a summary table showing what was produced per platform
- Generate a 7-day publishing calendar (unless
--brief was used)
- Generate HTML viewer — Run
python3 scripts/generate_html.py <output-dir> to create index.html (dark-themed viewer with Copy buttons per content piece) and all-content.md (single consolidated file with all platform outputs)
- Report to user — Show summary and link to
index.html for easy browsing and copying
Output Directory Structure
./repurposed/<YYYY-MM-DD_HHMMSS>/
summary.md # Overview of all outputs + publishing calendar
atoms.md # Content atomization results
twitter/
standalone-tweet.md
thread.md
poll.md
linkedin/
post.md
carousel.md
poll.md
instagram/
carousel.md
reel-script.md
caption.md
threads/
thread.md
standalone-posts.md
image-post.md
facebook/
post.md
question.md
poll.md
pinterest/
pins.md
idea-pin.md
boards.md
snapchat/
story-script.md
spotlight-script.md
ar-concept.md
youtube-community/
text-post.md
poll.md
image-post.md
skool/
discussion.md
challenge.md
poll.md
discord/
announcement.md
thread-prompt.md
embed.md
tiktok/
video-script.md
carousel.md
stitch-duet.md
reddit/
post.md
quora/
answer.md
space-post.md
questions.md
newsletter/
newsletter.md
email-sequence.md
medium/
article.md
tags-publications.md
crosspost-note.md
whatsapp/
update.md
poll.md
teaser.md
telegram/
post.md
deep-dive.md
poll.md
seo/
keywords.md
hashtags.md
metadata.md
quotes/
quotes.md # 5 quotable moments
banana-prompts.md # /banana prompts (always generated)
images/ # Generated images (auto when /banana available)
quote-card-*.png
carousel-cover.*
hero.*
seo-metadata.md # Cross-platform SEO metadata
all-content.md # MANDATORY: Single consolidated markdown (all platforms)
index.html # MANDATORY: HTML viewer with Copy buttons per content piece
calendar.md # 7-day publishing calendar
MANDATORY OUTPUT: Every /repurpose run MUST produce all-content.md (single file with everything) and index.html (viewer with Copy buttons). Run python3 scripts/generate_html.py <output-dir> as the final step.
Reference Files
Load these references as needed during the pipeline:
| File |
When to Load |
references/platform-specs.md |
Always — before generating any platform output |
references/hook-formulas.md |
When writing hooks, headlines, thread openers, email subjects |
references/voice-adaptation.md |
After voice detection, before generating any output |
references/repurposing-frameworks.md |
During atomization and calendar generation |
references/poll-strategy.md |
When generating polls for any platform |
references/image-sourcing.md |
When sourcing images (3-tier: website → stock → AI) |
references/mistakes-to-avoid.md |
Quality check pass before finalizing outputs |
references/engagement-benchmarks.md |
Calendar generation, engagement predictions |
Sub-Skills
| Sub-Skill |
Platform |
Key Output |
repurpose-twitter |
Twitter/X |
Standalone tweet, thread, poll |
repurpose-threads |
Threads |
Thread, standalone posts, image post |
repurpose-linkedin |
LinkedIn |
Text post, carousel, poll |
repurpose-instagram |
Instagram |
Carousel, reel script, caption |
repurpose-tiktok |
TikTok |
Video script, carousel, stitch/duet concept |
repurpose-pinterest |
Pinterest |
Pin descriptions, idea pin, board suggestions |
repurpose-snapchat |
Snapchat |
Story script, Spotlight script, AR concept |
repurpose-facebook |
Facebook |
Post, question, poll |
repurpose-youtube |
YouTube Community |
Text post, poll, image concept |
repurpose-skool |
Skool |
Discussion, challenge, poll |
repurpose-discord |
Discord |
Announcement, thread prompt, embed |
repurpose-reddit |
Reddit |
Subreddit-adapted post |
repurpose-quora |
Quora |
Answer, Space post, question suggestions |
repurpose-medium |
Medium |
Article, tags/publications, crosspost note |
repurpose-whatsapp |
WhatsApp |
Channel update, poll, teaser |
repurpose-telegram |
Telegram |
Channel post, deep dive, poll |
repurpose-newsletter |
Email |
Newsletter, 3-email drip |
repurpose-quotes |
Visual |
Quote cards, text overlays |
repurpose-seo |
Cross-platform |
Keywords, hashtags, metadata |
repurpose-calendar |
Scheduling |
7-day publishing calendar |
Image Sourcing Pipeline — 3-Tier System
Images are sourced automatically for every platform. The pipeline follows a 3-tier priority chain.
Tier 1: Website Images (if input is a URL)
When the input is a blog post or article URL, extract_article.py extracts images from the page.
- Use
scripts/fetch_images.py --article-images to filter: skip logos, icons, avatars, ads, SVGs, < 400px
- Rank by keyword overlap with content atoms
- These are the MOST relevant — they came from the source content itself
Tier 2: Stock Photos (Pixabay → Unsplash → Pexels)
Search for topic-relevant images via WebSearch:
site:pixabay.com [topic keywords] wide professional (preferred, no attribution required)
site:unsplash.com [topic keywords] professional (resize params supported)
site:pexels.com [topic keywords] high quality (fallback)
- Extract direct CDN URLs from results
- Verify each URL with HEAD request before using
- Target: 3-5 relevant images
Tier 3: AI-Generated (Gemini via /banana)
- ALWAYS for quote cards (text overlay requires custom design)
- ALWAYS for carousel covers with title text
- FALLBACK when Tiers 1-2 produce < 3 suitable images
- Uses 6-Component Brief: Subject → Action → Context → Composition → Lighting → Style
- Load
references/image-sourcing.md for templates and platform dimensions
Execution Order
- Check if input URL has images → extract and filter (Tier 1)
- Generate stock photo queries → use WebSearch to find Pixabay/Unsplash/Pexels images (Tier 2)
- Count total images found. If < 3 usable, generate more via /banana (Tier 3)
- ALWAYS generate 5 quote cards via /banana (or save prompts if unavailable)
- Save all images to
./repurposed/<timestamp>/images/
- Include image URLs/paths in platform output files
/banana Detection
Check for gemini_generate_image MCP tool OR ~/.claude/skills/banana/SKILL.md OR GOOGLE_API_KEY env var.
- Available: generate images automatically
- Not available: save all prompts to
quotes/banana-prompts.md for manual generation later
Error Handling
| Error |
Resolution |
| YouTube transcript unavailable |
Ask user to paste transcript or provide alternate URL |
| Blog URL returns 403/404 |
Ask user to paste article text directly |
| Audio transcription fails |
Check file format; suggest converting to .wav or .mp3 |
| Extraction script not found |
Fall back to WebFetch for URLs; Read for local files |
| Platform not recognized |
Show supported platforms list; suggest closest match |
| Content too short (<100 words) |
Warn user; reduce atom target to 3-5; skip thread/carousel |
| Content too long (>10,000 words) |
Chunk into sections; atomize each; merge top atoms |
| /banana not available |
Generate prompts only; note in summary |
| Output directory write fails |
Fall back to printing all outputs inline |
| Voice detection ambiguous |
Default to professional; note in summary |
Subcommand: analyze
Usage: /repurpose analyze <url-or-file>
Runs only Steps 1-2 (input detection + atomization). Does NOT generate platform outputs.
Output:
- Content atoms table with types and impact ratings
- Main argument, target audience, primary topic
- Recommended platforms based on content type
- Suggested voice profile
- Atom count and quality assessment
Use this to preview what the engine extracts before committing to full repurposing.
Subcommand: calendar
Usage: /repurpose calendar <url-or-file>
Runs Steps 1-2 (extraction + atomization), then generates a 7-day publishing calendar.
Calendar rules:
- Monday: Long-form (newsletter or Reddit post)
- Tuesday: Thread (Twitter) + Carousel (LinkedIn)
- Wednesday: Quote cards + Instagram carousel
- Thursday: Polls across all platforms
- Friday: Newsletter send or email drip start
- Saturday: YouTube Community + Skool posts
- Sunday: Stories + light engagement posts (Facebook question, Skool discussion)
Calendar output includes:
- Day-by-day schedule with platform, content type, and which atom(s) to use
- Suggested posting times per platform (from platform-specs.md)
- Dependencies (e.g., "Tuesday carousel requires Monday's images")
- Total pieces count
Output: Saved to ./repurposed/<timestamp>/calendar.md and printed to console.
Execution Flow Summary
User input
|
v
[1] Detect input type (URL/file/text)
|
v
[2] Extract raw content (script or Read)
|
v
[3] Atomize into 5-15 labeled atoms
|
v
[4] Detect or apply voice profile
|
v
[5] Spawn 6 agents in parallel:
|-- repurpose-social (Twitter + Threads + LinkedIn + Facebook)
|-- repurpose-visual (Instagram + TikTok + Pinterest + Snapchat + Quotes)
|-- repurpose-longform (Newsletter + Email + Reddit + Quora)
|-- repurpose-community (YouTube Community + Skool + Discord)
|-- repurpose-seo (Keywords + Hashtags + Metadata)
|-- repurpose-broadcast (WhatsApp + Telegram + Medium)
|
v
[6] Collect all outputs → write to ./repurposed/<timestamp>/
|
v
[7] Generate summary table + 7-day calendar
|
v
[8] Report results to user
1---2name: repurpose3description: Content Repurposing Engine. Transforms any content (YouTube videos, blog posts, podcasts, local files, pasted text) into platform-optimized outputs for Twitter/X, Threads, LinkedIn, Instagram, TikTok, Pinterest, Snapchat, Facebook, YouTube Community, Skool, Discord, Reddit, Quora, Medium, WhatsApp Channels, Telegram, and email newsletters. Atomizes content into reusable pieces, adapts brand voice per platform, generates polls, image prompts (via /banana), publishing calendars, and SEO metadata. Triggers on: "repurpose", "content repurpose", "turn into social media", "cross-platform", "content atomization", "repurpose blog", "repurpose video", "turn this into posts", "threads", "pinterest", "snapchat", "discord", "medium", "whatsapp", "telegram".4license: MIT5---67# Content Repurposing Engine89Transform any content into platform-optimized outputs across 17+ channels.1011## Quick Reference1213| Command | Description |14|---------|-------------|15| `/repurpose <url-or-file>` | Full repurpose pipeline (all platforms) |16| `/repurpose <input> --platforms twitter,linkedin` | Repurpose to specific platforms only |17| `/repurpose <input> --voice casual` | Override brand voice (casual/professional/witty) |18| `/repurpose <input> --brief` | Quick mode: 1 post per platform, no calendar |19| `/repurpose <input> --images` | Generate image prompts (or /banana images if available) |20| `/repurpose analyze <input>` | Atomize content only, no platform outputs |21| `/repurpose calendar <input>` | Generate 7-day publishing calendar only |2223## Step 1: Input Detection2425Detect the input type and extract raw content accordingly.2627**Detection patterns (check in order):**2829| Pattern | Type | Extraction Method |30|---------|------|-------------------|31| `youtube\.com/watch\|youtu\.be/\|youtube\.com/shorts` | YouTube video | Run `scripts/extract_transcript.py <url>` |32| `https?://` (any other URL) | Blog/article | Run `scripts/extract_article.py <url>` |33| Path ending in `.mp3`, `.wav`, `.m4a`, `.ogg`, `.flac` | Audio file | Run `scripts/transcribe_audio.py <path>` |34| Path ending in `.md`, `.txt`, `.pdf` | Local file | Read file directly with the Read tool |35| No URL or file path detected | Pasted text | Use the inline text as-is |3637**Extraction rules:**38- For YouTube: extract transcript, video title, channel name, description, and duration39- For blog URLs: extract title, author, publication date, body text, and any embedded media descriptions40- For audio: transcribe to text, note duration and any speaker labels41- For local files: read full contents; for PDF use the Read tool with page ranges if large42- For pasted text: use verbatim; ask the user for a title/topic if not obvious4344If extraction fails, report the error clearly and ask the user to paste the content directly.4546## Step 2: Content Atomization4748Break the extracted content into 5-15 reusable "atoms." Each atom is a self-contained content unit.4950**Atom types:**5152| Type | Description | Example |53|------|-------------|---------|54| `stat` | A specific number, percentage, or data point | "73% of marketers repurpose content" |55| `quote` | A quotable sentence or phrase | "Distribution is the new creation." |56| `insight` | A non-obvious takeaway or lesson | "Repurposing beats fresh creation 3:1 on ROI" |57| `question` | A thought-provoking question from the content | "What if you never had to write from scratch again?" |58| `contrarian` | A bold or counterintuitive claim | "Posting less actually grows your audience faster" |59| `howto` | An actionable step or mini-tutorial | "Step 1: Record a 10-min video. Step 2: Extract 8 clips." |60| `analogy` | A comparison that makes the concept click | "Repurposing is composting: old material feeds new growth" |61| `casestudy` | A real example, result, or before/after | "Gary Vee turns one keynote into 35M+ views across platforms" |62| `prediction` | A forward-looking claim or trend | "By 2027, 90% of content will be AI-assisted remixes" |63| `tldr` | The single-sentence summary of the entire piece | Always extract exactly one |6465**Atomization rules:**661. Extract between 5 and 15 atoms (aim for 8-12 for most content)672. Always include at least one `tldr`, one `insight`, and one `quote` or `contrarian`683. Label each atom with its type694. Rate each atom's standalone impact from 1-5 (5 = works perfectly as a standalone post)705. Identify the main argument, target audience, and primary topic716. Preserve the original author's voice in quoted atoms727. For longer content (>2000 words), aim for 12-15 atoms; for shorter, 5-87374**Atomization output format:**75```76## Content Atoms7778**Main Argument:** [one sentence]79**Target Audience:** [who benefits from this content]80**Primary Topic:** [category/niche]8182| # | Type | Atom | Impact |83|---|------|------|--------|84| 1 | tldr | ... | 5 |85| 2 | insight | ... | 4 |86| ... | ... | ... | ... |87```8889## Step 3: Voice Detection and Adaptation9091**Default behavior:** Detect the brand voice from the source content. Analyze formality, humor level, directness, emotion, and jargon to infer the author's natural voice.9293**Override flags:**94- `--voice casual` — friendlier, more emoji, conversational, contractions95- `--voice professional` — formal, data-driven, authoritative, measured96- `--voice witty` — personality-forward, clever wordplay, punchy, unexpected angles9798**Core rule:** The brand voice stays consistent across all platforms. Only the TONE adapts per platform. Load `references/voice-adaptation.md` for the full platform-tone matrix.99100## Step 4: Orchestration — Spawn 6 Parallel Agents101102After atomization, spawn 6 subagents in parallel. Each agent receives:103- The full list of content atoms (with types and impact ratings)104- The main argument, target audience, and primary topic105- The detected or overridden brand voice106- The `--brief` flag status (if true, produce 1 post per platform instead of full sets)107- The `--images` flag status108109### Agent 1: `repurpose-social`110**Platforms:** Twitter/X, Threads, LinkedIn, Facebook111**Receives:** All atoms, voice profile, platform specs112**Produces:**113- Twitter: 1 standalone tweet + 1 thread (8-12 tweets) + 1 poll + image prompt114- Threads: 1 thread (5-10 posts) + 3-5 standalone posts + 1 image post concept115- LinkedIn: 1 text post + 1 carousel outline (8-10 slides) + 1 poll116- Facebook: 1 text post + 1 question post + 1 poll117**Sub-skills invoked:** `repurpose-twitter`, `repurpose-threads`, `repurpose-linkedin`, `repurpose-facebook`118119### Agent 2: `repurpose-visual`120**Platforms:** Instagram, TikTok, Pinterest, Snapchat, Quote cards, Image prompts121**Receives:** All atoms (especially quotes, stats, insights), voice profile122**Produces:**123- Instagram: 1 carousel (7-10 slides with copy) + 1 reel script (30-60s) + caption + hashtags124- TikTok: 1 video script (15-60s) + 1 carousel (2-10 slides) + 1 stitch/duet concept125- Pinterest: 3-5 pin descriptions + 1 idea pin script (5-10 slides) + board suggestions126- Snapchat: 1 story script (3-5 frames) + 1 Spotlight script (60s) + AR lens concept127- Quote cards: 3-5 text overlays for image generation128- Image prompts: hero image + carousel cover + 3 quote card prompts129**Sub-skills invoked:** `repurpose-instagram`, `repurpose-tiktok`, `repurpose-pinterest`, `repurpose-snapchat`, `repurpose-quotes`130131### Agent 3: `repurpose-longform`132**Platforms:** Newsletter, Email sequence, Reddit, Quora133**Receives:** All atoms, full original content reference, voice profile134**Produces:**135- Newsletter: subject line + preview text + 200-500 word body136- Email sequence: 3-email drip (day 0, day 2, day 4) with subject lines and CTAs137- Reddit: title + post body adapted to subreddit norms138- Quora: 1 answer (300-1000 words) + 1 Space post + question suggestions139**Sub-skills invoked:** `repurpose-newsletter`, `repurpose-reddit`, `repurpose-quora`140141### Agent 4: `repurpose-community`142**Platforms:** YouTube Community, Skool, Discord143**Receives:** All atoms (especially questions, polls, insights), voice profile144**Produces:**145- YouTube Community: 1 text post + 1 poll (5 options) + 1 image post concept146- Skool: 1 discussion post + 1 challenge/action post + 1 poll147- Discord: 1 announcement post + 1 discussion thread prompt + 1 embed message148**Sub-skills invoked:** `repurpose-youtube`, `repurpose-skool`, `repurpose-discord`149150### Agent 5: `repurpose-seo`151**Platforms:** Cross-platform SEO metadata152**Receives:** All atoms, main argument, target audience, topic153**Produces:**154- Primary keywords (3-5) and secondary keywords (5-10)155- Hashtag sets per platform156- SEO title and meta description (for blog/newsletter)157- Alt text suggestions for all generated images158- Schema markup suggestions (Article, VideoObject, FAQPage)159**Sub-skills invoked:** `repurpose-seo`160161### Agent 6: `repurpose-broadcast`162**Platforms:** WhatsApp Channels, Telegram Channels, Medium163**Receives:** All atoms, full original content reference, voice profile164**Produces:**165- WhatsApp: 1 channel update (100-300 chars) + 1 poll + 1 content teaser166- Telegram: 1 channel post (500-1000 chars) + 1 deep dive (1000-2000 chars) + 1 poll167- Medium: 1 article (1500-3000 words) + title/subtitle + 5 tags + publication suggestions168**Sub-skills invoked:** `repurpose-whatsapp`, `repurpose-telegram`, `repurpose-medium`169170### Platform filtering171If `--platforms` is specified, only spawn the agents that cover the requested platforms:172- `twitter`, `threads`, `linkedin`, `facebook` → Agent 1173- `instagram`, `tiktok`, `pinterest`, `snapchat`, `quotes`, `images` → Agent 2174- `newsletter`, `email`, `reddit`, `quora` → Agent 3175- `youtube`, `skool`, `discord` → Agent 4176- `seo` → Agent 5177- `whatsapp`, `telegram`, `medium` → Agent 6178179If a single platform is requested, spawn only the relevant agent.180181## Step 5: Collect Outputs and Generate Summary182183After all agents complete:1841851. **Compile all outputs** into the output directory structure (see below)1862. **Generate images** — ALWAYS attempt image generation when /banana is available (do NOT wait for `--images` flag). If /banana is unavailable, save prompts to `quotes/banana-prompts.md` for manual use later1873. **Generate a summary table** showing what was produced per platform1884. **Generate a 7-day publishing calendar** (unless `--brief` was used)1895. **Generate HTML viewer** — Run `python3 scripts/generate_html.py <output-dir>` to create `index.html` (dark-themed viewer with Copy buttons per content piece) and `all-content.md` (single consolidated file with all platform outputs)1906. **Report to user** — Show summary and link to `index.html` for easy browsing and copying191192### Output Directory Structure193194```195./repurposed/<YYYY-MM-DD_HHMMSS>/196 summary.md # Overview of all outputs + publishing calendar197 atoms.md # Content atomization results198 twitter/199 standalone-tweet.md200 thread.md201 poll.md202 linkedin/203 post.md204 carousel.md205 poll.md206 instagram/207 carousel.md208 reel-script.md209 caption.md210 threads/211 thread.md212 standalone-posts.md213 image-post.md214 facebook/215 post.md216 question.md217 poll.md218 pinterest/219 pins.md220 idea-pin.md221 boards.md222 snapchat/223 story-script.md224 spotlight-script.md225 ar-concept.md226 youtube-community/227 text-post.md228 poll.md229 image-post.md230 skool/231 discussion.md232 challenge.md233 poll.md234 discord/235 announcement.md236 thread-prompt.md237 embed.md238 tiktok/239 video-script.md240 carousel.md241 stitch-duet.md242 reddit/243 post.md244 quora/245 answer.md246 space-post.md247 questions.md248 newsletter/249 newsletter.md250 email-sequence.md251 medium/252 article.md253 tags-publications.md254 crosspost-note.md255 whatsapp/256 update.md257 poll.md258 teaser.md259 telegram/260 post.md261 deep-dive.md262 poll.md263 seo/264 keywords.md265 hashtags.md266 metadata.md267 quotes/268 quotes.md # 5 quotable moments269 banana-prompts.md # /banana prompts (always generated)270 images/ # Generated images (auto when /banana available)271 quote-card-*.png272 carousel-cover.*273 hero.*274 seo-metadata.md # Cross-platform SEO metadata275 all-content.md # MANDATORY: Single consolidated markdown (all platforms)276 index.html # MANDATORY: HTML viewer with Copy buttons per content piece277 calendar.md # 7-day publishing calendar278```279280**MANDATORY OUTPUT**: Every `/repurpose` run MUST produce `all-content.md` (single file with everything) and `index.html` (viewer with Copy buttons). Run `python3 scripts/generate_html.py <output-dir>` as the final step.281282## Reference Files283284Load these references as needed during the pipeline:285286| File | When to Load |287|------|-------------|288| `references/platform-specs.md` | Always — before generating any platform output |289| `references/hook-formulas.md` | When writing hooks, headlines, thread openers, email subjects |290| `references/voice-adaptation.md` | After voice detection, before generating any output |291| `references/repurposing-frameworks.md` | During atomization and calendar generation |292| `references/poll-strategy.md` | When generating polls for any platform |293| `references/image-sourcing.md` | When sourcing images (3-tier: website → stock → AI) |294| `references/mistakes-to-avoid.md` | Quality check pass before finalizing outputs |295| `references/engagement-benchmarks.md` | Calendar generation, engagement predictions |296297## Sub-Skills298299| Sub-Skill | Platform | Key Output |300|-----------|----------|------------|301| `repurpose-twitter` | Twitter/X | Standalone tweet, thread, poll |302| `repurpose-threads` | Threads | Thread, standalone posts, image post |303| `repurpose-linkedin` | LinkedIn | Text post, carousel, poll |304| `repurpose-instagram` | Instagram | Carousel, reel script, caption |305| `repurpose-tiktok` | TikTok | Video script, carousel, stitch/duet concept |306| `repurpose-pinterest` | Pinterest | Pin descriptions, idea pin, board suggestions |307| `repurpose-snapchat` | Snapchat | Story script, Spotlight script, AR concept |308| `repurpose-facebook` | Facebook | Post, question, poll |309| `repurpose-youtube` | YouTube Community | Text post, poll, image concept |310| `repurpose-skool` | Skool | Discussion, challenge, poll |311| `repurpose-discord` | Discord | Announcement, thread prompt, embed |312| `repurpose-reddit` | Reddit | Subreddit-adapted post |313| `repurpose-quora` | Quora | Answer, Space post, question suggestions |314| `repurpose-medium` | Medium | Article, tags/publications, crosspost note |315| `repurpose-whatsapp` | WhatsApp | Channel update, poll, teaser |316| `repurpose-telegram` | Telegram | Channel post, deep dive, poll |317| `repurpose-newsletter` | Email | Newsletter, 3-email drip |318| `repurpose-quotes` | Visual | Quote cards, text overlays |319| `repurpose-seo` | Cross-platform | Keywords, hashtags, metadata |320| `repurpose-calendar` | Scheduling | 7-day publishing calendar |321322## Image Sourcing Pipeline — 3-Tier System323324Images are sourced automatically for every platform. The pipeline follows a 3-tier priority chain.325326### Tier 1: Website Images (if input is a URL)327When the input is a blog post or article URL, `extract_article.py` extracts images from the page.328- Use `scripts/fetch_images.py --article-images` to filter: skip logos, icons, avatars, ads, SVGs, < 400px329- Rank by keyword overlap with content atoms330- These are the MOST relevant — they came from the source content itself331332### Tier 2: Stock Photos (Pixabay → Unsplash → Pexels)333Search for topic-relevant images via WebSearch:334- `site:pixabay.com [topic keywords] wide professional` (preferred, no attribution required)335- `site:unsplash.com [topic keywords] professional` (resize params supported)336- `site:pexels.com [topic keywords] high quality` (fallback)337- Extract direct CDN URLs from results338- Verify each URL with HEAD request before using339- Target: 3-5 relevant images340341### Tier 3: AI-Generated (Gemini via /banana)342- **ALWAYS** for quote cards (text overlay requires custom design)343- **ALWAYS** for carousel covers with title text344- **FALLBACK** when Tiers 1-2 produce < 3 suitable images345- Uses 6-Component Brief: Subject → Action → Context → Composition → Lighting → Style346- Load `references/image-sourcing.md` for templates and platform dimensions347348### Execution Order3491. Check if input URL has images → extract and filter (Tier 1)3502. Generate stock photo queries → use WebSearch to find Pixabay/Unsplash/Pexels images (Tier 2)3513. Count total images found. If < 3 usable, generate more via /banana (Tier 3)3524. ALWAYS generate 5 quote cards via /banana (or save prompts if unavailable)3535. Save all images to `./repurposed/<timestamp>/images/`3546. Include image URLs/paths in platform output files355356### /banana Detection357Check for `gemini_generate_image` MCP tool OR `~/.claude/skills/banana/SKILL.md` OR `GOOGLE_API_KEY` env var.358- Available: generate images automatically359- Not available: save all prompts to `quotes/banana-prompts.md` for manual generation later360361## Error Handling362363| Error | Resolution |364|-------|------------|365| YouTube transcript unavailable | Ask user to paste transcript or provide alternate URL |366| Blog URL returns 403/404 | Ask user to paste article text directly |367| Audio transcription fails | Check file format; suggest converting to .wav or .mp3 |368| Extraction script not found | Fall back to WebFetch for URLs; Read for local files |369| Platform not recognized | Show supported platforms list; suggest closest match |370| Content too short (<100 words) | Warn user; reduce atom target to 3-5; skip thread/carousel |371| Content too long (>10,000 words) | Chunk into sections; atomize each; merge top atoms |372| /banana not available | Generate prompts only; note in summary |373| Output directory write fails | Fall back to printing all outputs inline |374| Voice detection ambiguous | Default to professional; note in summary |375376## Subcommand: `analyze`377378**Usage:** `/repurpose analyze <url-or-file>`379380Runs only Steps 1-2 (input detection + atomization). Does NOT generate platform outputs.381382**Output:**383- Content atoms table with types and impact ratings384- Main argument, target audience, primary topic385- Recommended platforms based on content type386- Suggested voice profile387- Atom count and quality assessment388389Use this to preview what the engine extracts before committing to full repurposing.390391## Subcommand: `calendar`392393**Usage:** `/repurpose calendar <url-or-file>`394395Runs Steps 1-2 (extraction + atomization), then generates a 7-day publishing calendar.396397**Calendar rules:**398- Monday: Long-form (newsletter or Reddit post)399- Tuesday: Thread (Twitter) + Carousel (LinkedIn)400- Wednesday: Quote cards + Instagram carousel401- Thursday: Polls across all platforms402- Friday: Newsletter send or email drip start403- Saturday: YouTube Community + Skool posts404- Sunday: Stories + light engagement posts (Facebook question, Skool discussion)405406**Calendar output includes:**407- Day-by-day schedule with platform, content type, and which atom(s) to use408- Suggested posting times per platform (from platform-specs.md)409- Dependencies (e.g., "Tuesday carousel requires Monday's images")410- Total pieces count411412**Output:** Saved to `./repurposed/<timestamp>/calendar.md` and printed to console.413414## Execution Flow Summary415416```417User input418 |419 v420[1] Detect input type (URL/file/text)421 |422 v423[2] Extract raw content (script or Read)424 |425 v426[3] Atomize into 5-15 labeled atoms427 |428 v429[4] Detect or apply voice profile430 |431 v432[5] Spawn 6 agents in parallel:433 |-- repurpose-social (Twitter + Threads + LinkedIn + Facebook)434 |-- repurpose-visual (Instagram + TikTok + Pinterest + Snapchat + Quotes)435 |-- repurpose-longform (Newsletter + Email + Reddit + Quora)436 |-- repurpose-community (YouTube Community + Skool + Discord)437 |-- repurpose-seo (Keywords + Hashtags + Metadata)438 |-- repurpose-broadcast (WhatsApp + Telegram + Medium)439 |440 v441[6] Collect all outputs → write to ./repurposed/<timestamp>/442 |443 v444[7] Generate summary table + 7-day calendar445 |446 v447[8] Report results to user448```