Blog Post
End-to-end workflow for creating and updating blog posts. Orchestrates multi-role collaboration: Agent(product-manager) (research, brief, quality gate), Agent(content-writer) (authoring), Agent(seo-engineer) (optimization). Includes a review loop until the post meets quality standards.
0. Gather Context
Read AGENTS.md at the project root to identify:
- Product description and domain (shapes blog topic framing)
- Blog conventions (directory, naming, frontmatter format)
- Brand voice and audience
If marketing/MARKETING.md exists, read it for positioning and content strategy.
1. Define Scope
Ask the user (or extract from context):
- Action: Create new post / update existing / create series
- Topic: Subject, angle, or user-provided idea
- Target audience: Who reads this? (developers, decision-makers, general public)
- Goal: Educate, announce, promote, thought leadership, SEO traffic
- Constraints: Deadline, word count, related posts, brand guidelines
If updating an existing post — read it first, note what needs to change.
2. Research and Content Brief
Apply Agent(product-manager).
2a. Topic Research
Conduct research before writing:
- Web search — find 3-5 top-ranking articles on the topic. Note their angle, depth, and gaps
- Competitive analysis — what do competitors cover? What's missing in the market?
- Data and statistics — find recent, citable data points (studies, surveys, benchmarks)
- Keyword research — identify primary keyword, 2-3 secondary keywords, search intent (informational / commercial / transactional)
- Existing content audit — scan the project's blog directory for related posts. Identify cross-link opportunities
2b. Content Brief
Produce a brief using the Blog Content Brief Template from content-creation skill (content-tools-guide.md → Content Research Workflows section). The brief must include at minimum:
- Working title and angle (what makes this post unique)
- Target audience and search intent (primary + secondary keywords)
- Outline (H2 sections with what each covers)
- Key data points (stats with sources from research)
- Cross-link opportunities (existing posts to link to/from)
- Visual needs (cover image, diagrams, screenshots)
- Word count target
Present the brief to the user. Wait for user approval before proceeding. Adjust outline based on feedback.
3. Write Draft
Apply Agent(content-writer). Use content-creation skill — Blog Post pattern from page-content-patterns.md.
3a. Create the Post File
- Read project's
AGENTS.md — get blog file conventions (directory, frontmatter format, naming)
- Create the file with correct frontmatter as defined in the project's conventions
- If no project conventions exist — use
kebab-case.md naming, ask the user about frontmatter format
3b. Write Content
Follow the approved outline. For each section:
- Hook introduction — surprising stat, question, or pain point in the first paragraph
- Structured body — short paragraphs (2-3 sentences), break up with lists, tables, code blocks, blockquotes
- Internal links — minimum 3 links to existing blog posts or pages (from brief's cross-link list)
- External links — 1-2 authoritative sources (cite data points from research)
- Key takeaways — bullet list summarizing the post
- CTA — natural, value-first call to action related to the topic
3c. Visual Direction
For each visual need identified in the brief:
- Specify alt text (descriptive, includes keyword where natural)
- Note image placement relative to content
- If cover image needed — describe desired style, mood, composition
4. GEO/AEO Structure Pass
Apply geo-writer skill. This step is mandatory for all blog content.
- Macro structure — single literal H1, 5-9 H2 sections each phrased as a standalone question or declarative topic, TL;DR at the end
- Meso chunking — paragraphs 40-80 words (cap 120), sections 120-180 words, one idea per paragraph, a statistic or named source every 150-200 words
- Micro emphasis — bold 3-5 most quotable phrases per section, bullet lists for 3+ items, tables for 2+ entity comparisons
- Answer-first check — the first sentence of every H2/H3 fully answers the implied question in 30-60 words
- Entity clarity — no pronoun drift across sections, canonical brand terms used verbatim (from
marketing/MARKETING.md)
- High-leverage formats — include FAQ block (4-8 Q&A), comparison table, or HowTo steps where natural
- Schema block — prepare
Article + Person + FAQPage JSON-LD (covered in Step 5 SEO pass)
The geo-content rule enforces this for all public-facing text intended to be cited by AI engines.
4.5. Humanize Content
Apply humanizer skill. This step is mandatory for all blog content.
- Scan the draft for AI writing patterns (see
humanizer skill pattern catalog)
- Rewrite problematic sections — remove AI-isms, add natural voice
- Anti-AI audit — ask "What makes this obviously AI generated?", list remaining tells, revise
- Verify the humanized text preserves accuracy, maintains the approved outline, and sounds natural when read aloud
GEO and humanizer are complementary: GEO optimizes structure for extraction, humanizer optimizes voice. Run GEO first, humanizer second. The humanize-content rule enforces the humanizer pass for all public-facing text.
5. SEO Optimization
Apply Agent(seo-engineer).
Run an SEO pass on the draft:
4a. On-Page SEO
| Element |
Check |
| Title tag |
Primary keyword, compelling, 50-60 characters |
| Meta description |
Unique, includes keyword, 120-160 characters |
| H1 |
Matches title, one per page |
| Heading hierarchy |
Logical H1→H2→H3, secondary keywords in H2s naturally |
| URL / slug |
Short, descriptive, hyphenated, includes keyword |
| First paragraph |
Contains primary keyword naturally |
| Image alt text |
Descriptive, keyword where natural |
4b. Internal Link Audit
4c. Structured Data (GEO mandatory)
- Add
Article or BlogPosting JSON-LD + Person for author (with sameAs links) + Organization
- Add
FAQPage JSON-LD if the post contains a FAQ block (questions must match body phrasing verbatim, no duplicate marketing prose)
- Add
HowTo JSON-LD for tutorials with 3-8 steps
- Verify:
headline, author.sameAs, datePublished, dateModified, description, image
- Validate in Google Rich Results Test and schema.org/validator before merge
4d. Discovery Assets
6. Quality Review
Apply Agent(product-manager).
Review the complete post against the original brief:
6a. Review Checklist
6b. Decision Gate
| Result |
Action |
| All checks pass |
Proceed to Step 7 |
| Content issues (gaps, accuracy, tone) |
Route to Step 3 with specific feedback |
| Structure issues (buried lede, walls of text, missing answer-first sections) |
Route to Step 4 (GEO pass) |
| AI-sounding text detected |
Route to Step 4.5 (humanizer) with specific patterns to fix |
| SEO / schema issues (meta, links, structured data) |
Route to Step 5 with specific feedback |
| Brief was wrong (topic shifted, audience changed) |
Route to Step 2 to revise brief |
Present review findings to the user. If issues found — list them explicitly with the routing decision. Repeat the loop until the review passes.
7. Publish
7a. Set Publish Status
Based on user intent:
| Intent |
Action |
| Publish now |
Set frontmatter status to published, set publish date to today |
| Schedule for later |
Set status to draft, note the target publish date |
| Part of a series |
Set status to draft, add series metadata, link to previous/next parts |
7b. Final File Checks
7c. Discovery Assets Update
8. Summary
## Blog Post Summary
- **Title**: [post title]
- **File**: [file path]
- **Status**: [published / draft / scheduled for DATE]
- **Topic**: [one-sentence summary]
- **Target keyword**: [primary keyword]
- **Word count**: [count]
- **Roles applied**: Agent(product-manager) → Agent(content-writer) → geo-writer → humanizer → Agent(seo-engineer) → Agent(product-manager)
- **Review rounds**: [number of iterations]
- **Cross-links added**: [count — list of linked posts]
- **Discovery assets**: [llms.txt updated: yes/no, sitemap: auto/manual]
- **Follow-ups**: [if any — e.g., create cover image, schedule social media]
Content Series Pattern
When creating a multi-part series:
- Plan all parts upfront — titles, topics, publish order in the content brief (Step 2)
- Cross-link between parts — each post links to previous and next in series
- Teaser for upcoming parts — end each post with a preview: "In Part 2, we'll cover [topic]"
- Draft all parts before publishing the first — ensures consistency and cross-links work
- Stagger publishing — space parts 3-7 days apart for engagement
- On publish day — update previous part's teaser to a real link, remove any "(coming soon)" notes
Integration
- Roles:
Agent(product-manager) (research, brief, review), Agent(content-writer) (authoring), Agent(seo-engineer) (optimization)
- Skills:
content-creation skill (Blog Post pattern, AI generation tools, content brief template), geo-writer skill (GEO/AEO structure pass — step 4), humanizer skill (AI voice pattern removal — step 4.5)
- Rules:
geo-content (auto-enforces GEO structure and schema on public-facing text), humanize-content (auto-enforces humanizer pass)
- Follow-up:
/seo-review (deep SEO audit if needed), /pre-commit, /create-pr
- Related:
/docs (technical documentation), /ui-ux-design (visual design for blog assets)
1---2name: blog-post3description: Blog post workflow — research topic, create content brief, write article, SEO optimize, quality review with feedback loop. Orchestrates product-manager, content-writer, and seo-engineer roles for public blog content creation and updates.4---56# Blog Post78End-to-end workflow for creating and updating blog posts. Orchestrates multi-role collaboration: `Agent(product-manager)` (research, brief, quality gate), `Agent(content-writer)` (authoring), `Agent(seo-engineer)` (optimization). Includes a review loop until the post meets quality standards.910## 0. Gather Context1112Read `AGENTS.md` at the project root to identify:13- Product description and domain (shapes blog topic framing)14- Blog conventions (directory, naming, frontmatter format)15- Brand voice and audience1617If `marketing/MARKETING.md` exists, read it for positioning and content strategy.1819## 1. Define Scope2021Ask the user (or extract from context):2223- **Action**: Create new post / update existing / create series24- **Topic**: Subject, angle, or user-provided idea25- **Target audience**: Who reads this? (developers, decision-makers, general public)26- **Goal**: Educate, announce, promote, thought leadership, SEO traffic27- **Constraints**: Deadline, word count, related posts, brand guidelines2829If updating an existing post — read it first, note what needs to change.3031## 2. Research and Content Brief3233**Apply `Agent(product-manager)`.**3435### 2a. Topic Research3637Conduct research before writing:38391. **Web search** — find 3-5 top-ranking articles on the topic. Note their angle, depth, and gaps402. **Competitive analysis** — what do competitors cover? What's missing in the market?413. **Data and statistics** — find recent, citable data points (studies, surveys, benchmarks)424. **Keyword research** — identify primary keyword, 2-3 secondary keywords, search intent (informational / commercial / transactional)435. **Existing content audit** — scan the project's blog directory for related posts. Identify cross-link opportunities4445### 2b. Content Brief4647Produce a brief using the **Blog Content Brief Template** from `content-creation` skill (`content-tools-guide.md` → Content Research Workflows section). The brief must include at minimum:4849- **Working title and angle** (what makes this post unique)50- **Target audience and search intent** (primary + secondary keywords)51- **Outline** (H2 sections with what each covers)52- **Key data points** (stats with sources from research)53- **Cross-link opportunities** (existing posts to link to/from)54- **Visual needs** (cover image, diagrams, screenshots)55- **Word count target**5657Present the brief to the user. **Wait for user approval before proceeding.** Adjust outline based on feedback.5859## 3. Write Draft6061**Apply `Agent(content-writer)`.** Use `content-creation` skill — Blog Post pattern from `page-content-patterns.md`.6263### 3a. Create the Post File64651. **Read project's `AGENTS.md`** — get blog file conventions (directory, frontmatter format, naming)662. **Create the file** with correct frontmatter as defined in the project's conventions673. If no project conventions exist — use `kebab-case.md` naming, ask the user about frontmatter format6869### 3b. Write Content7071Follow the approved outline. For each section:7273- **Hook introduction** — surprising stat, question, or pain point in the first paragraph74- **Structured body** — short paragraphs (2-3 sentences), break up with lists, tables, code blocks, blockquotes75- **Internal links** — minimum 3 links to existing blog posts or pages (from brief's cross-link list)76- **External links** — 1-2 authoritative sources (cite data points from research)77- **Key takeaways** — bullet list summarizing the post78- **CTA** — natural, value-first call to action related to the topic7980### 3c. Visual Direction8182For each visual need identified in the brief:8384- Specify alt text (descriptive, includes keyword where natural)85- Note image placement relative to content86- If cover image needed — describe desired style, mood, composition8788## 4. GEO/AEO Structure Pass8990**Apply `geo-writer` skill.** This step is mandatory for all blog content.91921. **Macro structure** — single literal H1, 5-9 H2 sections each phrased as a standalone question or declarative topic, TL;DR at the end932. **Meso chunking** — paragraphs 40-80 words (cap 120), sections 120-180 words, one idea per paragraph, a statistic or named source every 150-200 words943. **Micro emphasis** — bold 3-5 most quotable phrases per section, bullet lists for 3+ items, tables for 2+ entity comparisons954. **Answer-first check** — the first sentence of every H2/H3 fully answers the implied question in 30-60 words965. **Entity clarity** — no pronoun drift across sections, canonical brand terms used verbatim (from `marketing/MARKETING.md`)976. **High-leverage formats** — include FAQ block (4-8 Q&A), comparison table, or HowTo steps where natural987. **Schema block** — prepare `Article` + `Person` + `FAQPage` JSON-LD (covered in Step 5 SEO pass)99100The `geo-content` rule enforces this for all public-facing text intended to be cited by AI engines.101102## 4.5. Humanize Content103104**Apply `humanizer` skill.** This step is mandatory for all blog content.1051061. **Scan the draft** for AI writing patterns (see `humanizer` skill pattern catalog)1072. **Rewrite** problematic sections — remove AI-isms, add natural voice1083. **Anti-AI audit** — ask "What makes this obviously AI generated?", list remaining tells, revise1094. **Verify** the humanized text preserves accuracy, maintains the approved outline, and sounds natural when read aloud110111GEO and humanizer are complementary: GEO optimizes structure for extraction, humanizer optimizes voice. Run GEO first, humanizer second. The `humanize-content` rule enforces the humanizer pass for all public-facing text.112113## 5. SEO Optimization114115**Apply `Agent(seo-engineer)`.**116117Run an SEO pass on the draft:118119### 4a. On-Page SEO120121| Element | Check |122|---|---|123| Title tag | Primary keyword, compelling, 50-60 characters |124| Meta description | Unique, includes keyword, 120-160 characters |125| H1 | Matches title, one per page |126| Heading hierarchy | Logical H1→H2→H3, secondary keywords in H2s naturally |127| URL / slug | Short, descriptive, hyphenated, includes keyword |128| First paragraph | Contains primary keyword naturally |129| Image alt text | Descriptive, keyword where natural |130131### 4b. Internal Link Audit132133- [ ] Minimum 3 internal links with descriptive anchor text134- [ ] Check all internal links are valid (no broken references)135- [ ] Anchor text is descriptive (not "click here" or "read more")136- [ ] Links are contextually relevant (not forced)137138### 4c. Structured Data (GEO mandatory)139140- Add `Article` or `BlogPosting` JSON-LD + `Person` for author (with `sameAs` links) + `Organization`141- Add `FAQPage` JSON-LD if the post contains a FAQ block (questions must match body phrasing verbatim, no duplicate marketing prose)142- Add `HowTo` JSON-LD for tutorials with 3-8 steps143- Verify: `headline`, `author.sameAs`, `datePublished`, `dateModified`, `description`, `image`144- Validate in Google Rich Results Test and schema.org/validator before merge145146### 4d. Discovery Assets147148- [ ] New post URL will be included in sitemap (verify sitemap config)149- [ ] `robots.txt` does not block the blog path150- [ ] Update `llms.txt` if the project maintains one — add the new post entry151- [ ] Verify canonical URL is correct152153## 6. Quality Review154155**Apply `Agent(product-manager)`.**156157Review the complete post against the original brief:158159### 6a. Review Checklist160161<review_checklist>162- [ ] **Brief compliance** — all outline sections covered, angle maintained163- [ ] **Accuracy** — facts, statistics, and claims are correct and cited164- [ ] **Audience fit** — language and depth match the target audience165- [ ] **Completeness** — no sections feel rushed or incomplete166- [ ] **Cross-links** — minimum 3 internal links present and relevant167- [ ] **CTA** — natural, value-first, not aggressive168- [ ] **Visual direction** — cover image and inline visuals specified169- [ ] **SEO** — title, meta, headings, keywords all optimized170- [ ] **No secrets or PII** — no internal data, credentials, or personal info171- [ ] **Brand voice** — consistent with project tone and terminology172</review_checklist>173174### 6b. Decision Gate175176| Result | Action |177|---|---|178| All checks pass | Proceed to Step 7 |179| Content issues (gaps, accuracy, tone) | Route to **Step 3** with specific feedback |180| Structure issues (buried lede, walls of text, missing answer-first sections) | Route to **Step 4** (GEO pass) |181| AI-sounding text detected | Route to **Step 4.5** (humanizer) with specific patterns to fix |182| SEO / schema issues (meta, links, structured data) | Route to **Step 5** with specific feedback |183| Brief was wrong (topic shifted, audience changed) | Route to **Step 2** to revise brief |184185**Present review findings to the user.** If issues found — list them explicitly with the routing decision. Repeat the loop until the review passes.186187## 7. Publish188189### 7a. Set Publish Status190191Based on user intent:192193| Intent | Action |194|---|---|195| Publish now | Set frontmatter status to published, set publish date to today |196| Schedule for later | Set status to draft, note the target publish date |197| Part of a series | Set status to draft, add series metadata, link to previous/next parts |198199### 7b. Final File Checks200201- [ ] Frontmatter is complete (all required fields populated)202- [ ] File is in the correct directory203- [ ] File name follows project conventions204- [ ] No TODO or placeholder text remains in the content205- [ ] All images referenced exist or have clear generation instructions206207### 7c. Discovery Assets Update208209- [ ] `llms.txt` updated (if maintained)210- [ ] Sitemap will pick up new file automatically (verify config)211- [ ] No `noindex` on the new page212213## 8. Summary214215```216## Blog Post Summary217218- **Title**: [post title]219- **File**: [file path]220- **Status**: [published / draft / scheduled for DATE]221- **Topic**: [one-sentence summary]222- **Target keyword**: [primary keyword]223- **Word count**: [count]224- **Roles applied**: Agent(product-manager) → Agent(content-writer) → geo-writer → humanizer → Agent(seo-engineer) → Agent(product-manager)225- **Review rounds**: [number of iterations]226- **Cross-links added**: [count — list of linked posts]227- **Discovery assets**: [llms.txt updated: yes/no, sitemap: auto/manual]228- **Follow-ups**: [if any — e.g., create cover image, schedule social media]229```230231## Content Series Pattern232233When creating a multi-part series:2342351. **Plan all parts upfront** — titles, topics, publish order in the content brief (Step 2)2362. **Cross-link between parts** — each post links to previous and next in series2373. **Teaser for upcoming parts** — end each post with a preview: "In Part 2, we'll cover [topic]"2384. **Draft all parts** before publishing the first — ensures consistency and cross-links work2395. **Stagger publishing** — space parts 3-7 days apart for engagement2406. **On publish day** — update previous part's teaser to a real link, remove any "(coming soon)" notes241242## Integration243244- **Roles**: `Agent(product-manager)` (research, brief, review), `Agent(content-writer)` (authoring), `Agent(seo-engineer)` (optimization)245- **Skills**: `content-creation` skill (Blog Post pattern, AI generation tools, content brief template), `geo-writer` skill (GEO/AEO structure pass — step 4), `humanizer` skill (AI voice pattern removal — step 4.5)246- **Rules**: `geo-content` (auto-enforces GEO structure and schema on public-facing text), `humanize-content` (auto-enforces humanizer pass)247- **Follow-up**: `/seo-review` (deep SEO audit if needed), `/pre-commit`, `/create-pr`248- **Related**: `/docs` (technical documentation), `/ui-ux-design` (visual design for blog assets)