claude-flow-novice 2.14.4 → 2.14.6
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-dev-team/test-agent.md +0 -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.map +1 -1
- package/package.json +1 -1
- package/scripts/init-project.js +10 -0
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Generate SEO-optimized blog post through 8-step content pipeline"
|
|
3
|
+
argument-hint: "<target keyword> [--brand=BRAND] [--audience=AUDIENCE]"
|
|
4
|
+
allowed-tools: ["Task", "TodoWrite", "Read", "Write", "Bash"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO Blog Post Generator - Full Pipeline
|
|
8
|
+
|
|
9
|
+
Execute complete 8-step SEO content pipeline for blog posts with validation consensus ≥0.95.
|
|
10
|
+
|
|
11
|
+
🚨 **AUTONOMOUS SEO CONTENT GENERATION**
|
|
12
|
+
|
|
13
|
+
**Target Keyword**: $ARGUMENTS
|
|
14
|
+
|
|
15
|
+
## SEO Pipeline Structure (8 Steps)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
STEP 1: Keyword Research (DataForSEO API)
|
|
19
|
+
↓
|
|
20
|
+
STEP 2: Competitor Analysis (SERP top 5)
|
|
21
|
+
↓
|
|
22
|
+
STEP 3: Outline Generation (H1, H2, H3 structure)
|
|
23
|
+
↓
|
|
24
|
+
STEP 4: Research & Citations (Perplexity API)
|
|
25
|
+
↓
|
|
26
|
+
STEP 5: Content Writing (1500-2000 words)
|
|
27
|
+
↓
|
|
28
|
+
STEP 6: SEO Optimization (meta, internal links, images)
|
|
29
|
+
↓
|
|
30
|
+
STEP 7: Validation Loop (3 validators, consensus ≥0.95)
|
|
31
|
+
↓
|
|
32
|
+
STEP 8: Publishing Prep (schema markup, final formatting)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Execution Pattern
|
|
36
|
+
|
|
37
|
+
**MANDATORY: Spawn cfn-seo-coordinator agent that manages all orchestration internally.**
|
|
38
|
+
|
|
39
|
+
The coordinator uses CLI spawning (95% cost savings) via orchestrate-seo.sh skill.
|
|
40
|
+
|
|
41
|
+
### Step 1: Parse Arguments and Extract Context
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
// Extract keyword from arguments
|
|
45
|
+
const args = "$ARGUMENTS";
|
|
46
|
+
const keyword = args.split('--')[0].trim();
|
|
47
|
+
|
|
48
|
+
// Parse optional parameters
|
|
49
|
+
const brandMatch = args.match(/--brand[=\s]+([^\s]+)/);
|
|
50
|
+
const audienceMatch = args.match(/--audience[=\s]+([^\s]+)/);
|
|
51
|
+
|
|
52
|
+
const brand = brandMatch ? brandMatch[1] : "default_brand";
|
|
53
|
+
const audience = audienceMatch ? audienceMatch[1] : "general";
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Step 2: Spawn SEO Coordinator (SINGLE AGENT PATTERN)
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
Task("cfn-seo-coordinator", `
|
|
60
|
+
SEO BLOG POST GENERATION
|
|
61
|
+
|
|
62
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
63
|
+
COST OPTIMIZATION - CUSTOM ROUTING (CRITICAL)
|
|
64
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
+
|
|
66
|
+
⚠️ IMPORTANT: Enable custom routing for maximum cost savings!
|
|
67
|
+
|
|
68
|
+
1. Enable routing (one-time setup):
|
|
69
|
+
/switch-api zai
|
|
70
|
+
|
|
71
|
+
2. Verify status:
|
|
72
|
+
/switch-api status
|
|
73
|
+
|
|
74
|
+
Cost Breakdown (per blog post):
|
|
75
|
+
┌─────────────────────┬──────────────┬────────────┐
|
|
76
|
+
│ Component │ Provider │ Cost/Call │
|
|
77
|
+
├─────────────────────┼──────────────┼────────────┤
|
|
78
|
+
│ Main Chat │ Anthropic │ $0.015 │
|
|
79
|
+
│ SEO Coordinator │ Anthropic │ $0.015 │
|
|
80
|
+
│ SEO Agents (CLI) │ Z.ai │ $0.003 ea │
|
|
81
|
+
│ Validators (CLI) │ Z.ai │ $0.003 ea │
|
|
82
|
+
└─────────────────────┴──────────────┴────────────┘
|
|
83
|
+
|
|
84
|
+
Expected Costs:
|
|
85
|
+
• WITH custom routing: ~$1.00 per blog post (10 agents)
|
|
86
|
+
• WITHOUT custom routing: ~$15.00 per blog post
|
|
87
|
+
• Savings: 93% cost reduction
|
|
88
|
+
|
|
89
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
90
|
+
BLOG POST SPECIFICATION
|
|
91
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
92
|
+
|
|
93
|
+
Target Keyword: ${keyword}
|
|
94
|
+
Content Type: blog
|
|
95
|
+
Brand: ${brand}
|
|
96
|
+
Target Audience: ${audience}
|
|
97
|
+
Word Count: 1500-2000
|
|
98
|
+
Task ID: seo-blog-$(date +%s)
|
|
99
|
+
Mode: STANDARD (validator: 0.75, consensus: 0.95)
|
|
100
|
+
|
|
101
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
102
|
+
SUCCESS CRITERIA (BLOG POST REQUIREMENTS)
|
|
103
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
104
|
+
|
|
105
|
+
SEO Requirements:
|
|
106
|
+
- [ ] Target keyword in H1, meta title, meta description
|
|
107
|
+
- [ ] Keyword density 1-2%
|
|
108
|
+
- [ ] 3-5 internal links to related content
|
|
109
|
+
- [ ] 2-3 external authoritative citations
|
|
110
|
+
- [ ] 1 image per 300 words (optimized alt text)
|
|
111
|
+
- [ ] FAQ schema markup included
|
|
112
|
+
|
|
113
|
+
Content Quality:
|
|
114
|
+
- [ ] Natural, human-like writing (humanizer score ≥0.75)
|
|
115
|
+
- [ ] Brand voice alignment (branding score ≥0.75)
|
|
116
|
+
- [ ] Audience persona fit (audience score ≥0.75)
|
|
117
|
+
- [ ] Consensus ≥0.95 from all 3 validators
|
|
118
|
+
- [ ] No AI tell-tale phrases
|
|
119
|
+
- [ ] Conversational tone with personal examples
|
|
120
|
+
|
|
121
|
+
Structure:
|
|
122
|
+
- [ ] Compelling H1 (target keyword)
|
|
123
|
+
- [ ] Clear H2/H3 hierarchy (5-7 sections)
|
|
124
|
+
- [ ] Introduction with hook
|
|
125
|
+
- [ ] Actionable takeaways
|
|
126
|
+
- [ ] FAQ section (3-5 questions)
|
|
127
|
+
- [ ] Clear CTA
|
|
128
|
+
|
|
129
|
+
Technical:
|
|
130
|
+
- [ ] Meta title <60 characters
|
|
131
|
+
- [ ] Meta description 150-160 characters
|
|
132
|
+
- [ ] Schema markup validated
|
|
133
|
+
- [ ] Mobile-friendly formatting
|
|
134
|
+
|
|
135
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
136
|
+
8-STEP PIPELINE AGENTS
|
|
137
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
|
+
|
|
139
|
+
Step 1 - Keyword Research:
|
|
140
|
+
- seo-analytics-specialist (DataForSEO API)
|
|
141
|
+
|
|
142
|
+
Step 2 - Competitor Analysis:
|
|
143
|
+
- competitive-seo-analyst (SERP analysis)
|
|
144
|
+
|
|
145
|
+
Step 3 - Outline Generation:
|
|
146
|
+
- content-seo-strategist (H1/H2/H3 structure)
|
|
147
|
+
|
|
148
|
+
Step 4 - Research & Citations:
|
|
149
|
+
- Perplexity API via OpenRouter (external)
|
|
150
|
+
|
|
151
|
+
Step 5 - Content Writing:
|
|
152
|
+
- content-seo-strategist (1500-2000 words)
|
|
153
|
+
|
|
154
|
+
Step 6 - SEO Optimization:
|
|
155
|
+
- technical-seo-specialist (meta, links, images)
|
|
156
|
+
- programmatic-seo-engineer (internal linking)
|
|
157
|
+
|
|
158
|
+
Step 7 - Validation Loop (Parallel, Max 3 Iterations):
|
|
159
|
+
- humanizer-validator (natural writing ≥0.75)
|
|
160
|
+
- branding-validator (brand voice ≥0.75)
|
|
161
|
+
- audience-validator (persona fit ≥0.75)
|
|
162
|
+
- CONSENSUS THRESHOLD: ≥0.95
|
|
163
|
+
|
|
164
|
+
Step 8 - Publishing Prep:
|
|
165
|
+
- schema-markup-engineer (schema.org markup)
|
|
166
|
+
|
|
167
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
168
|
+
EXECUTION INSTRUCTIONS
|
|
169
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
170
|
+
|
|
171
|
+
1. INVOKE SEO ORCHESTRATOR:
|
|
172
|
+
./.claude/skills/seo-orchestration/orchestrate-seo.sh \\
|
|
173
|
+
--task-id "seo-blog-$(date +%s)" \\
|
|
174
|
+
--target-keyword "${keyword}" \\
|
|
175
|
+
--content-type "blog" \\
|
|
176
|
+
--brand "${brand}" \\
|
|
177
|
+
--audience "${audience}" \\
|
|
178
|
+
--mode "standard" \\
|
|
179
|
+
--max-iterations 3 \\
|
|
180
|
+
--word-count 1500-2000
|
|
181
|
+
|
|
182
|
+
2. VALIDATION ITERATION PATTERN:
|
|
183
|
+
- Spawn 3 validators in parallel
|
|
184
|
+
- Calculate consensus (average of 3 scores)
|
|
185
|
+
- IF consensus < 0.95 && iteration < 3:
|
|
186
|
+
- Collect feedback from all validators
|
|
187
|
+
- Respawn content-seo-strategist with feedback
|
|
188
|
+
- Re-run 3 validators
|
|
189
|
+
- IF consensus ≥ 0.95 || iteration == 3:
|
|
190
|
+
- Proceed to Step 8 (publishing prep)
|
|
191
|
+
|
|
192
|
+
3. MONITOR PROGRESS (Redis):
|
|
193
|
+
redis-cli GET "seo:task:${TASK_ID}:status"
|
|
194
|
+
redis-cli HGETALL "seo:task:${TASK_ID}:validation:scores"
|
|
195
|
+
redis-cli LRANGE "seo:task:${TASK_ID}:logs" 0 -1
|
|
196
|
+
|
|
197
|
+
4. REPORT STRUCTURED RESULT:
|
|
198
|
+
{
|
|
199
|
+
"taskId": "seo-blog-XXXXX",
|
|
200
|
+
"keyword": "${keyword}",
|
|
201
|
+
"status": "complete|failed",
|
|
202
|
+
"finalArticlePath": "content/blog/YYYY-MM-DD-slug.md",
|
|
203
|
+
"validation": {
|
|
204
|
+
"iterations": N,
|
|
205
|
+
"finalConsensus": 0.XX,
|
|
206
|
+
"scores": {
|
|
207
|
+
"humanizer": 0.XX,
|
|
208
|
+
"branding": 0.XX,
|
|
209
|
+
"audience": 0.XX
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
"seo": {
|
|
213
|
+
"wordCount": XXXX,
|
|
214
|
+
"keywordDensity": "X.X%",
|
|
215
|
+
"internalLinks": N,
|
|
216
|
+
"externalLinks": N,
|
|
217
|
+
"images": N,
|
|
218
|
+
"schemaMarkup": true
|
|
219
|
+
},
|
|
220
|
+
"recommendations": [...]
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
224
|
+
CRITICAL RULES
|
|
225
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
226
|
+
|
|
227
|
+
- DO NOT spawn agents with Task()
|
|
228
|
+
- LET orchestrator handle CLI spawning
|
|
229
|
+
- USE Redis for all agent coordination
|
|
230
|
+
- STORE context in seo:task:${TASK_ID}:context
|
|
231
|
+
- RETURN structured result to Main Chat
|
|
232
|
+
- ITERATE automatically on consensus failure (max 3)
|
|
233
|
+
`, "cfn-seo-coordinator")
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Step 3: Coordinator Autonomous Execution
|
|
237
|
+
|
|
238
|
+
The coordinator runs orchestrate-seo.sh internally:
|
|
239
|
+
|
|
240
|
+
**Sequential Execution:**
|
|
241
|
+
1. Keyword research (DataForSEO API)
|
|
242
|
+
2. Competitor analysis (SERP top 5)
|
|
243
|
+
3. Outline creation (H1/H2/H3)
|
|
244
|
+
4. Research & citations (Perplexity)
|
|
245
|
+
5. Content writing (1500-2000 words)
|
|
246
|
+
6. SEO optimization (meta, links)
|
|
247
|
+
7. **Validation loop** (3 validators, iterate if consensus < 0.95)
|
|
248
|
+
8. Publishing prep (schema markup)
|
|
249
|
+
|
|
250
|
+
**Validation Loop Details:**
|
|
251
|
+
```bash
|
|
252
|
+
# Spawn validators in parallel
|
|
253
|
+
npx cfn-spawn humanizer-validator --task-id $TASK_ID &
|
|
254
|
+
npx cfn-spawn branding-validator --task-id $TASK_ID &
|
|
255
|
+
npx cfn-spawn audience-validator --task-id $TASK_ID &
|
|
256
|
+
wait
|
|
257
|
+
|
|
258
|
+
# Collect scores from Redis
|
|
259
|
+
HUMANIZER_SCORE=$(redis-cli HGET "seo:task:${TASK_ID}:validation:scores" "humanizer")
|
|
260
|
+
BRANDING_SCORE=$(redis-cli HGET "seo:task:${TASK_ID}:validation:scores" "branding")
|
|
261
|
+
AUDIENCE_SCORE=$(redis-cli HGET "seo:task:${TASK_ID}:validation:scores" "audience")
|
|
262
|
+
|
|
263
|
+
# Calculate consensus
|
|
264
|
+
CONSENSUS=$(echo "scale=2; ($HUMANIZER_SCORE + $BRANDING_SCORE + $AUDIENCE_SCORE) / 3" | bc)
|
|
265
|
+
|
|
266
|
+
# Iterate if needed
|
|
267
|
+
if (( $(echo "$CONSENSUS < 0.95" | bc -l) )) && [ $ITERATION -lt 3 ]; then
|
|
268
|
+
# Collect feedback
|
|
269
|
+
FEEDBACK=$(redis-cli LRANGE "seo:task:${TASK_ID}:validation:feedback" 0 -1)
|
|
270
|
+
|
|
271
|
+
# Rewrite with feedback
|
|
272
|
+
npx cfn-spawn content-seo-strategist \
|
|
273
|
+
--task-id $TASK_ID \
|
|
274
|
+
--context "Rewrite based on feedback: $FEEDBACK"
|
|
275
|
+
|
|
276
|
+
# Re-run validators
|
|
277
|
+
# (repeat validation loop)
|
|
278
|
+
fi
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Autonomous Execution Rules
|
|
282
|
+
|
|
283
|
+
**YOU ARE FORBIDDEN FROM:**
|
|
284
|
+
- ❌ Asking "Should I retry validation?" (ALWAYS retry if iteration < 3)
|
|
285
|
+
- ❌ Asking "Proceed to next step?" (AUTO-PROCEED after each step)
|
|
286
|
+
- ❌ Waiting for approval during pipeline execution
|
|
287
|
+
|
|
288
|
+
**YOU MUST:**
|
|
289
|
+
- ✅ IMMEDIATELY rewrite on low consensus (iteration < 3)
|
|
290
|
+
- ✅ AUTOMATICALLY iterate with validator feedback
|
|
291
|
+
- ✅ ONLY escalate when truly blocked (API failure, max iterations)
|
|
292
|
+
|
|
293
|
+
## Example Execution
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
[Step 1] Keyword Research - COMPLETE
|
|
297
|
+
→ Search volume: 4,400/month
|
|
298
|
+
→ Competition: 0.45 (medium)
|
|
299
|
+
→ Related keywords: 12 identified
|
|
300
|
+
|
|
301
|
+
[Step 2] Competitor Analysis - COMPLETE
|
|
302
|
+
→ Top 5 URLs analyzed
|
|
303
|
+
→ Average word count: 1,800
|
|
304
|
+
→ Common topics: preservation methods, tools
|
|
305
|
+
|
|
306
|
+
[Step 3] Outline Generation - COMPLETE
|
|
307
|
+
→ H1: "How to Preserve Your Family Stories (2025 Guide)"
|
|
308
|
+
→ 6 H2 sections + FAQ
|
|
309
|
+
→ Estimated word count: 1,650
|
|
310
|
+
|
|
311
|
+
[Step 4] Research & Citations - COMPLETE
|
|
312
|
+
→ 5 authoritative sources found
|
|
313
|
+
→ 3 statistics for credibility
|
|
314
|
+
|
|
315
|
+
[Step 5] Content Writing - COMPLETE
|
|
316
|
+
→ 1,687 words written
|
|
317
|
+
→ 1.8% keyword density
|
|
318
|
+
|
|
319
|
+
[Step 6] SEO Optimization - COMPLETE
|
|
320
|
+
→ Meta title: 58 characters
|
|
321
|
+
→ Meta description: 156 characters
|
|
322
|
+
→ 4 internal links + 3 external
|
|
323
|
+
|
|
324
|
+
[Step 7] Validation Loop - Iteration 1/3
|
|
325
|
+
→ Humanizer: 0.72 ❌ (AI phrases detected)
|
|
326
|
+
→ Branding: 0.88 ✅
|
|
327
|
+
→ Audience: 0.81 ✅
|
|
328
|
+
→ Consensus: 0.80 (below 0.95)
|
|
329
|
+
→ IMMEDIATELY rewriting with feedback...
|
|
330
|
+
|
|
331
|
+
[Step 7] Validation Loop - Iteration 2/3
|
|
332
|
+
→ Humanizer: 0.91 ✅
|
|
333
|
+
→ Branding: 0.93 ✅
|
|
334
|
+
→ Audience: 0.89 ✅
|
|
335
|
+
→ Consensus: 0.91 (still below 0.95)
|
|
336
|
+
→ IMMEDIATELY rewriting with feedback...
|
|
337
|
+
|
|
338
|
+
[Step 7] Validation Loop - Iteration 3/3
|
|
339
|
+
→ Humanizer: 0.95 ✅
|
|
340
|
+
→ Branding: 0.96 ✅
|
|
341
|
+
→ Audience: 0.95 ✅
|
|
342
|
+
→ Consensus: 0.95 ✅ PASSED
|
|
343
|
+
|
|
344
|
+
[Step 8] Publishing Prep - COMPLETE
|
|
345
|
+
→ Schema markup added (Article + FAQ)
|
|
346
|
+
→ Images optimized (5 images)
|
|
347
|
+
→ Final article: content/blog/2025-11-01-preserve-family-stories.md
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## API Credentials Required
|
|
351
|
+
|
|
352
|
+
Ensure these are in `.env`:
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# DataForSEO (Keyword Research + SERP)
|
|
356
|
+
DATA_FOR_SEO_API_KEY=base64_encoded_login:password
|
|
357
|
+
|
|
358
|
+
# Perplexity (Research via OpenRouter)
|
|
359
|
+
OPENROUTER_API_KEY=sk-or-v1-xxxxx
|
|
360
|
+
|
|
361
|
+
# Optional: Pexels (Stock Images)
|
|
362
|
+
PEXELS_API_KEY=xxxxx
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
## Output Format
|
|
366
|
+
|
|
367
|
+
Concise, structured result:
|
|
368
|
+
|
|
369
|
+
```
|
|
370
|
+
✅ SEO Blog Post Complete
|
|
371
|
+
|
|
372
|
+
Keyword: "how to preserve family stories"
|
|
373
|
+
Final Article: content/blog/2025-11-01-preserve-family-stories.md
|
|
374
|
+
|
|
375
|
+
Validation Results:
|
|
376
|
+
- Humanizer: 0.95 ✅
|
|
377
|
+
- Branding: 0.96 ✅
|
|
378
|
+
- Audience: 0.95 ✅
|
|
379
|
+
- Consensus: 0.95 ✅ (3 iterations)
|
|
380
|
+
|
|
381
|
+
SEO Metrics:
|
|
382
|
+
- Word Count: 1,687
|
|
383
|
+
- Keyword Density: 1.8%
|
|
384
|
+
- Internal Links: 4
|
|
385
|
+
- External Links: 3
|
|
386
|
+
- Images: 5 (optimized)
|
|
387
|
+
- Schema: Article + FAQ ✅
|
|
388
|
+
|
|
389
|
+
Ready for publishing!
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
## Usage Examples
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
# Basic (uses default brand/audience)
|
|
396
|
+
/seo-blog "how to preserve family stories"
|
|
397
|
+
|
|
398
|
+
# With brand specification
|
|
399
|
+
/seo-blog "how to preserve family stories" --brand=ourstories
|
|
400
|
+
|
|
401
|
+
# With brand and audience
|
|
402
|
+
/seo-blog "genealogy research tips" --brand=ourstories --audience=family_historian
|
|
403
|
+
|
|
404
|
+
# Long-tail keyword
|
|
405
|
+
/seo-blog "best ways to record elderly relatives stories"
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
## Troubleshooting
|
|
409
|
+
|
|
410
|
+
**Validation fails after 3 iterations:**
|
|
411
|
+
- Review validator feedback in Redis: `redis-cli LRANGE "seo:task:${TASK_ID}:validation:feedback" 0 -1`
|
|
412
|
+
- Common issues: AI phrases, weak brand voice, persona mismatch
|
|
413
|
+
- Manual review required at this point
|
|
414
|
+
|
|
415
|
+
**API failures:**
|
|
416
|
+
- DataForSEO: Check API key encoding (base64)
|
|
417
|
+
- Perplexity: Verify OpenRouter credit balance
|
|
418
|
+
- Fallback: Use manual keyword research if APIs fail
|
|
419
|
+
|
|
420
|
+
**Cost concerns:**
|
|
421
|
+
- Verify custom routing enabled: `/switch-api status`
|
|
422
|
+
- Without Z.ai routing: $15/article vs $1/article
|
|
423
|
+
|
|
424
|
+
## Related Commands
|
|
425
|
+
|
|
426
|
+
- `/seo-landing` - Landing page pipeline (6 steps, no competitor analysis)
|
|
427
|
+
- `/seo-product` - Product page pipeline (5 steps, schema focus)
|
|
428
|
+
- `/seo-local` - Local business content (+ local-seo-optimizer)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Generate conversion-optimized landing page (6-step pipeline, skip competitor analysis)"
|
|
3
|
+
argument-hint: "<target keyword> [--brand=BRAND] [--audience=AUDIENCE]"
|
|
4
|
+
allowed-tools: ["Task", "TodoWrite", "Read", "Write", "Bash"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO Landing Page Generator
|
|
8
|
+
|
|
9
|
+
Execute 6-step SEO pipeline for landing pages (skip competitor analysis, focus on conversion).
|
|
10
|
+
|
|
11
|
+
**Target Keyword**: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
## Landing Page Pipeline (6 Steps)
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
STEP 1: Keyword Research
|
|
17
|
+
↓
|
|
18
|
+
STEP 3: Outline (conversion-focused)
|
|
19
|
+
↓
|
|
20
|
+
STEP 5: Copywriting (800-1200 words)
|
|
21
|
+
↓
|
|
22
|
+
STEP 6: SEO + Conversion Optimization
|
|
23
|
+
↓
|
|
24
|
+
STEP 7: Validation (3 validators, consensus ≥0.95)
|
|
25
|
+
↓
|
|
26
|
+
STEP 8: Publishing Prep (schema markup)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Execution
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
Task("cfn-seo-coordinator", `
|
|
33
|
+
SEO LANDING PAGE GENERATION
|
|
34
|
+
|
|
35
|
+
Target Keyword: ${keyword}
|
|
36
|
+
Content Type: landing
|
|
37
|
+
Brand: ${brand}
|
|
38
|
+
Audience: ${audience}
|
|
39
|
+
Word Count: 800-1200
|
|
40
|
+
Mode: STANDARD
|
|
41
|
+
|
|
42
|
+
Success Criteria:
|
|
43
|
+
- [ ] Clear value proposition above fold
|
|
44
|
+
- [ ] 1 primary CTA (conversion-focused)
|
|
45
|
+
- [ ] Social proof section (testimonials/stats)
|
|
46
|
+
- [ ] FAQ section (objection handling)
|
|
47
|
+
- [ ] Trust indicators (security, guarantees)
|
|
48
|
+
- [ ] Mobile-optimized layout
|
|
49
|
+
- [ ] Schema: Product/Service markup
|
|
50
|
+
- [ ] Validation consensus ≥0.95
|
|
51
|
+
|
|
52
|
+
Invoke:
|
|
53
|
+
./.claude/skills/seo-orchestration/orchestrate-seo.sh \\
|
|
54
|
+
--task-id "seo-landing-$(date +%s)" \\
|
|
55
|
+
--target-keyword "${keyword}" \\
|
|
56
|
+
--content-type "landing" \\
|
|
57
|
+
--brand "${brand}" \\
|
|
58
|
+
--audience "${audience}" \\
|
|
59
|
+
--word-count 800-1200
|
|
60
|
+
`, "cfn-seo-coordinator")
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Landing Page Specific Requirements
|
|
64
|
+
|
|
65
|
+
**Above the Fold:**
|
|
66
|
+
- Compelling H1 with keyword
|
|
67
|
+
- Benefit-driven subheading
|
|
68
|
+
- Primary CTA button
|
|
69
|
+
- Hero image/video
|
|
70
|
+
|
|
71
|
+
**Conversion Elements:**
|
|
72
|
+
- Social proof (3-5 testimonials)
|
|
73
|
+
- Trust badges (security, money-back)
|
|
74
|
+
- Scarcity/urgency (limited offer)
|
|
75
|
+
- Clear next steps
|
|
76
|
+
|
|
77
|
+
**SEO Optimization:**
|
|
78
|
+
- Meta title <60 chars (conversion-focused)
|
|
79
|
+
- Meta description 150-160 (include benefit)
|
|
80
|
+
- Internal links to blog/resources
|
|
81
|
+
- Schema: Product or Service markup
|
|
82
|
+
|
|
83
|
+
## Usage
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Basic
|
|
87
|
+
/seo-landing "family story recording service"
|
|
88
|
+
|
|
89
|
+
# With brand
|
|
90
|
+
/seo-landing "preserve family memories" --brand=ourstories --audience=family_connector
|
|
91
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Generate product page with rich schema markup (5-step pipeline)"
|
|
3
|
+
argument-hint: "<product name> [--brand=BRAND] [--category=CATEGORY]"
|
|
4
|
+
allowed-tools: ["Task", "TodoWrite", "Read", "Write", "Bash"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO Product Page Generator
|
|
8
|
+
|
|
9
|
+
Execute 5-step SEO pipeline for product pages (focus on schema markup and technical SEO).
|
|
10
|
+
|
|
11
|
+
**Product**: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
## Product Page Pipeline (5 Steps)
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
STEP 1: Keyword Research (product-specific)
|
|
17
|
+
↓
|
|
18
|
+
STEP 5: Product Copywriting (400-800 words)
|
|
19
|
+
↓
|
|
20
|
+
STEP 6: Technical SEO + Schema
|
|
21
|
+
↓
|
|
22
|
+
STEP 7: Validation (3 validators)
|
|
23
|
+
↓
|
|
24
|
+
STEP 8: Publishing Prep (rich schema)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Execution
|
|
28
|
+
|
|
29
|
+
```javascript
|
|
30
|
+
Task("cfn-seo-coordinator", `
|
|
31
|
+
SEO PRODUCT PAGE GENERATION
|
|
32
|
+
|
|
33
|
+
Product Name: ${product}
|
|
34
|
+
Content Type: product
|
|
35
|
+
Brand: ${brand}
|
|
36
|
+
Category: ${category}
|
|
37
|
+
Word Count: 400-800
|
|
38
|
+
Mode: STANDARD
|
|
39
|
+
|
|
40
|
+
Success Criteria:
|
|
41
|
+
- [ ] Product schema markup (name, price, rating, reviews)
|
|
42
|
+
- [ ] Breadcrumb schema
|
|
43
|
+
- [ ] High-quality product images (3-5)
|
|
44
|
+
- [ ] Key features/benefits (bullet points)
|
|
45
|
+
- [ ] Technical specifications
|
|
46
|
+
- [ ] Customer reviews section
|
|
47
|
+
- [ ] Related products (internal links)
|
|
48
|
+
- [ ] Clear CTA (Add to Cart / Learn More)
|
|
49
|
+
- [ ] Validation consensus ≥0.95
|
|
50
|
+
|
|
51
|
+
Invoke:
|
|
52
|
+
./.claude/skills/seo-orchestration/orchestrate-seo.sh \\
|
|
53
|
+
--task-id "seo-product-$(date +%s)" \\
|
|
54
|
+
--target-keyword "${product}" \\
|
|
55
|
+
--content-type "product" \\
|
|
56
|
+
--brand "${brand}" \\
|
|
57
|
+
--category "${category}" \\
|
|
58
|
+
--word-count 400-800
|
|
59
|
+
`, "cfn-seo-coordinator")
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Product Page Specific Requirements
|
|
63
|
+
|
|
64
|
+
**Product Schema (Required):**
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"@type": "Product",
|
|
68
|
+
"name": "Product Name",
|
|
69
|
+
"description": "...",
|
|
70
|
+
"image": ["url1", "url2"],
|
|
71
|
+
"sku": "SKU123",
|
|
72
|
+
"brand": {"@type": "Brand", "name": "Brand"},
|
|
73
|
+
"offers": {
|
|
74
|
+
"@type": "Offer",
|
|
75
|
+
"price": "99.99",
|
|
76
|
+
"priceCurrency": "USD",
|
|
77
|
+
"availability": "InStock"
|
|
78
|
+
},
|
|
79
|
+
"aggregateRating": {
|
|
80
|
+
"@type": "AggregateRating",
|
|
81
|
+
"ratingValue": "4.5",
|
|
82
|
+
"reviewCount": "87"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Content Structure:**
|
|
88
|
+
- Product title (H1 with keyword)
|
|
89
|
+
- Brief description (2-3 sentences)
|
|
90
|
+
- Key features (5-7 bullet points)
|
|
91
|
+
- Detailed description (300-500 words)
|
|
92
|
+
- Technical specs (table format)
|
|
93
|
+
- Customer reviews (structured data)
|
|
94
|
+
- FAQ section (3-5 questions)
|
|
95
|
+
|
|
96
|
+
## Usage
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Basic
|
|
100
|
+
/seo-product "digital voice recorder for families"
|
|
101
|
+
|
|
102
|
+
# With brand and category
|
|
103
|
+
/seo-product "memory preservation kit" --brand=ourstories --category=electronics
|
|
104
|
+
```
|