$npx -y skills add yoyothesheep/claude-skills --skill aeo-content-writerBlog post writer for AEO-optimized, data-driven sites. Writes posts based on BLS/O*NET data or equivalent authoritative sources, following the site's tone guide and content structure. Career/product pages generated by data pipelines are out of scope — use this skill for editorial
| 1 | # AEO Content Writer Skill |
| 2 | |
| 3 | This skill writes blog posts that are data-driven, AEO-optimized, and follow the site's tone and content standards. |
| 4 | |
| 5 | ## When to Use This Skill |
| 6 | |
| 7 | Trigger this skill when the user asks to: |
| 8 | - "Draft the blog post about [Topic]" |
| 9 | - "Write a post about [labor market trend / AI impact topic]" |
| 10 | |
| 11 | ## Core Workflow |
| 12 | |
| 13 | ### Step 0: AEO Brief Intake (when writing from a research report) |
| 14 | |
| 15 | If the user references an AEO topic research report or says they want to write a specific post from a research report, do this before anything else: |
| 16 | |
| 17 | **1. Identify the specific recommendation.** |
| 18 | Ask the user which post/recommendation they're targeting if not obvious. Reference it by its exact title and slug from the report. Do not proceed ambiguously. |
| 19 | |
| 20 | **2. Extract from the content brief:** |
| 21 | - **Target questions** — the exact queries the post is designed to answer. These drive the H1, meta title, and FAQ pairs. |
| 22 | - **Reddit phrasing** — exact phrases from the glossary and brief. These go verbatim into headlines, subheads, and intro paragraphs. Do not paraphrase. |
| 23 | - **Content structure** — use the brief's numbered outline as the skeleton. The section order, H2s, and framing are deliberate; follow them unless you have a strong reason to deviate. |
| 24 | - **Word count target** — treat the range as a floor, not a guideline. Under-length posts are the primary reason sites fail to get cited. |
| 25 | - **Key data to pull** — specific data points named in the brief. These are the data points that make the post citable; don't substitute with vaguer claims. |
| 26 | - **Slug** — use exactly as specified. |
| 27 | |
| 28 | **3. Sanity-check against the Winning Content Formula (Section 6 of the report):** |
| 29 | Before writing, verify the planned post will include: |
| 30 | - Direct answer paragraph (2–3 sentences) at the very top |
| 31 | - Key Takeaway (2–3 sentences, specific numbers) after the opening paragraph, before the first H2 — only if the opening paragraph is narrative rather than data-dense. If the opening already leads with strong stats, skip it. |
| 32 | - Key Takeaways box (3–5 bullets) near the top |
| 33 | - Numbered list with consistent sub-structure per entry (if it's a listicle) |
| 34 | - At least one inline table for salary/comparison data |
| 35 | - Table of contents (for posts over 2,500 words) |
| 36 | - FAQPage schema via `faqPairs` prop (6–8 pairs, schema-only — not a visible section) |
| 37 | - Question-formatted H2s throughout, each followed by a direct-answer first paragraph |
| 38 | - Visible data attribution line near the top |
| 39 | - Minimum 3–5 external citations to authoritative sources |
| 40 | |
| 41 | If any of these are missing from your plan, add them before writing. |
| 42 | |
| 43 | --- |
| 44 | |
| 45 | ### Step 1: Information Gathering |
| 46 | Before writing a single word, gather the necessary data: |
| 47 | 1. **Read CONFIG.md:** Load `TONE_GUIDE_PATH`, `SITE_CONTEXT`, `AGENTS_DOC`, `DATA_SOURCES`, `SITE_REPO`, `DATA_REPO`, `BLOG_COMPONENT_DIR`, and `BLOG_ROUTE_DIR` from `.claude/skills/aeo-content-writer/CONFIG.md`. |
| 48 | 2. **Read the Tone Guide:** Review the file at `TONE_GUIDE_PATH`. |
| 49 | 3. **Read Site Context:** Review the file at `SITE_CONTEXT` for platform background, data sources, and what this skill is responsible for. |
| 50 | 4. **Read Agents Doc:** Review the file at `AGENTS_DOC` for agent coordination context. |
| 51 | 5. **Gather Data:** Pull from `DATA_REPO` and authoritative external sources listed in `DATA_SOURCES`. Find real numbers for any salary, job growth, or openings claims. |
| 52 | 4. **Find 3 High-Quality Sources:** Government data, peer-reviewed labor economics, major research reports (McKinsey, WEF). Avoid Gartner/IDC/MarketsandMarkets. |
| 53 | |
| 54 | ### Step 2: Blog Post Format |
| 55 | Read CLAUDE.md before writing any files — it contains file paths, component names, route boilerplate, slug format, POSTS array fields, thumbnail spec, and sitemap format. |
| 56 | |
| 57 | You must generate all of the following: |
| 58 | |
| 59 | #### A. Post Component |
| 60 | - Export named constants at the top: slug, title, published date, published date ISO, description. Add edited date constants if this is an edit. |
| 61 | - Must follow the structure: Lead with finding → Show evidence → Explain meaning → Caveats → Actionable takeaway. |
| 62 | - Define **6–8 FAQ pairs** (schema-only — not rendered on page). Each pair: |
| 63 | - `question`: a natural-language query ending with `?` that a real user would type |
| 64 | - `answer`: 2 sentences max, names specific numbers or named entities, directly answers the question |
| 65 | - Pass `faqPairs` to the layout component. |
| 66 | - Must include a Data Sources section at the bottom with numbered links, each with an `id="source-N"` anchor. Every source must include a hyperlink. Never leave a source as plain text without a URL. |
| 67 | - When directly citing a source in body text, use inline superscript footnotes referencing `#source-N`. Number |