claude-flow-novice 2.14.4 → 2.14.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/seo/SEO_TASK_MODE.md +892 -0
- package/.claude/commands/seo/seo-blog.md +428 -0
- package/.claude/commands/seo/seo-landing.md +91 -0
- package/.claude/commands/seo/seo-product.md +104 -0
- package/claude-assets/agents/cfn-dev-team/coordinators/epic-creator.md +120 -0
- package/claude-assets/agents/cfn-seo-team/AGENT_CREATION_REPORT.md +481 -0
- package/claude-assets/agents/cfn-seo-team/DELEGATION_MATRIX.md +371 -0
- package/claude-assets/agents/cfn-seo-team/HUMANIZER_PROMPTS.md +536 -0
- package/claude-assets/agents/cfn-seo-team/INTEGRATION_REQUIREMENTS.md +642 -0
- package/claude-assets/agents/cfn-seo-team/cfn-seo-coordinator.md +414 -0
- package/claude-assets/agents/cfn-seo-team/competitive-seo-analyst.md +423 -0
- package/claude-assets/agents/cfn-seo-team/content-atomization-specialist.md +580 -0
- package/claude-assets/agents/cfn-seo-team/content-seo-strategist.md +245 -0
- package/claude-assets/agents/cfn-seo-team/eeat-content-auditor.md +389 -0
- package/claude-assets/agents/cfn-seo-team/geo-optimization-expert.md +269 -0
- package/claude-assets/agents/cfn-seo-team/link-building-specialist.md +291 -0
- package/claude-assets/agents/cfn-seo-team/local-seo-optimizer.md +333 -0
- package/claude-assets/agents/cfn-seo-team/programmatic-seo-engineer.md +244 -0
- package/claude-assets/agents/cfn-seo-team/schema-markup-engineer.md +430 -0
- package/claude-assets/agents/cfn-seo-team/seo-analytics-specialist.md +376 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/accessibility-validator.md +565 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/audience-validator.md +484 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/branding-validator.md +452 -0
- package/claude-assets/agents/cfn-seo-team/seo-validators/humanizer-validator.md +333 -0
- package/claude-assets/agents/cfn-seo-team/technical-seo-specialist.md +228 -0
- package/claude-assets/commands/seo/SEO_TASK_MODE.md +892 -0
- package/claude-assets/commands/seo/seo-blog.md +428 -0
- package/claude-assets/commands/seo/seo-landing.md +91 -0
- package/claude-assets/commands/seo/seo-product.md +104 -0
- package/claude-assets/skills/seo-orchestration/SKILL.md +292 -0
- package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh +566 -0
- package/claude-assets/skills/seo-orchestration/orchestrate-seo.sh.backup +755 -0
- package/claude-assets/skills/seo-orchestration/validate-consensus.sh +270 -0
- package/dist/cli/config-manager.js +109 -91
- package/package.json +1 -1
|
@@ -0,0 +1,892 @@
|
|
|
1
|
+
# SEO Task Mode Guide
|
|
2
|
+
|
|
3
|
+
**Purpose:** Execute SEO content pipeline using Task() spawning from Main Chat (no coordinator agent)
|
|
4
|
+
|
|
5
|
+
**When to Use:**
|
|
6
|
+
- Debugging SEO pipeline issues
|
|
7
|
+
- Learning the 8-step process
|
|
8
|
+
- Single-step testing (keyword research only)
|
|
9
|
+
- Development of new SEO agents
|
|
10
|
+
|
|
11
|
+
**Cost:** $5-15 per full pipeline (Anthropic pricing for all agents)
|
|
12
|
+
|
|
13
|
+
**Alternative:** CLI Mode via `cfn-seo-coordinator` ($1/pipeline with Z.ai routing)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Table of Contents
|
|
18
|
+
|
|
19
|
+
1. [Quick Start - Full Pipeline](#quick-start-full-pipeline)
|
|
20
|
+
2. [8-Step Pipeline Guide](#8-step-pipeline-guide)
|
|
21
|
+
3. [Agent Selection by Step](#agent-selection-by-step)
|
|
22
|
+
4. [Sprint Workflow](#sprint-workflow)
|
|
23
|
+
5. [Validation Loop](#validation-loop)
|
|
24
|
+
6. [Single-Step Execution](#single-step-execution)
|
|
25
|
+
7. [Content Type Variations](#content-type-variations)
|
|
26
|
+
8. [Troubleshooting](#troubleshooting)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Quick Start - Full Pipeline
|
|
31
|
+
|
|
32
|
+
**Example Task:** "Write a blog post about preserving family stories for OurStories"
|
|
33
|
+
|
|
34
|
+
**Main Chat Execution:**
|
|
35
|
+
|
|
36
|
+
```javascript
|
|
37
|
+
// Step 1: Keyword Research
|
|
38
|
+
Task("seo-analytics-specialist", `
|
|
39
|
+
Perform keyword research for blog post topic: "preserving family stories"
|
|
40
|
+
|
|
41
|
+
Deliverables:
|
|
42
|
+
- Primary keyword (target keyword)
|
|
43
|
+
- 10-15 secondary keywords (search volume, difficulty, CPC)
|
|
44
|
+
- Long-tail keyword variations
|
|
45
|
+
- Related questions (People Also Ask)
|
|
46
|
+
|
|
47
|
+
Output: content/seo-data/keyword-research-family-stories.json
|
|
48
|
+
|
|
49
|
+
Success Criteria:
|
|
50
|
+
- Primary keyword identified with search volume data
|
|
51
|
+
- Keyword difficulty ≤60 (rankable)
|
|
52
|
+
- Mix of high-volume and low-competition keywords
|
|
53
|
+
`)
|
|
54
|
+
|
|
55
|
+
// Step 2: Competitor Analysis
|
|
56
|
+
Task("competitive-seo-analyst", `
|
|
57
|
+
Analyze top 3 competitors for keyword "preserve family stories"
|
|
58
|
+
|
|
59
|
+
Context:
|
|
60
|
+
- Primary keyword: [from Step 1 output]
|
|
61
|
+
- Target audience: Families, genealogists
|
|
62
|
+
|
|
63
|
+
Deliverables:
|
|
64
|
+
- Competitor content analysis (structure, word count, headers)
|
|
65
|
+
- Backlink profiles (domain authority, backlinks count)
|
|
66
|
+
- Content gaps (what competitors miss)
|
|
67
|
+
- SERP feature analysis (featured snippets, People Also Ask)
|
|
68
|
+
|
|
69
|
+
Output: content/seo-data/competitor-analysis-family-stories.md
|
|
70
|
+
|
|
71
|
+
Success Criteria:
|
|
72
|
+
- 3 competitors analyzed
|
|
73
|
+
- Content gaps identified (≥3 opportunities)
|
|
74
|
+
- SERP features mapped
|
|
75
|
+
`)
|
|
76
|
+
|
|
77
|
+
// Step 3: Content Outline
|
|
78
|
+
Task("content-seo-strategist", `
|
|
79
|
+
Create SEO-optimized content outline for "preserve family stories" blog post
|
|
80
|
+
|
|
81
|
+
Context:
|
|
82
|
+
- Keyword research: content/seo-data/keyword-research-family-stories.json
|
|
83
|
+
- Competitor analysis: content/seo-data/competitor-analysis-family-stories.md
|
|
84
|
+
- Brand: OurStories
|
|
85
|
+
- Target word count: 1500-2000 words
|
|
86
|
+
|
|
87
|
+
Deliverables:
|
|
88
|
+
- H1 title (includes primary keyword)
|
|
89
|
+
- 5-7 H2 sections
|
|
90
|
+
- H3 subsections where needed
|
|
91
|
+
- Internal linking opportunities
|
|
92
|
+
- CTA placement recommendations
|
|
93
|
+
|
|
94
|
+
Output: content/outlines/preserve-family-stories-outline.md
|
|
95
|
+
|
|
96
|
+
Success Criteria:
|
|
97
|
+
- Primary keyword in H1
|
|
98
|
+
- Secondary keywords distributed across H2s
|
|
99
|
+
- Natural flow (not keyword stuffed)
|
|
100
|
+
- Addresses user intent
|
|
101
|
+
`)
|
|
102
|
+
|
|
103
|
+
// Step 4: Research (External - Perplexity API)
|
|
104
|
+
// Note: This step uses Perplexity via OpenRouter, not a CFN agent
|
|
105
|
+
// Main Chat executes this directly or via a research-helper script
|
|
106
|
+
|
|
107
|
+
// Step 5: Content Writing
|
|
108
|
+
Task("content-seo-strategist", `
|
|
109
|
+
Write blog post following outline: content/outlines/preserve-family-stories-outline.md
|
|
110
|
+
|
|
111
|
+
Context:
|
|
112
|
+
- Outline: content/outlines/preserve-family-stories-outline.md
|
|
113
|
+
- Research sources: content/research/family-stories-research.md
|
|
114
|
+
- Brand voice: OurStories (warm, personal, empowering)
|
|
115
|
+
- Target audience: Families, genealogists, memory keepers
|
|
116
|
+
|
|
117
|
+
Requirements:
|
|
118
|
+
- 1500-2000 words
|
|
119
|
+
- Conversational, human tone (avoid AI language)
|
|
120
|
+
- Include personal examples/anecdotes
|
|
121
|
+
- Natural keyword integration
|
|
122
|
+
- Engaging introduction
|
|
123
|
+
- Strong CTA at end
|
|
124
|
+
|
|
125
|
+
Deliverables:
|
|
126
|
+
- Full blog post draft (markdown)
|
|
127
|
+
|
|
128
|
+
Output: content/drafts/preserve-family-stories.md
|
|
129
|
+
|
|
130
|
+
Success Criteria:
|
|
131
|
+
- Meets word count target
|
|
132
|
+
- Primary keyword appears 3-5 times naturally
|
|
133
|
+
- Conversational tone (no "delve into", "unlock potential")
|
|
134
|
+
- Clear value proposition
|
|
135
|
+
`)
|
|
136
|
+
|
|
137
|
+
// Step 6: SEO Optimization
|
|
138
|
+
Task("technical-seo-specialist", `
|
|
139
|
+
Optimize blog post for technical SEO
|
|
140
|
+
|
|
141
|
+
Context:
|
|
142
|
+
- Draft: content/drafts/preserve-family-stories.md
|
|
143
|
+
- Primary keyword: "preserve family stories"
|
|
144
|
+
- Target URL: /blog/preserve-family-stories
|
|
145
|
+
|
|
146
|
+
Tasks:
|
|
147
|
+
1. Meta title (50-60 chars, includes primary keyword)
|
|
148
|
+
2. Meta description (150-160 chars, compelling CTA)
|
|
149
|
+
3. Header optimization (H1, H2s include keywords)
|
|
150
|
+
4. Internal linking (3-5 relevant internal links)
|
|
151
|
+
5. Image alt text recommendations
|
|
152
|
+
6. URL slug optimization
|
|
153
|
+
7. Schema markup preparation (for Step 8)
|
|
154
|
+
|
|
155
|
+
Deliverables:
|
|
156
|
+
- Optimized blog post (with frontmatter metadata)
|
|
157
|
+
- SEO checklist (what was optimized)
|
|
158
|
+
|
|
159
|
+
Output: content/optimized/preserve-family-stories.md
|
|
160
|
+
|
|
161
|
+
Success Criteria:
|
|
162
|
+
- Meta title ≤60 chars, includes primary keyword
|
|
163
|
+
- Meta description compelling, ≤160 chars
|
|
164
|
+
- 3-5 internal links added
|
|
165
|
+
- Headers optimized (H1 has primary keyword)
|
|
166
|
+
`)
|
|
167
|
+
|
|
168
|
+
// Step 7: Validation (3 Validators in Parallel)
|
|
169
|
+
Task("humanizer-validator", `
|
|
170
|
+
Validate blog post for natural, human-like writing
|
|
171
|
+
|
|
172
|
+
Context:
|
|
173
|
+
- Article: content/optimized/preserve-family-stories.md
|
|
174
|
+
- Iteration: 1
|
|
175
|
+
|
|
176
|
+
Check for:
|
|
177
|
+
- AI-generated language patterns (red flags)
|
|
178
|
+
- Conversational tone
|
|
179
|
+
- Personal examples/anecdotes
|
|
180
|
+
- Varied sentence structure
|
|
181
|
+
|
|
182
|
+
Output Format:
|
|
183
|
+
- Confidence score: [0.0-1.0]
|
|
184
|
+
- Issues found (with line numbers)
|
|
185
|
+
- Specific rewrites recommended
|
|
186
|
+
|
|
187
|
+
Threshold: ≥0.75 to pass
|
|
188
|
+
`)
|
|
189
|
+
|
|
190
|
+
Task("branding-validator", `
|
|
191
|
+
Validate blog post alignment with OurStories brand
|
|
192
|
+
|
|
193
|
+
Context:
|
|
194
|
+
- Article: content/optimized/preserve-family-stories.md
|
|
195
|
+
- Brand: OurStories
|
|
196
|
+
- Iteration: 1
|
|
197
|
+
|
|
198
|
+
Check for:
|
|
199
|
+
- Brand voice consistency (warm, personal, empowering)
|
|
200
|
+
- Value proposition clarity
|
|
201
|
+
- Tone alignment
|
|
202
|
+
- Messaging consistency
|
|
203
|
+
|
|
204
|
+
Output Format:
|
|
205
|
+
- Confidence score: [0.0-1.0]
|
|
206
|
+
- Brand alignment issues
|
|
207
|
+
- Recommended adjustments
|
|
208
|
+
|
|
209
|
+
Threshold: ≥0.75 to pass
|
|
210
|
+
`)
|
|
211
|
+
|
|
212
|
+
Task("audience-validator", `
|
|
213
|
+
Validate blog post fit for target audience
|
|
214
|
+
|
|
215
|
+
Context:
|
|
216
|
+
- Article: content/optimized/preserve-family-stories.md
|
|
217
|
+
- Audience: Families, genealogists, memory keepers
|
|
218
|
+
- Iteration: 1
|
|
219
|
+
|
|
220
|
+
Check for:
|
|
221
|
+
- Resonance with audience pain points
|
|
222
|
+
- Appropriate complexity level
|
|
223
|
+
- Relatable examples
|
|
224
|
+
- Clear value for target personas
|
|
225
|
+
|
|
226
|
+
Output Format:
|
|
227
|
+
- Confidence score: [0.0-1.0]
|
|
228
|
+
- Audience fit issues
|
|
229
|
+
- Suggested improvements
|
|
230
|
+
|
|
231
|
+
Threshold: ≥0.75 to pass
|
|
232
|
+
`)
|
|
233
|
+
|
|
234
|
+
// Main Chat collects validator scores and calculates consensus
|
|
235
|
+
// IF consensus ≥0.95 → Proceed to Step 8
|
|
236
|
+
// IF consensus <0.95 → Iterate (spawn Step 5 again with validator feedback)
|
|
237
|
+
|
|
238
|
+
// Step 8: Publishing with Schema
|
|
239
|
+
Task("schema-markup-engineer", `
|
|
240
|
+
Add schema markup and prepare for publishing
|
|
241
|
+
|
|
242
|
+
Context:
|
|
243
|
+
- Article: content/optimized/preserve-family-stories.md
|
|
244
|
+
- URL: https://ourstories.com/blog/preserve-family-stories
|
|
245
|
+
- Author: OurStories Team
|
|
246
|
+
- Published: 2025-11-01
|
|
247
|
+
|
|
248
|
+
Tasks:
|
|
249
|
+
1. Add Article schema (JSON-LD)
|
|
250
|
+
2. Add BreadcrumbList schema
|
|
251
|
+
3. Add Organization schema
|
|
252
|
+
4. Validate schema with Google Rich Results Test
|
|
253
|
+
5. Final formatting (headings, lists, bold, italics)
|
|
254
|
+
|
|
255
|
+
Deliverables:
|
|
256
|
+
- Final blog post with embedded schema
|
|
257
|
+
- Schema validation report
|
|
258
|
+
|
|
259
|
+
Output: content/published/preserve-family-stories.md
|
|
260
|
+
|
|
261
|
+
Success Criteria:
|
|
262
|
+
- Valid Article schema (no errors in Rich Results Test)
|
|
263
|
+
- Schema includes all required properties
|
|
264
|
+
- Final formatting polished
|
|
265
|
+
`)
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 8-Step Pipeline Guide
|
|
271
|
+
|
|
272
|
+
### Step 1: Keyword Research
|
|
273
|
+
|
|
274
|
+
**Agent:** `seo-analytics-specialist`
|
|
275
|
+
|
|
276
|
+
**Inputs:**
|
|
277
|
+
- Topic/title (from user request)
|
|
278
|
+
- Target audience (optional)
|
|
279
|
+
|
|
280
|
+
**Outputs:**
|
|
281
|
+
- Primary keyword (target keyword)
|
|
282
|
+
- Secondary keywords (10-15 with metrics)
|
|
283
|
+
- Long-tail variations
|
|
284
|
+
- People Also Ask questions
|
|
285
|
+
- Search intent analysis
|
|
286
|
+
|
|
287
|
+
**Tools:**
|
|
288
|
+
- DataForSEO API (keyword metrics)
|
|
289
|
+
- Google Search Console (existing rankings)
|
|
290
|
+
- SE Ranking (keyword suggestions)
|
|
291
|
+
|
|
292
|
+
**Success Criteria:**
|
|
293
|
+
- Primary keyword identified (search volume >100/month)
|
|
294
|
+
- Keyword difficulty ≤60 (rankable)
|
|
295
|
+
- Mix of head terms and long-tail
|
|
296
|
+
- Search intent clear (informational/transactional/navigational)
|
|
297
|
+
|
|
298
|
+
**Output File:** `content/seo-data/keyword-research-[topic].json`
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
### Step 2: Competitor Analysis
|
|
303
|
+
|
|
304
|
+
**Agent:** `competitive-seo-analyst`
|
|
305
|
+
|
|
306
|
+
**Inputs:**
|
|
307
|
+
- Primary keyword (from Step 1)
|
|
308
|
+
- Target SERP position (default: top 3)
|
|
309
|
+
|
|
310
|
+
**Outputs:**
|
|
311
|
+
- Top 3 competitor analysis
|
|
312
|
+
- Content structure comparison
|
|
313
|
+
- Backlink profiles
|
|
314
|
+
- Content gaps (what competitors miss)
|
|
315
|
+
- SERP features (featured snippets, PAA, images)
|
|
316
|
+
|
|
317
|
+
**Tools:**
|
|
318
|
+
- DataForSEO API (SERP data)
|
|
319
|
+
- Ahrefs API (backlink analysis)
|
|
320
|
+
- SE Ranking (competitor keywords)
|
|
321
|
+
|
|
322
|
+
**Success Criteria:**
|
|
323
|
+
- 3 competitors analyzed
|
|
324
|
+
- Content gaps identified (≥3 opportunities)
|
|
325
|
+
- SERP features mapped
|
|
326
|
+
- Competitive advantage defined
|
|
327
|
+
|
|
328
|
+
**Output File:** `content/seo-data/competitor-analysis-[topic].md`
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
### Step 3: Content Outline
|
|
333
|
+
|
|
334
|
+
**Agent:** `content-seo-strategist`
|
|
335
|
+
|
|
336
|
+
**Inputs:**
|
|
337
|
+
- Keyword research (Step 1)
|
|
338
|
+
- Competitor analysis (Step 2)
|
|
339
|
+
- Brand voice guidelines
|
|
340
|
+
- Target word count
|
|
341
|
+
|
|
342
|
+
**Outputs:**
|
|
343
|
+
- H1 title (SEO-optimized)
|
|
344
|
+
- 5-7 H2 sections
|
|
345
|
+
- H3 subsections
|
|
346
|
+
- Internal linking strategy
|
|
347
|
+
- CTA placement
|
|
348
|
+
|
|
349
|
+
**Success Criteria:**
|
|
350
|
+
- Primary keyword in H1
|
|
351
|
+
- Secondary keywords in H2s (natural)
|
|
352
|
+
- Logical flow (answers user intent)
|
|
353
|
+
- Better structure than competitors
|
|
354
|
+
|
|
355
|
+
**Output File:** `content/outlines/[topic]-outline.md`
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### Step 4: Research
|
|
360
|
+
|
|
361
|
+
**Method:** Perplexity API via OpenRouter (no CFN agent)
|
|
362
|
+
|
|
363
|
+
**Inputs:**
|
|
364
|
+
- Content outline (Step 3)
|
|
365
|
+
- Research questions (extracted from outline)
|
|
366
|
+
|
|
367
|
+
**Outputs:**
|
|
368
|
+
- Research sources (5-10 credible sources)
|
|
369
|
+
- Key facts/statistics
|
|
370
|
+
- Expert quotes (if available)
|
|
371
|
+
- Data for content support
|
|
372
|
+
|
|
373
|
+
**Tools:**
|
|
374
|
+
- Perplexity API (via OpenRouter)
|
|
375
|
+
- Manual research (Google Scholar, industry publications)
|
|
376
|
+
|
|
377
|
+
**Success Criteria:**
|
|
378
|
+
- ≥5 credible sources cited
|
|
379
|
+
- Data supports outline sections
|
|
380
|
+
- Expert quotes included (where relevant)
|
|
381
|
+
|
|
382
|
+
**Output File:** `content/research/[topic]-research.md`
|
|
383
|
+
|
|
384
|
+
**Main Chat Execution:**
|
|
385
|
+
```bash
|
|
386
|
+
# Example: Research via Perplexity API
|
|
387
|
+
curl https://openrouter.ai/api/v1/chat/completions \
|
|
388
|
+
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
|
|
389
|
+
-H "Content-Type: application/json" \
|
|
390
|
+
-d '{
|
|
391
|
+
"model": "perplexity/pplx-70b-online",
|
|
392
|
+
"messages": [{
|
|
393
|
+
"role": "user",
|
|
394
|
+
"content": "Research: Best methods for preserving family stories. Include statistics, expert quotes, and credible sources."
|
|
395
|
+
}]
|
|
396
|
+
}' > content/research/family-stories-research.json
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
### Step 5: Content Writing
|
|
402
|
+
|
|
403
|
+
**Agent:** `content-seo-strategist`
|
|
404
|
+
|
|
405
|
+
**Inputs:**
|
|
406
|
+
- Outline (Step 3)
|
|
407
|
+
- Research (Step 4)
|
|
408
|
+
- Brand voice guidelines
|
|
409
|
+
- Target word count (1500-2000 for blog)
|
|
410
|
+
|
|
411
|
+
**Outputs:**
|
|
412
|
+
- Full blog post draft (markdown)
|
|
413
|
+
- Keyword integration (natural)
|
|
414
|
+
- Engaging introduction
|
|
415
|
+
- Clear CTA
|
|
416
|
+
|
|
417
|
+
**Success Criteria:**
|
|
418
|
+
- Meets word count target
|
|
419
|
+
- Conversational tone (no AI language)
|
|
420
|
+
- Primary keyword appears 3-5 times naturally
|
|
421
|
+
- Includes personal examples/anecdotes
|
|
422
|
+
- Clear value proposition
|
|
423
|
+
|
|
424
|
+
**Output File:** `content/drafts/[topic].md`
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
### Step 6: SEO Optimization
|
|
429
|
+
|
|
430
|
+
**Agents:** `technical-seo-specialist` + `programmatic-seo-engineer` (optional)
|
|
431
|
+
|
|
432
|
+
**Inputs:**
|
|
433
|
+
- Draft (Step 5)
|
|
434
|
+
- Primary keyword
|
|
435
|
+
- Target URL
|
|
436
|
+
|
|
437
|
+
**Tasks:**
|
|
438
|
+
1. Meta title (50-60 chars, includes keyword)
|
|
439
|
+
2. Meta description (150-160 chars, compelling)
|
|
440
|
+
3. Header optimization (H1, H2s)
|
|
441
|
+
4. Internal linking (3-5 links)
|
|
442
|
+
5. Image alt text
|
|
443
|
+
6. URL slug optimization
|
|
444
|
+
7. Schema markup preparation
|
|
445
|
+
|
|
446
|
+
**Success Criteria:**
|
|
447
|
+
- Meta title ≤60 chars, includes primary keyword
|
|
448
|
+
- Meta description compelling, ≤160 chars
|
|
449
|
+
- 3-5 internal links added
|
|
450
|
+
- Headers optimized
|
|
451
|
+
|
|
452
|
+
**Output File:** `content/optimized/[topic].md`
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
### Step 7: Validation
|
|
457
|
+
|
|
458
|
+
**Agents (Parallel):**
|
|
459
|
+
1. `humanizer-validator` (natural writing)
|
|
460
|
+
2. `branding-validator` (brand alignment)
|
|
461
|
+
3. `audience-validator` (persona fit)
|
|
462
|
+
|
|
463
|
+
**Inputs:**
|
|
464
|
+
- Optimized article (Step 6)
|
|
465
|
+
- Iteration number
|
|
466
|
+
|
|
467
|
+
**Outputs (Per Validator):**
|
|
468
|
+
- Confidence score (0.0-1.0)
|
|
469
|
+
- Issues found (with line numbers)
|
|
470
|
+
- Specific rewrites recommended
|
|
471
|
+
|
|
472
|
+
**Consensus Calculation:**
|
|
473
|
+
```javascript
|
|
474
|
+
// Main Chat collects scores
|
|
475
|
+
const humanizerScore = 0.85; // From humanizer-validator output
|
|
476
|
+
const brandingScore = 0.90; // From branding-validator output
|
|
477
|
+
const audienceScore = 0.92; // From audience-validator output
|
|
478
|
+
|
|
479
|
+
const consensus = (humanizerScore + brandingScore + audienceScore) / 3;
|
|
480
|
+
// consensus = 0.89
|
|
481
|
+
|
|
482
|
+
if (consensus >= 0.95) {
|
|
483
|
+
console.log("✅ Validation passed - Proceed to Step 8");
|
|
484
|
+
} else {
|
|
485
|
+
console.log(`🔄 Iteration required - Consensus: ${consensus.toFixed(2)}`);
|
|
486
|
+
// Spawn Step 5 again with validator feedback
|
|
487
|
+
}
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
**Thresholds:**
|
|
491
|
+
- Individual validator: ≥0.75
|
|
492
|
+
- Consensus: ≥0.95
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
### Step 8: Publishing with Schema
|
|
497
|
+
|
|
498
|
+
**Agent:** `schema-markup-engineer`
|
|
499
|
+
|
|
500
|
+
**Inputs:**
|
|
501
|
+
- Optimized article (Step 6, or final iteration from Step 7)
|
|
502
|
+
- URL
|
|
503
|
+
- Author
|
|
504
|
+
- Publication date
|
|
505
|
+
|
|
506
|
+
**Tasks:**
|
|
507
|
+
1. Add Article schema (JSON-LD)
|
|
508
|
+
2. Add BreadcrumbList schema
|
|
509
|
+
3. Add Organization schema
|
|
510
|
+
4. Validate with Google Rich Results Test
|
|
511
|
+
5. Final formatting
|
|
512
|
+
|
|
513
|
+
**Success Criteria:**
|
|
514
|
+
- Valid Article schema (no errors)
|
|
515
|
+
- All required properties included
|
|
516
|
+
- Rich Results Test passes
|
|
517
|
+
|
|
518
|
+
**Output File:** `content/published/[topic].md`
|
|
519
|
+
|
|
520
|
+
**Schema Example:**
|
|
521
|
+
```json
|
|
522
|
+
{
|
|
523
|
+
"@context": "https://schema.org",
|
|
524
|
+
"@type": "Article",
|
|
525
|
+
"headline": "Preserve Family Stories: Complete Guide for 2025",
|
|
526
|
+
"description": "Learn proven methods to preserve family stories...",
|
|
527
|
+
"author": {
|
|
528
|
+
"@type": "Organization",
|
|
529
|
+
"name": "OurStories"
|
|
530
|
+
},
|
|
531
|
+
"datePublished": "2025-11-01",
|
|
532
|
+
"dateModified": "2025-11-01",
|
|
533
|
+
"image": "https://ourstories.com/images/family-stories.jpg"
|
|
534
|
+
}
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## Agent Selection by Step
|
|
540
|
+
|
|
541
|
+
| Step | Primary Agent | Secondary Agent | Use When |
|
|
542
|
+
|------|---------------|-----------------|----------|
|
|
543
|
+
| 1. Keyword Research | seo-analytics-specialist | - | All content types |
|
|
544
|
+
| 2. Competitor Analysis | competitive-seo-analyst | - | Blog posts, competitive niches |
|
|
545
|
+
| 3. Content Outline | content-seo-strategist | - | All content types |
|
|
546
|
+
| 4. Research | Perplexity API (no agent) | - | Research-heavy content |
|
|
547
|
+
| 5. Writing | content-seo-strategist | - | All content types |
|
|
548
|
+
| 6. SEO Optimization | technical-seo-specialist | programmatic-seo-engineer | All content, programmatic at scale |
|
|
549
|
+
| 7. Validation | humanizer-validator | branding-validator, audience-validator | All content |
|
|
550
|
+
| 8. Publishing | schema-markup-engineer | - | All content |
|
|
551
|
+
|
|
552
|
+
**Additional Specialists (Use When):**
|
|
553
|
+
- `local-seo-optimizer` - Location pages, GBP content
|
|
554
|
+
- `programmatic-seo-engineer` - Template-based page generation (100+ pages)
|
|
555
|
+
- `geo-optimization-expert` - AI search optimization, citation tracking
|
|
556
|
+
- `link-building-specialist` - Backlink prospecting (post-publishing)
|
|
557
|
+
- `eeat-content-auditor` - E-E-A-T compliance, expert review
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
## Sprint Workflow
|
|
562
|
+
|
|
563
|
+
**When to Use Sprints:**
|
|
564
|
+
- Large content projects (10+ articles)
|
|
565
|
+
- Multi-phase rollouts (keyword research → outline → writing)
|
|
566
|
+
- Team collaboration (separate planning and execution)
|
|
567
|
+
|
|
568
|
+
**Sprint Pattern:**
|
|
569
|
+
|
|
570
|
+
**Sprint 1: Planning (Steps 1-3)**
|
|
571
|
+
```javascript
|
|
572
|
+
// Sprint Goal: Complete keyword research and outlines for 10 articles
|
|
573
|
+
|
|
574
|
+
Task("seo-analytics-specialist", `
|
|
575
|
+
Keyword research for 10 blog post topics
|
|
576
|
+
|
|
577
|
+
Topics:
|
|
578
|
+
1. Preserve family stories
|
|
579
|
+
2. Digital scrapbooking
|
|
580
|
+
3. Genealogy research tips
|
|
581
|
+
[... 7 more topics ...]
|
|
582
|
+
|
|
583
|
+
Deliverables:
|
|
584
|
+
- content/seo-data/keyword-research-sprint-1.json (all 10 topics)
|
|
585
|
+
|
|
586
|
+
Success: Primary keyword identified for each topic
|
|
587
|
+
`)
|
|
588
|
+
|
|
589
|
+
Task("content-seo-strategist", `
|
|
590
|
+
Create outlines for 10 blog posts
|
|
591
|
+
|
|
592
|
+
Context:
|
|
593
|
+
- Keyword research: content/seo-data/keyword-research-sprint-1.json
|
|
594
|
+
|
|
595
|
+
Deliverables:
|
|
596
|
+
- content/outlines/sprint-1/ (10 outline files)
|
|
597
|
+
|
|
598
|
+
Success: Each outline has 5-7 H2 sections, keywords integrated
|
|
599
|
+
`)
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
**Sprint 2: Writing (Steps 4-5)**
|
|
603
|
+
```javascript
|
|
604
|
+
// Sprint Goal: Write 10 blog post drafts
|
|
605
|
+
|
|
606
|
+
// Main Chat spawns 10 content-seo-strategist agents (one per article)
|
|
607
|
+
// Or sequentially if resource-constrained
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
**Sprint 3: Optimization & Publishing (Steps 6-8)**
|
|
611
|
+
```javascript
|
|
612
|
+
// Sprint Goal: Optimize, validate, and publish 10 articles
|
|
613
|
+
|
|
614
|
+
// Spawn technical-seo-specialist for each article
|
|
615
|
+
// Then validators in parallel
|
|
616
|
+
// Finally schema-markup-engineer for publishing
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
---
|
|
620
|
+
|
|
621
|
+
## Validation Loop
|
|
622
|
+
|
|
623
|
+
**Iteration Pattern:**
|
|
624
|
+
|
|
625
|
+
**Iteration 1:**
|
|
626
|
+
1. Content written (Step 5)
|
|
627
|
+
2. SEO optimized (Step 6)
|
|
628
|
+
3. Validators run (Step 7)
|
|
629
|
+
4. Consensus calculated
|
|
630
|
+
|
|
631
|
+
**IF Consensus <0.95:**
|
|
632
|
+
|
|
633
|
+
**Iteration 2:**
|
|
634
|
+
```javascript
|
|
635
|
+
// Main Chat spawns Step 5 again with validator feedback
|
|
636
|
+
|
|
637
|
+
Task("content-seo-strategist", `
|
|
638
|
+
Rewrite blog post addressing validator feedback
|
|
639
|
+
|
|
640
|
+
Context:
|
|
641
|
+
- Current draft: content/optimized/preserve-family-stories.md
|
|
642
|
+
- Validator feedback:
|
|
643
|
+
- Humanizer (0.75): Remove AI phrases ("delve into" on line 23, "unlock potential" on line 67)
|
|
644
|
+
- Branding (0.85): Strengthen OurStories value proposition in intro
|
|
645
|
+
- Audience (0.92): Add more specific examples for genealogists
|
|
646
|
+
|
|
647
|
+
Tasks:
|
|
648
|
+
1. Remove all AI-generated phrases
|
|
649
|
+
2. Rewrite intro with stronger OurStories messaging
|
|
650
|
+
3. Add 2-3 specific genealogy examples
|
|
651
|
+
|
|
652
|
+
Success: Address all validator feedback, maintain SEO optimization
|
|
653
|
+
`)
|
|
654
|
+
|
|
655
|
+
// Then re-run Step 6 (SEO Optimization) if needed
|
|
656
|
+
// Then re-run Step 7 (Validation)
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
**Iteration 3 (if needed):**
|
|
660
|
+
Repeat pattern until consensus ≥0.95
|
|
661
|
+
|
|
662
|
+
**Iteration Limit:** 3 iterations
|
|
663
|
+
- After 3 iterations, escalate to manual review or product owner decision
|
|
664
|
+
|
|
665
|
+
---
|
|
666
|
+
|
|
667
|
+
## Single-Step Execution
|
|
668
|
+
|
|
669
|
+
**Use Case:** Testing individual agents or debugging specific steps
|
|
670
|
+
|
|
671
|
+
**Example: Test Keyword Research Only**
|
|
672
|
+
|
|
673
|
+
```javascript
|
|
674
|
+
Task("seo-analytics-specialist", `
|
|
675
|
+
Test keyword research for topic: "preserve family stories"
|
|
676
|
+
|
|
677
|
+
Deliverables:
|
|
678
|
+
- Primary keyword
|
|
679
|
+
- 10 secondary keywords
|
|
680
|
+
|
|
681
|
+
Output: /tmp/test-keyword-research.json
|
|
682
|
+
`)
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
**Example: Test Validator Only**
|
|
686
|
+
|
|
687
|
+
```javascript
|
|
688
|
+
Task("humanizer-validator", `
|
|
689
|
+
Validate this sample paragraph for AI language:
|
|
690
|
+
|
|
691
|
+
"In today's digital age, preserving family stories has become more important than ever.
|
|
692
|
+
By leveraging modern technology, you can unlock the potential of your family's legacy
|
|
693
|
+
and embark on a journey to delve into your heritage."
|
|
694
|
+
|
|
695
|
+
Expected: Confidence ≤0.50 (AI language detected)
|
|
696
|
+
`)
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
---
|
|
700
|
+
|
|
701
|
+
## Content Type Variations
|
|
702
|
+
|
|
703
|
+
### Blog Post (Full Pipeline)
|
|
704
|
+
**Steps:** 1, 2, 3, 4, 5, 6, 7, 8
|
|
705
|
+
**Validators:** humanizer + branding + audience
|
|
706
|
+
**Word Count:** 1500-2000
|
|
707
|
+
**Focus:** Keyword optimization, natural writing, brand voice
|
|
708
|
+
|
|
709
|
+
### Landing Page
|
|
710
|
+
**Steps:** 1, 3, 5, 6, 7, 8 (skip competitor analysis, minimal research)
|
|
711
|
+
**Validators:** humanizer + branding + audience
|
|
712
|
+
**Word Count:** 800-1200
|
|
713
|
+
**Focus:** Conversion optimization, CTA strength, schema markup
|
|
714
|
+
|
|
715
|
+
### Product Page
|
|
716
|
+
**Steps:** 1, 5, 6, 7, 8 (minimal outline, focus on schema)
|
|
717
|
+
**Validators:** humanizer + audience (branding optional)
|
|
718
|
+
**Word Count:** 400-800
|
|
719
|
+
**Focus:** Product schema, technical SEO, conversion
|
|
720
|
+
|
|
721
|
+
### Local Business Content
|
|
722
|
+
**Steps:** 1, 3, 5, 6, 7, 8 + `local-seo-optimizer`
|
|
723
|
+
**Validators:** humanizer + audience
|
|
724
|
+
**Word Count:** 600-1000
|
|
725
|
+
**Focus:** Local keywords, GBP integration, LocalBusiness schema
|
|
726
|
+
|
|
727
|
+
### Programmatic SEO (100+ Pages)
|
|
728
|
+
**Steps:** 1, 3, 6, 7, 8 (use templates, not custom writing)
|
|
729
|
+
**Agents:** `programmatic-seo-engineer` for Step 6
|
|
730
|
+
**Validators:** humanizer + audience (scaled validation)
|
|
731
|
+
**Word Count:** Variable (template-driven)
|
|
732
|
+
**Focus:** Template quality, duplicate content prevention, schema at scale
|
|
733
|
+
|
|
734
|
+
---
|
|
735
|
+
|
|
736
|
+
## Troubleshooting
|
|
737
|
+
|
|
738
|
+
### Validator Consensus Too Low
|
|
739
|
+
|
|
740
|
+
**Problem:** Validators consistently score <0.75
|
|
741
|
+
|
|
742
|
+
**Solutions:**
|
|
743
|
+
1. Check validator instructions (are they too strict?)
|
|
744
|
+
2. Review validator feedback (what specific issues?)
|
|
745
|
+
3. Provide clearer brand voice guidelines
|
|
746
|
+
4. Use more specific examples in writing prompt
|
|
747
|
+
|
|
748
|
+
**Example:**
|
|
749
|
+
```javascript
|
|
750
|
+
// Before (vague)
|
|
751
|
+
Task("content-seo-strategist", "Write blog post about family stories")
|
|
752
|
+
|
|
753
|
+
// After (specific)
|
|
754
|
+
Task("content-seo-strategist", `
|
|
755
|
+
Write blog post about preserving family stories
|
|
756
|
+
|
|
757
|
+
Brand Voice: Warm, personal, empowering (like talking to a family member)
|
|
758
|
+
Tone: Conversational, not academic
|
|
759
|
+
Examples: Include specific scenarios (recording grandparent interviews, digitizing photos)
|
|
760
|
+
Avoid: Corporate jargon, AI phrases, generic advice
|
|
761
|
+
`)
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
### Keyword Research Returns No Results
|
|
765
|
+
|
|
766
|
+
**Problem:** DataForSEO API returns no keyword data
|
|
767
|
+
|
|
768
|
+
**Solutions:**
|
|
769
|
+
1. Check API credentials (DATAFORSEO_EMAIL, DATAFORSEO_PASSWORD)
|
|
770
|
+
2. Verify API quota not exceeded
|
|
771
|
+
3. Try broader search terms
|
|
772
|
+
4. Fallback to manual research (Google Keyword Planner, Ahrefs)
|
|
773
|
+
|
|
774
|
+
### Schema Validation Fails
|
|
775
|
+
|
|
776
|
+
**Problem:** Google Rich Results Test shows errors
|
|
777
|
+
|
|
778
|
+
**Solutions:**
|
|
779
|
+
1. Check required properties (headline, author, datePublished)
|
|
780
|
+
2. Validate image URLs (must be absolute, not relative)
|
|
781
|
+
3. Ensure date format is ISO 8601 (YYYY-MM-DD)
|
|
782
|
+
4. Test schema at https://validator.schema.org/
|
|
783
|
+
|
|
784
|
+
### Writing Too "AI-Like"
|
|
785
|
+
|
|
786
|
+
**Problem:** Humanizer validator scores ≤0.60
|
|
787
|
+
|
|
788
|
+
**Solutions:**
|
|
789
|
+
1. Add specific examples/anecdotes to prompt
|
|
790
|
+
2. Request conversational tone explicitly
|
|
791
|
+
3. Provide list of AI phrases to avoid
|
|
792
|
+
4. Include sample paragraphs in desired style
|
|
793
|
+
|
|
794
|
+
**Example:**
|
|
795
|
+
```javascript
|
|
796
|
+
Task("content-seo-strategist", `
|
|
797
|
+
Write blog post with HUMAN, conversational tone
|
|
798
|
+
|
|
799
|
+
Style Guide:
|
|
800
|
+
- ✅ Use contractions (don't, can't, you'll)
|
|
801
|
+
- ✅ Address reader directly (you, your)
|
|
802
|
+
- ✅ Include specific examples (not generic advice)
|
|
803
|
+
- ❌ NO "delve into", "unlock potential", "embark on journey"
|
|
804
|
+
- ❌ NO "In today's digital age" openings
|
|
805
|
+
- ❌ NO corporate jargon
|
|
806
|
+
|
|
807
|
+
Example paragraph in desired style:
|
|
808
|
+
"Think about the last family gathering. Did Grandma tell that story about her first job?
|
|
809
|
+
Those stories matter. Here's how to save them before they're gone."
|
|
810
|
+
`)
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
---
|
|
814
|
+
|
|
815
|
+
## Cost Comparison: Task Mode vs CLI Mode
|
|
816
|
+
|
|
817
|
+
| Execution Mode | Cost/Pipeline | Use Case |
|
|
818
|
+
|----------------|---------------|----------|
|
|
819
|
+
| **Task Mode** (this guide) | $5-15 | Debugging, learning, single articles |
|
|
820
|
+
| **CLI Mode** (cfn-seo-coordinator) | $1 | Production, bulk content, cost optimization |
|
|
821
|
+
|
|
822
|
+
**When Task Mode Makes Sense:**
|
|
823
|
+
- Learning the SEO pipeline
|
|
824
|
+
- Debugging agent behavior
|
|
825
|
+
- Testing new validators
|
|
826
|
+
- Single-article projects (<5 articles)
|
|
827
|
+
|
|
828
|
+
**When to Switch to CLI Mode:**
|
|
829
|
+
- Production content creation
|
|
830
|
+
- Bulk article generation (10+ articles)
|
|
831
|
+
- Ongoing content programs
|
|
832
|
+
- Cost-sensitive projects
|
|
833
|
+
|
|
834
|
+
**Switching to CLI Mode:**
|
|
835
|
+
```bash
|
|
836
|
+
# Instead of Task() spawning, use coordinator
|
|
837
|
+
/cfn-seo-cli "Write blog post about preserving family stories for OurStories"
|
|
838
|
+
|
|
839
|
+
# Coordinator handles all agent spawning via CLI (Z.ai routing)
|
|
840
|
+
# Same 8-step pipeline, 95% cost savings
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
---
|
|
844
|
+
|
|
845
|
+
## Related Documentation
|
|
846
|
+
|
|
847
|
+
- **CLI Mode Coordinator:** `.claude/agents/cfn-seo-team/cfn-seo-coordinator.md`
|
|
848
|
+
- **Agent Delegation Matrix:** `.claude/agents/cfn-seo-team/DELEGATION_MATRIX.md`
|
|
849
|
+
- **Integration Requirements:** `.claude/agents/cfn-seo-team/INTEGRATION_REQUIREMENTS.md`
|
|
850
|
+
- **Validator Guides:**
|
|
851
|
+
- `.claude/agents/cfn-seo-team/seo-validators/humanizer-validator.md`
|
|
852
|
+
- `.claude/agents/cfn-seo-team/seo-validators/branding-validator.md`
|
|
853
|
+
- `.claude/agents/cfn-seo-team/seo-validators/audience-validator.md`
|
|
854
|
+
|
|
855
|
+
---
|
|
856
|
+
|
|
857
|
+
## Quick Reference: Agent Spawning by Step
|
|
858
|
+
|
|
859
|
+
```javascript
|
|
860
|
+
// Step 1
|
|
861
|
+
Task("seo-analytics-specialist", "Keyword research for [topic]")
|
|
862
|
+
|
|
863
|
+
// Step 2
|
|
864
|
+
Task("competitive-seo-analyst", "Analyze competitors for [keyword]")
|
|
865
|
+
|
|
866
|
+
// Step 3
|
|
867
|
+
Task("content-seo-strategist", "Create outline for [topic]")
|
|
868
|
+
|
|
869
|
+
// Step 4 (no agent - API call)
|
|
870
|
+
// curl Perplexity API for research
|
|
871
|
+
|
|
872
|
+
// Step 5
|
|
873
|
+
Task("content-seo-strategist", "Write blog post from outline")
|
|
874
|
+
|
|
875
|
+
// Step 6
|
|
876
|
+
Task("technical-seo-specialist", "Optimize [draft] for SEO")
|
|
877
|
+
|
|
878
|
+
// Step 7 (parallel)
|
|
879
|
+
Task("humanizer-validator", "Validate [article] for natural writing")
|
|
880
|
+
Task("branding-validator", "Validate [article] for brand alignment")
|
|
881
|
+
Task("audience-validator", "Validate [article] for audience fit")
|
|
882
|
+
|
|
883
|
+
// Step 8
|
|
884
|
+
Task("schema-markup-engineer", "Add schema markup and publish [article]")
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
---
|
|
888
|
+
|
|
889
|
+
**Version:** 1.0.0
|
|
890
|
+
**Last Updated:** 2025-11-01
|
|
891
|
+
**Maintained By:** CFN SEO Team
|
|
892
|
+
**Feedback:** Share your SEO pipeline improvements!
|