Cross-Platform SEO Metadata Generator
Produce a unified SEO metadata file covering every platform in the repurposing
pipeline. Ensures keyword consistency while respecting each platform's unique
search and discovery mechanics.
Inputs
Received from the parent agent (repurpose-seo):
| Input |
Description |
atoms |
Full list of content atoms with types and impact ratings |
main_argument |
One-sentence thesis of the source content |
target_audience |
Who benefits from this content |
primary_topic |
Category or niche |
voice_profile |
Detected or overridden brand voice |
platforms_requested |
Which platforms are being generated (all if unspecified) |
References
Load these before generating output:
references/platform-specs.md -- character limits, hashtag counts, formatting rules
references/engagement-benchmarks.md -- click-through and engagement baselines
Output: seo-metadata.md
File: seo-metadata.md
Single file with clearly labeled sections per platform.
Core Keywords (Cross-Platform)
Before generating platform-specific metadata, establish the keyword foundation:
## Core Keywords
**Primary Keywords (3-5):**
- [keyword 1] -- highest relevance to main argument
- [keyword 2]
- [keyword 3]
**Secondary Keywords (5-10):**
- [long-tail keyword 1]
- [long-tail keyword 2]
- ...
**Keyword Selection Rules:**
- Primary: directly describe the content topic (1-2 words)
- Secondary: long-tail phrases the target audience would search
- Avoid generic terms ("marketing", "business") unless paired with specifics
- Include at least one audience-identifying keyword ("for founders", "SaaS")
All platform sections below must use these core keywords, adapted to each
platform's conventions.
Twitter/X
| Field |
Spec |
| Optimized Title |
Under 70 chars; include primary keyword; works as tweet text |
| Description |
1-2 sentences; under 200 chars; for Twitter Card meta |
| Twitter Card Type |
summary_large_image (default) or summary if no hero image |
| Hashtags |
0-2 max. Only if highly relevant. Twitter penalizes hashtag stuffing. |
| Keywords in Tweet |
Weave primary keyword naturally into tweet copy; never force |
| Alt Text |
For any attached image: descriptive, keyword-inclusive, under 420 chars |
LinkedIn
| Field |
Spec |
| Optimized Headline |
Under 150 chars; professional tone; include primary keyword |
| Description |
1-2 sentences for link preview or article summary |
| Hashtags |
3-5. Mix of broad (50k+ followers) and niche (<10k followers). Place at post bottom. |
| Article SEO |
If longform: suggest SEO title (under 70 chars) + meta description (under 155 chars) for LinkedIn article |
| Keywords |
Include primary keyword in first 2 lines of post (LinkedIn search indexes early text) |
| Alt Text |
For carousel cover or images: professional, descriptive |
Instagram
| Field |
Spec |
| Caption Headline |
First line of caption (before "more" fold); under 125 chars; hook + keyword |
| Description |
Not applicable (Instagram has no meta description) |
| Hashtags |
3-5 niche hashtags. Avoid generic (#marketing, #inspo). Target hashtags with 10k-500k posts for discoverability. |
| Hashtag Research Notes |
For each hashtag: approximate post count and why it fits |
| Keywords |
Work primary keyword into caption naturally; Instagram search indexes caption text |
| Alt Text |
For each carousel slide and reel thumbnail: descriptive, specific, keyword-inclusive |
Instagram hashtag rules:
- Place in caption body or first comment (either works; caption preferred for indexing)
- 3-5 total (algorithm penalizes 20+ hashtag lists)
- Mix: 1 broad (100k+ posts), 2-3 niche (10k-500k), 1 micro (<10k)
- Rotate sets across posts to avoid shadow-ban triggers
Facebook
| Field |
Spec |
| Optimized Title |
Under 80 chars; conversational tone; primary keyword |
| Description |
For link preview: under 155 chars |
| Hashtags |
0-3. Facebook hashtags have low impact; use only if highly topical. |
| Keywords |
Include in first sentence; Facebook search indexes post text |
| Alt Text |
For any images: descriptive, keyword-included |
YouTube Community
| Field |
Spec |
| Post Text |
First 2 lines (before fold) should contain primary keyword |
| Hashtags |
1-3 relevant hashtags at post bottom |
| Keywords |
Work into poll questions and post body naturally |
Reddit
| Field |
Spec |
| Title Keywords |
Include primary keyword in post title naturally |
| Post Flair |
Suggest flair text based on subreddit conventions (e.g., "Discussion", "Resource", "Question") |
| No Hashtags |
Reddit does not use hashtags. Never include them. |
| Keywords |
Work into post body for Reddit search; use natural language |
Newsletter / Email
| Field |
Spec |
| Subject Line Keywords |
Primary keyword in at least 1 of 3 subject variants |
| Preview Text |
40-90 chars; complements subject; includes secondary keyword |
| Alt Text |
For any email images: descriptive (many clients block images) |
| No Hashtags |
Email does not use hashtags. |
Skool
| Field |
Spec |
| Post Title |
Include primary keyword; frame as discussion or challenge |
| Hashtags |
0-2 if the Skool community uses tags |
| Keywords |
Work into post body and discussion prompt |
Cross-Platform Consistency Check
After generating all sections, verify:
- Primary keyword appears in every platform's title/headline
- No platform uses more hashtags than its recommended limit
- Alt text is unique per image, not copy-pasted across platforms
- Tone matches platform (professional for LinkedIn, casual for Twitter, peer-to-peer for Reddit)
- No keyword stuffing -- each keyword appears naturally, max 2 times per platform section
Keyword Adaptation Rules
| Platform |
Keyword Style |
| Twitter |
Short, punchy, often as a noun phrase |
| LinkedIn |
Professional, may include industry jargon |
| Instagram |
Casual, may abbreviate or use slang |
| Facebook |
Conversational, question-friendly |
| Reddit |
Natural language, no optimization feel |
| Newsletter |
Benefit-oriented, action words |
| YouTube |
Search-query style, how-to phrasing |
Error Handling
| Condition |
Action |
| Topic too broad for specific keywords |
Ask parent agent for niche-down; use audience-specific long-tail |
Platform not in platforms_requested |
Skip that section; note in output |
| No images generated |
Skip alt text sections; note "Add alt text when images are created" |
brief_mode is true |
Generate core keywords + top 3 requested platforms only |
| Hashtag research unclear |
Default to topic + audience + format pattern |
1---2name: repurpose-seo3description: Generates cross-platform SEO metadata including optimized titles, descriptions, hashtag sets, keywords, alt text, and platform-specific search signals. Ensures keyword consistency across all repurposed outputs. Sub-skill of the Content Repurposing Engine. Use when user says "seo metadata", "hashtags", "keywords", "alt text", "cross-platform seo", or "repurpose seo".4license: MIT5---67# Cross-Platform SEO Metadata Generator89Produce a unified SEO metadata file covering every platform in the repurposing10pipeline. Ensures keyword consistency while respecting each platform's unique11search and discovery mechanics.1213## Inputs1415Received from the parent agent (`repurpose-seo`):1617| Input | Description |18|-------|-------------|19| `atoms` | Full list of content atoms with types and impact ratings |20| `main_argument` | One-sentence thesis of the source content |21| `target_audience` | Who benefits from this content |22| `primary_topic` | Category or niche |23| `voice_profile` | Detected or overridden brand voice |24| `platforms_requested` | Which platforms are being generated (all if unspecified) |2526## References2728Load these before generating output:2930- `references/platform-specs.md` -- character limits, hashtag counts, formatting rules31- `references/engagement-benchmarks.md` -- click-through and engagement baselines3233## Output: seo-metadata.md3435**File:** `seo-metadata.md`3637Single file with clearly labeled sections per platform.3839### Core Keywords (Cross-Platform)4041Before generating platform-specific metadata, establish the keyword foundation:4243```markdown44## Core Keywords4546**Primary Keywords (3-5):**47- [keyword 1] -- highest relevance to main argument48- [keyword 2]49- [keyword 3]5051**Secondary Keywords (5-10):**52- [long-tail keyword 1]53- [long-tail keyword 2]54- ...5556**Keyword Selection Rules:**57- Primary: directly describe the content topic (1-2 words)58- Secondary: long-tail phrases the target audience would search59- Avoid generic terms ("marketing", "business") unless paired with specifics60- Include at least one audience-identifying keyword ("for founders", "SaaS")61```6263All platform sections below must use these core keywords, adapted to each64platform's conventions.6566---6768### Twitter/X6970| Field | Spec |71|-------|------|72| **Optimized Title** | Under 70 chars; include primary keyword; works as tweet text |73| **Description** | 1-2 sentences; under 200 chars; for Twitter Card meta |74| **Twitter Card Type** | `summary_large_image` (default) or `summary` if no hero image |75| **Hashtags** | 0-2 max. Only if highly relevant. Twitter penalizes hashtag stuffing. |76| **Keywords in Tweet** | Weave primary keyword naturally into tweet copy; never force |77| **Alt Text** | For any attached image: descriptive, keyword-inclusive, under 420 chars |7879### LinkedIn8081| Field | Spec |82|-------|------|83| **Optimized Headline** | Under 150 chars; professional tone; include primary keyword |84| **Description** | 1-2 sentences for link preview or article summary |85| **Hashtags** | 3-5. Mix of broad (50k+ followers) and niche (<10k followers). Place at post bottom. |86| **Article SEO** | If longform: suggest SEO title (under 70 chars) + meta description (under 155 chars) for LinkedIn article |87| **Keywords** | Include primary keyword in first 2 lines of post (LinkedIn search indexes early text) |88| **Alt Text** | For carousel cover or images: professional, descriptive |8990### Instagram9192| Field | Spec |93|-------|------|94| **Caption Headline** | First line of caption (before "more" fold); under 125 chars; hook + keyword |95| **Description** | Not applicable (Instagram has no meta description) |96| **Hashtags** | 3-5 niche hashtags. Avoid generic (#marketing, #inspo). Target hashtags with 10k-500k posts for discoverability. |97| **Hashtag Research Notes** | For each hashtag: approximate post count and why it fits |98| **Keywords** | Work primary keyword into caption naturally; Instagram search indexes caption text |99| **Alt Text** | For each carousel slide and reel thumbnail: descriptive, specific, keyword-inclusive |100101**Instagram hashtag rules:**102- Place in caption body or first comment (either works; caption preferred for indexing)103- 3-5 total (algorithm penalizes 20+ hashtag lists)104- Mix: 1 broad (100k+ posts), 2-3 niche (10k-500k), 1 micro (<10k)105- Rotate sets across posts to avoid shadow-ban triggers106107### Facebook108109| Field | Spec |110|-------|------|111| **Optimized Title** | Under 80 chars; conversational tone; primary keyword |112| **Description** | For link preview: under 155 chars |113| **Hashtags** | 0-3. Facebook hashtags have low impact; use only if highly topical. |114| **Keywords** | Include in first sentence; Facebook search indexes post text |115| **Alt Text** | For any images: descriptive, keyword-included |116117### YouTube Community118119| Field | Spec |120|-------|------|121| **Post Text** | First 2 lines (before fold) should contain primary keyword |122| **Hashtags** | 1-3 relevant hashtags at post bottom |123| **Keywords** | Work into poll questions and post body naturally |124125### Reddit126127| Field | Spec |128|-------|------|129| **Title Keywords** | Include primary keyword in post title naturally |130| **Post Flair** | Suggest flair text based on subreddit conventions (e.g., "Discussion", "Resource", "Question") |131| **No Hashtags** | Reddit does not use hashtags. Never include them. |132| **Keywords** | Work into post body for Reddit search; use natural language |133134### Newsletter / Email135136| Field | Spec |137|-------|------|138| **Subject Line Keywords** | Primary keyword in at least 1 of 3 subject variants |139| **Preview Text** | 40-90 chars; complements subject; includes secondary keyword |140| **Alt Text** | For any email images: descriptive (many clients block images) |141| **No Hashtags** | Email does not use hashtags. |142143### Skool144145| Field | Spec |146|-------|------|147| **Post Title** | Include primary keyword; frame as discussion or challenge |148| **Hashtags** | 0-2 if the Skool community uses tags |149| **Keywords** | Work into post body and discussion prompt |150151---152153## Cross-Platform Consistency Check154155After generating all sections, verify:1561571. **Primary keyword appears** in every platform's title/headline1582. **No platform uses more hashtags** than its recommended limit1593. **Alt text is unique** per image, not copy-pasted across platforms1604. **Tone matches platform** (professional for LinkedIn, casual for Twitter, peer-to-peer for Reddit)1615. **No keyword stuffing** -- each keyword appears naturally, max 2 times per platform section162163## Keyword Adaptation Rules164165| Platform | Keyword Style |166|----------|---------------|167| Twitter | Short, punchy, often as a noun phrase |168| LinkedIn | Professional, may include industry jargon |169| Instagram | Casual, may abbreviate or use slang |170| Facebook | Conversational, question-friendly |171| Reddit | Natural language, no optimization feel |172| Newsletter | Benefit-oriented, action words |173| YouTube | Search-query style, how-to phrasing |174175## Error Handling176177| Condition | Action |178|-----------|--------|179| Topic too broad for specific keywords | Ask parent agent for niche-down; use audience-specific long-tail |180| Platform not in `platforms_requested` | Skip that section; note in output |181| No images generated | Skip alt text sections; note "Add alt text when images are created" |182| `brief_mode` is true | Generate core keywords + top 3 requested platforms only |183| Hashtag research unclear | Default to topic + audience + format pattern |