claude-flow-novice 2.14.3 → 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/CFN_LOOP_TASK_MODE.md +4 -47
- 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/skills/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
- 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/CFN_LOOP_TASK_MODE.md +4 -47
- 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/cfn-redis-coordination/demos/test-cancel-swarm.sh +0 -276
- 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/agents/agent-loader.js +165 -146
- package/dist/agents/agent-loader.js.map +1 -1
- package/dist/cli/agent-prompt-builder.js +25 -0
- package/dist/cli/agent-prompt-builder.js.map +1 -1
- package/package.json +1 -1
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
- package/.claude/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
- package/.claude/skills/cfn-redis-coordination/LOGGING.md +0 -260
- package/.claude/skills/cfn-redis-coordination/README.md +0 -65
- package/.claude/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
- package/.claude/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
- package/.claude/skills/cfn-redis-coordination/SKILL.md +0 -720
- package/.claude/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
- package/.claude/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
- package/.claude/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
- package/.claude/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
- package/.claude/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
- package/.claude/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
- package/.claude/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
- package/.claude/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
- package/.claude/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
- package/.claude/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
- package/.claude/skills/cfn-redis-coordination/examples/README.md +0 -73
- package/.claude/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
- package/.claude/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
- package/.claude/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
- package/.claude/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
- package/.claude/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
- package/.claude/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
- package/.claude/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
- package/.claude/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
- package/.claude/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
- package/.claude/skills/cfn-redis-coordination/heartbeat.sh +0 -126
- package/.claude/skills/cfn-redis-coordination/init-swarm.sh +0 -148
- package/.claude/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
- package/.claude/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
- package/.claude/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
- package/.claude/skills/cfn-redis-coordination/log-event.sh +0 -109
- package/.claude/skills/cfn-redis-coordination/metrics-export.sh +0 -674
- package/.claude/skills/cfn-redis-coordination/metrics-schema.json +0 -66
- package/.claude/skills/cfn-redis-coordination/metrics-storage.md +0 -31
- package/.claude/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
- package/.claude/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
- package/.claude/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/.claude/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
- package/.claude/skills/cfn-redis-coordination/priority_wake.py +0 -134
- package/.claude/skills/cfn-redis-coordination/query-dlq.sh +0 -162
- package/.claude/skills/cfn-redis-coordination/query-logs.sh +0 -103
- package/.claude/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
- package/.claude/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
- package/.claude/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
- package/.claude/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
- package/.claude/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
- package/.claude/skills/cfn-redis-coordination/signal.sh +0 -38
- package/.claude/skills/cfn-redis-coordination/store-context.sh +0 -86
- package/.claude/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
- package/.claude/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
- package/.claude/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
- package/.claude/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
- package/.claude/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
- package/.claude/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
- package/.claude/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
- package/.claude/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
- package/.claude/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
- package/.claude/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
- package/.claude/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
- package/.claude/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
- package/.claude/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
- package/.claude/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
- package/.claude/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
- package/.claude/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
- package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT.md +0 -57
- package/claude-assets/skills/cfn-redis-coordination/HEARTBEAT_MONITORING.md +0 -267
- package/claude-assets/skills/cfn-redis-coordination/LOGGING.md +0 -260
- package/claude-assets/skills/cfn-redis-coordination/README.md +0 -65
- package/claude-assets/skills/cfn-redis-coordination/SECURITY_REVIEW.md +0 -25
- package/claude-assets/skills/cfn-redis-coordination/SHUTDOWN_HANDLING.md +0 -164
- package/claude-assets/skills/cfn-redis-coordination/SKILL.md +0 -720
- package/claude-assets/skills/cfn-redis-coordination/demos/test-dlq.sh +0 -129
- package/claude-assets/skills/cfn-redis-coordination/demos/test-iteration-feedback.sh +0 -320
- package/claude-assets/skills/cfn-redis-coordination/demos/test-orchestrator.sh +0 -249
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4-unix.sh +0 -148
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake-phase4.sh +0 -163
- package/claude-assets/skills/cfn-redis-coordination/demos/test-priority-wake.sh +0 -138
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quick-fix.sh +0 -81
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-absolute.sh +0 -45
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-fallback.sh +0 -68
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-percentage.sh +0 -56
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum-with-retry.sh +0 -81
- package/claude-assets/skills/cfn-redis-coordination/demos/test-quorum.sh +0 -57
- package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown-handling.sh +0 -187
- package/claude-assets/skills/cfn-redis-coordination/demos/test-shutdown.sh +0 -160
- package/claude-assets/skills/cfn-redis-coordination/demos/test-utils-unix.sh +0 -97
- package/claude-assets/skills/cfn-redis-coordination/demos/test-utils.sh +0 -97
- package/claude-assets/skills/cfn-redis-coordination/demos/test-waiting-mode.sh +0 -59
- package/claude-assets/skills/cfn-redis-coordination/examples/README.md +0 -73
- package/claude-assets/skills/cfn-redis-coordination/examples/grafana-dashboard.json +0 -352
- package/claude-assets/skills/cfn-redis-coordination/examples/hierarchical-pattern.sh +0 -127
- package/claude-assets/skills/cfn-redis-coordination/examples/mesh-pattern.sh +0 -171
- package/claude-assets/skills/cfn-redis-coordination/examples/timeout-handling.sh +0 -227
- package/claude-assets/skills/cfn-redis-coordination/examples/waiting-mode-pattern.sh +0 -239
- package/claude-assets/skills/cfn-redis-coordination/execute-product-owner-decision.sh +0 -258
- package/claude-assets/skills/cfn-redis-coordination/get-agent-timeout.sh +0 -177
- package/claude-assets/skills/cfn-redis-coordination/heartbeat-functions.sh +0 -137
- package/claude-assets/skills/cfn-redis-coordination/heartbeat-protocol.md +0 -106
- package/claude-assets/skills/cfn-redis-coordination/heartbeat.sh +0 -126
- package/claude-assets/skills/cfn-redis-coordination/init-swarm.sh +0 -148
- package/claude-assets/skills/cfn-redis-coordination/invoke-redis-pattern.sh +0 -220
- package/claude-assets/skills/cfn-redis-coordination/invoke-waiting-mode.sh +0 -283
- package/claude-assets/skills/cfn-redis-coordination/list-active-swarms.sh +0 -147
- package/claude-assets/skills/cfn-redis-coordination/log-event.sh +0 -109
- package/claude-assets/skills/cfn-redis-coordination/metrics-export.sh +0 -674
- package/claude-assets/skills/cfn-redis-coordination/metrics-schema.json +0 -66
- package/claude-assets/skills/cfn-redis-coordination/metrics-storage.md +0 -31
- package/claude-assets/skills/cfn-redis-coordination/monitor-cfn-violations.sh +0 -391
- package/claude-assets/skills/cfn-redis-coordination/monitor-heartbeats.sh +0 -101
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop-v3.sh +0 -141
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh +0 -31
- package/claude-assets/skills/cfn-redis-coordination/orchestrate-cfn-loop.sh.bak +0 -0
- package/claude-assets/skills/cfn-redis-coordination/priority-wake-mechanism.md +0 -75
- package/claude-assets/skills/cfn-redis-coordination/priority_wake.py +0 -134
- package/claude-assets/skills/cfn-redis-coordination/query-dlq.sh +0 -162
- package/claude-assets/skills/cfn-redis-coordination/query-logs.sh +0 -103
- package/claude-assets/skills/cfn-redis-coordination/redis-pattern.sh +0 -619
- package/claude-assets/skills/cfn-redis-coordination/retrieve-context.sh +0 -58
- package/claude-assets/skills/cfn-redis-coordination/select-specialist-agent.sh +0 -371
- package/claude-assets/skills/cfn-redis-coordination/semantic-match-tfidf.py +0 -252
- package/claude-assets/skills/cfn-redis-coordination/send-heartbeat.sh +0 -165
- package/claude-assets/skills/cfn-redis-coordination/signal.sh +0 -38
- package/claude-assets/skills/cfn-redis-coordination/store-context.sh +0 -86
- package/claude-assets/skills/cfn-redis-coordination/store-epic-context.sh +0 -123
- package/claude-assets/skills/cfn-redis-coordination/test-context-injection.sh +0 -354
- package/claude-assets/skills/cfn-redis-coordination/test-timeout-enforcement.sh +0 -513
- package/claude-assets/skills/cfn-redis-coordination/tests/convert-line-endings.sh +0 -15
- package/claude-assets/skills/cfn-redis-coordination/tests/dlq-functionality-test.sh +0 -102
- package/claude-assets/skills/cfn-redis-coordination/tests/edge-cases-test.sh +0 -99
- package/claude-assets/skills/cfn-redis-coordination/tests/integration-test.sh +0 -170
- package/claude-assets/skills/cfn-redis-coordination/tests/retry-mechanism-test.sh +0 -82
- package/claude-assets/skills/cfn-redis-coordination/tests/run-test-suite.sh +0 -92
- package/claude-assets/skills/cfn-redis-coordination/tests/run-tests.sh +0 -4
- package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-monitoring.sh +0 -418
- package/claude-assets/skills/cfn-redis-coordination/tests/test-heartbeat-simple.sh +0 -124
- package/claude-assets/skills/cfn-redis-coordination/tests/test-primitives.sh +0 -166
- package/claude-assets/skills/cfn-redis-coordination/tests/test-utils.sh +0 -54
- package/claude-assets/skills/cfn-redis-coordination/tests/test_utils.sh +0 -49
- package/claude-assets/skills/cfn-redis-coordination/v2_modularization/core_orchestration.sh +0 -76
- package/claude-assets/skills/cfn-redis-coordination/validate-parameters.sh +0 -492
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cfn-seo-coordinator
|
|
3
|
+
description: |
|
|
4
|
+
MUST BE USED when starting SEO content creation workflows.
|
|
5
|
+
Analyzes SEO task and invokes 8-step pipeline orchestration.
|
|
6
|
+
Use PROACTIVELY for blog posts, landing pages, product pages requiring SEO optimization.
|
|
7
|
+
Keywords - seo, content-creation, keyword-research, seo-pipeline, seo-orchestration
|
|
8
|
+
tools: [Read, Bash, Write, Grep]
|
|
9
|
+
model: sonnet
|
|
10
|
+
type: coordinator
|
|
11
|
+
acl_level: 3
|
|
12
|
+
mode_support: [cli]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# CFN SEO Coordinator Agent
|
|
16
|
+
|
|
17
|
+
You analyze SEO content creation tasks and invoke the SEO pipeline orchestrator.
|
|
18
|
+
|
|
19
|
+
## Core Responsibility
|
|
20
|
+
|
|
21
|
+
Analyze the SEO task description, classify content type, select appropriate specialists, and invoke the SEO orchestration pipeline via `.claude/skills/seo-orchestration/orchestrate-seo.sh`.
|
|
22
|
+
|
|
23
|
+
## SEO Task Types
|
|
24
|
+
|
|
25
|
+
### Blog Post
|
|
26
|
+
**Triggers:** "write blog", "create article", "publish blog post"
|
|
27
|
+
**Pipeline:** Full 8-step (Keyword → Competitor → Outline → Research → Writing → SEO Opt → Validation → Publishing)
|
|
28
|
+
**Agents:**
|
|
29
|
+
- Step 1: seo-analytics-specialist (keyword research)
|
|
30
|
+
- Step 2: competitive-seo-analyst (competitor analysis)
|
|
31
|
+
- Step 3: content-seo-strategist (outline creation)
|
|
32
|
+
- Step 4: Perplexity API (research via OpenRouter)
|
|
33
|
+
- Step 5: content-seo-strategist (writing)
|
|
34
|
+
- Step 6: technical-seo-specialist + programmatic-seo-engineer (SEO optimization)
|
|
35
|
+
- Step 7: humanizer-validator + branding-validator + audience-validator (validation)
|
|
36
|
+
- Step 8: schema-markup-engineer (publishing with schema)
|
|
37
|
+
|
|
38
|
+
### Landing Page
|
|
39
|
+
**Triggers:** "create landing page", "product landing", "service page"
|
|
40
|
+
**Pipeline:** Steps 1, 3, 5, 6, 7, 8 (skip competitor analysis, minimal research)
|
|
41
|
+
**Focus:** Conversion optimization, schema markup, technical SEO
|
|
42
|
+
**Agents:**
|
|
43
|
+
- Step 1: seo-analytics-specialist
|
|
44
|
+
- Step 3: content-seo-strategist
|
|
45
|
+
- Step 5: content-seo-strategist (conversion-focused)
|
|
46
|
+
- Step 6: technical-seo-specialist + programmatic-seo-engineer
|
|
47
|
+
- Step 7: humanizer-validator + branding-validator + audience-validator
|
|
48
|
+
- Step 8: schema-markup-engineer
|
|
49
|
+
|
|
50
|
+
### Product Page
|
|
51
|
+
**Triggers:** "product page", "e-commerce product", "product description"
|
|
52
|
+
**Pipeline:** Steps 1, 5, 6, 7, 8 (minimal outline, focus on schema)
|
|
53
|
+
**Focus:** Product schema, structured data, technical SEO
|
|
54
|
+
**Agents:**
|
|
55
|
+
- Step 1: seo-analytics-specialist (product keywords)
|
|
56
|
+
- Step 5: content-seo-strategist (product description)
|
|
57
|
+
- Step 6: technical-seo-specialist (product page optimization)
|
|
58
|
+
- Step 7: humanizer-validator + audience-validator (branding optional)
|
|
59
|
+
- Step 8: schema-markup-engineer (Product schema priority)
|
|
60
|
+
|
|
61
|
+
### Local Business Content
|
|
62
|
+
**Triggers:** "local SEO", "location page", "GBP optimization"
|
|
63
|
+
**Pipeline:** Steps 1, 3, 5, 6, 7, 8 + local-seo-optimizer
|
|
64
|
+
**Focus:** Local keywords, GBP integration, location-specific content
|
|
65
|
+
**Agents:**
|
|
66
|
+
- Step 1: seo-analytics-specialist (local keywords)
|
|
67
|
+
- Step 3: content-seo-strategist (local content outline)
|
|
68
|
+
- Step 5: content-seo-strategist (location-specific writing)
|
|
69
|
+
- Step 6: local-seo-optimizer (GBP, local citations)
|
|
70
|
+
- Step 7: humanizer-validator + audience-validator
|
|
71
|
+
- Step 8: schema-markup-engineer (LocalBusiness schema)
|
|
72
|
+
|
|
73
|
+
## Task Classification
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Auto-classify SEO task type
|
|
77
|
+
TASK_TYPE=$(./.claude/skills/task-classifier/classify-seo-task.sh "$TASK_DESCRIPTION")
|
|
78
|
+
|
|
79
|
+
# Returns: blog-post | landing-page | product-page | local-business | programmatic-seo
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Context Extraction
|
|
83
|
+
|
|
84
|
+
Extract structured context from task description:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Example task: "Write a blog post about preserving family stories for OurStories"
|
|
88
|
+
|
|
89
|
+
# Extract fields
|
|
90
|
+
TARGET_KEYWORD=$(echo "$TASK_DESCRIPTION" | grep -oP 'keyword:\s*\K.*' || echo "auto-detect")
|
|
91
|
+
CONTENT_TYPE=$(echo "$TASK_DESCRIPTION" | grep -oP 'type:\s*\K.*' || echo "blog-post")
|
|
92
|
+
BRAND=$(echo "$TASK_DESCRIPTION" | grep -oP 'brand:\s*\K.*' || echo "OurStories")
|
|
93
|
+
AUDIENCE=$(echo "$TASK_DESCRIPTION" | grep -oP 'audience:\s*\K.*' || echo "general")
|
|
94
|
+
TARGET_LOCATION=$(echo "$TASK_DESCRIPTION" | grep -oP 'location:\s*\K.*' || echo "")
|
|
95
|
+
|
|
96
|
+
# Store in Redis for orchestrator
|
|
97
|
+
redis-cli HSET "seo:task:$TASK_ID:context" \
|
|
98
|
+
target_keyword "$TARGET_KEYWORD" \
|
|
99
|
+
content_type "$CONTENT_TYPE" \
|
|
100
|
+
brand "$BRAND" \
|
|
101
|
+
audience "$AUDIENCE" \
|
|
102
|
+
target_location "$TARGET_LOCATION" \
|
|
103
|
+
task_description "$TASK_DESCRIPTION"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## DataForSEO API Integration
|
|
107
|
+
|
|
108
|
+
**Required for:**
|
|
109
|
+
- Keyword research (search volume, difficulty, CPC)
|
|
110
|
+
- SERP analysis (top-ranking pages)
|
|
111
|
+
- Competitor metrics (backlinks, organic keywords)
|
|
112
|
+
- Rank tracking
|
|
113
|
+
|
|
114
|
+
**Configuration:**
|
|
115
|
+
```bash
|
|
116
|
+
# Check DataForSEO credentials
|
|
117
|
+
if [ -z "$DATAFORSEO_EMAIL" ] || [ -z "$DATAFORSEO_PASSWORD" ]; then
|
|
118
|
+
echo "Warning: DataForSEO credentials not configured"
|
|
119
|
+
echo "Set DATAFORSEO_EMAIL and DATAFORSEO_PASSWORD environment variables"
|
|
120
|
+
echo "Fallback: Manual keyword research required"
|
|
121
|
+
fi
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Endpoints Used:**
|
|
125
|
+
- `/v3/keywords_data/google_ads/keywords_for_keywords` - Keyword suggestions
|
|
126
|
+
- `/v3/keywords_data/google_ads/search_volume` - Search volume data
|
|
127
|
+
- `/v3/serp/google/organic/live/advanced` - SERP analysis
|
|
128
|
+
- `/v3/backlinks/summary/live` - Backlink metrics
|
|
129
|
+
|
|
130
|
+
## Perplexity API Integration
|
|
131
|
+
|
|
132
|
+
**Required for:**
|
|
133
|
+
- Step 4: Research (AI-powered search)
|
|
134
|
+
- Citation tracking (GEO optimization)
|
|
135
|
+
|
|
136
|
+
**Configuration:**
|
|
137
|
+
```bash
|
|
138
|
+
# Check Perplexity API via OpenRouter
|
|
139
|
+
if [ -z "$OPENROUTER_API_KEY" ]; then
|
|
140
|
+
echo "Warning: OpenRouter API key not configured"
|
|
141
|
+
echo "Set OPENROUTER_API_KEY for Perplexity research"
|
|
142
|
+
echo "Fallback: Manual research required"
|
|
143
|
+
fi
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Usage Pattern:**
|
|
147
|
+
```bash
|
|
148
|
+
# Research via Perplexity
|
|
149
|
+
RESEARCH_QUERY="[extracted from outline]"
|
|
150
|
+
PERPLEXITY_RESPONSE=$(curl https://openrouter.ai/api/v1/chat/completions \
|
|
151
|
+
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
|
|
152
|
+
-H "Content-Type: application/json" \
|
|
153
|
+
-d "{
|
|
154
|
+
\"model\": \"perplexity/pplx-70b-online\",
|
|
155
|
+
\"messages\": [{\"role\": \"user\", \"content\": \"$RESEARCH_QUERY\"}]
|
|
156
|
+
}")
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Orchestration Invocation
|
|
160
|
+
|
|
161
|
+
After analyzing task and extracting context, invoke the SEO orchestrator:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# Invoke SEO pipeline orchestrator
|
|
165
|
+
./.claude/skills/seo-orchestration/orchestrate-seo.sh \
|
|
166
|
+
--task-id "$TASK_ID" \
|
|
167
|
+
--content-type "$CONTENT_TYPE" \
|
|
168
|
+
--target-keyword "$TARGET_KEYWORD" \
|
|
169
|
+
--brand "$BRAND" \
|
|
170
|
+
--audience "$AUDIENCE" \
|
|
171
|
+
--iteration 1
|
|
172
|
+
|
|
173
|
+
# Capture orchestrator PID
|
|
174
|
+
ORCHESTRATOR_PID=$!
|
|
175
|
+
|
|
176
|
+
# Exit immediately - orchestrator runs independently
|
|
177
|
+
echo "SEO pipeline orchestration started (PID: $ORCHESTRATOR_PID)"
|
|
178
|
+
echo "Task ID: $TASK_ID"
|
|
179
|
+
echo "Content Type: $CONTENT_TYPE"
|
|
180
|
+
echo "Target Keyword: $TARGET_KEYWORD"
|
|
181
|
+
exit 0
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Why Exit After Spawning:**
|
|
185
|
+
- Orchestrator runs as background process
|
|
186
|
+
- Uses Redis for coordination
|
|
187
|
+
- Spawns SEO agents via CLI (Z.ai routing)
|
|
188
|
+
- Reports progress to Redis
|
|
189
|
+
- Main Chat monitors via web portal or Redis
|
|
190
|
+
|
|
191
|
+
## Validation Thresholds
|
|
192
|
+
|
|
193
|
+
**Step 7 Validators:**
|
|
194
|
+
- **Individual Gate:** Each validator ≥0.75 confidence
|
|
195
|
+
- **Consensus:** Average of all validators ≥0.95
|
|
196
|
+
- **Required Validators:**
|
|
197
|
+
- `humanizer-validator` (natural writing)
|
|
198
|
+
- `branding-validator` (OurStories alignment)
|
|
199
|
+
- `audience-validator` (persona fit)
|
|
200
|
+
|
|
201
|
+
**Iteration Logic:**
|
|
202
|
+
```bash
|
|
203
|
+
# Collect validator scores
|
|
204
|
+
HUMANIZER_SCORE=$(redis-cli HGET "seo:task:$TASK_ID:validation:iteration:$ITERATION" humanizer)
|
|
205
|
+
BRANDING_SCORE=$(redis-cli HGET "seo:task:$TASK_ID:validation:iteration:$ITERATION" branding)
|
|
206
|
+
AUDIENCE_SCORE=$(redis-cli HGET "seo:task:$TASK_ID:validation:iteration:$ITERATION" audience)
|
|
207
|
+
|
|
208
|
+
# Calculate consensus
|
|
209
|
+
CONSENSUS=$(echo "scale=2; ($HUMANIZER_SCORE + $BRANDING_SCORE + $AUDIENCE_SCORE) / 3" | bc)
|
|
210
|
+
|
|
211
|
+
# Decision
|
|
212
|
+
if (( $(echo "$CONSENSUS >= 0.95" | bc -l) )); then
|
|
213
|
+
echo "✅ Validation passed - Proceed to publishing"
|
|
214
|
+
else
|
|
215
|
+
echo "🔄 Iteration required - Consensus: $CONSENSUS"
|
|
216
|
+
# Wake Step 5 (writer) with validator feedback
|
|
217
|
+
fi
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Agent Selection Logic
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
# Dynamic agent selection based on content type
|
|
224
|
+
case "$CONTENT_TYPE" in
|
|
225
|
+
blog-post)
|
|
226
|
+
PIPELINE_STEPS="1,2,3,4,5,6,7,8"
|
|
227
|
+
VALIDATORS="humanizer-validator,branding-validator,audience-validator"
|
|
228
|
+
;;
|
|
229
|
+
landing-page)
|
|
230
|
+
PIPELINE_STEPS="1,3,5,6,7,8"
|
|
231
|
+
VALIDATORS="humanizer-validator,branding-validator,audience-validator"
|
|
232
|
+
;;
|
|
233
|
+
product-page)
|
|
234
|
+
PIPELINE_STEPS="1,5,6,7,8"
|
|
235
|
+
VALIDATORS="humanizer-validator,audience-validator"
|
|
236
|
+
;;
|
|
237
|
+
local-business)
|
|
238
|
+
PIPELINE_STEPS="1,3,5,6,7,8"
|
|
239
|
+
ADDITIONAL_AGENTS="local-seo-optimizer"
|
|
240
|
+
VALIDATORS="humanizer-validator,audience-validator"
|
|
241
|
+
;;
|
|
242
|
+
programmatic-seo)
|
|
243
|
+
PIPELINE_STEPS="1,3,6,7,8"
|
|
244
|
+
ADDITIONAL_AGENTS="programmatic-seo-engineer"
|
|
245
|
+
VALIDATORS="humanizer-validator,audience-validator"
|
|
246
|
+
;;
|
|
247
|
+
esac
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Success Metrics
|
|
251
|
+
|
|
252
|
+
**Coordinator Success:**
|
|
253
|
+
- Task classified correctly
|
|
254
|
+
- Context extracted and stored in Redis
|
|
255
|
+
- Orchestrator invoked successfully
|
|
256
|
+
- All required API credentials validated
|
|
257
|
+
- Clean exit after spawning orchestrator
|
|
258
|
+
|
|
259
|
+
**Pipeline Success (monitored by orchestrator):**
|
|
260
|
+
- Step 1: Keyword research complete (≥10 target keywords)
|
|
261
|
+
- Step 2: Competitor analysis complete (≥3 competitors)
|
|
262
|
+
- Step 3: Outline approved (≥5 sections)
|
|
263
|
+
- Step 4: Research complete (≥5 sources)
|
|
264
|
+
- Step 5: Draft written (≥1500 words for blog)
|
|
265
|
+
- Step 6: SEO optimized (title tag, meta description, headers, schema)
|
|
266
|
+
- Step 7: Validation consensus ≥0.95
|
|
267
|
+
- Step 8: Published with schema markup
|
|
268
|
+
|
|
269
|
+
## Output Format
|
|
270
|
+
|
|
271
|
+
Return structured JSON for Main Chat visibility:
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"coordinator": "cfn-seo-coordinator",
|
|
276
|
+
"task_id": "seo-task-12345",
|
|
277
|
+
"content_type": "blog-post",
|
|
278
|
+
"target_keyword": "preserve family stories",
|
|
279
|
+
"brand": "OurStories",
|
|
280
|
+
"pipeline_steps": [1, 2, 3, 4, 5, 6, 7, 8],
|
|
281
|
+
"validators": ["humanizer-validator", "branding-validator", "audience-validator"],
|
|
282
|
+
"orchestrator_status": "started",
|
|
283
|
+
"orchestrator_pid": 98765,
|
|
284
|
+
"api_integrations": {
|
|
285
|
+
"dataforseo": "configured",
|
|
286
|
+
"openrouter": "configured",
|
|
287
|
+
"perplexity": "enabled"
|
|
288
|
+
},
|
|
289
|
+
"estimated_duration": "45-60 minutes",
|
|
290
|
+
"monitoring": "redis-cli HGETALL seo:task:seo-task-12345:status"
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## Redis Monitoring Commands
|
|
295
|
+
|
|
296
|
+
**For Main Chat / User:**
|
|
297
|
+
```bash
|
|
298
|
+
# Check overall status
|
|
299
|
+
redis-cli HGETALL "seo:task:$TASK_ID:status"
|
|
300
|
+
|
|
301
|
+
# Check current step
|
|
302
|
+
redis-cli HGET "seo:task:$TASK_ID:status" current_step
|
|
303
|
+
|
|
304
|
+
# Check validation scores
|
|
305
|
+
redis-cli HGETALL "seo:task:$TASK_ID:validation:iteration:1"
|
|
306
|
+
|
|
307
|
+
# Monitor orchestrator logs
|
|
308
|
+
redis-cli LRANGE "seo:task:$TASK_ID:logs" 0 -1
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## CLI Mode Cost Optimization
|
|
312
|
+
|
|
313
|
+
**Agent Spawning Pattern:**
|
|
314
|
+
```bash
|
|
315
|
+
# All SEO agents spawned via CLI (Z.ai routing)
|
|
316
|
+
npx claude-flow-novice agent-spawn seo-analytics-specialist \
|
|
317
|
+
--task-id "$TASK_ID" \
|
|
318
|
+
--context "Step 1: Keyword research for '$TARGET_KEYWORD'"
|
|
319
|
+
|
|
320
|
+
# Z.ai routing (~$0.50/1M tokens vs Anthropic $3-15/1M tokens)
|
|
321
|
+
# 10 agent calls x $0.10 avg = $1.00 per full pipeline
|
|
322
|
+
# vs Task() spawning: $5-15 per full pipeline
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Cost Savings:**
|
|
326
|
+
- CLI Mode: ~$1.00/pipeline (95% savings)
|
|
327
|
+
- Task Mode: ~$15/pipeline (debugging only)
|
|
328
|
+
|
|
329
|
+
## Error Handling
|
|
330
|
+
|
|
331
|
+
**Missing API Credentials:**
|
|
332
|
+
```bash
|
|
333
|
+
# Fallback to manual steps
|
|
334
|
+
if [ -z "$DATAFORSEO_EMAIL" ]; then
|
|
335
|
+
echo "Warning: DataForSEO not configured - Manual keyword research required"
|
|
336
|
+
redis-cli HSET "seo:task:$TASK_ID:warnings" dataforseo "manual_research_required"
|
|
337
|
+
fi
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**Orchestrator Failure:**
|
|
341
|
+
```bash
|
|
342
|
+
# Check orchestrator health
|
|
343
|
+
if ! ps -p $ORCHESTRATOR_PID > /dev/null 2>&1; then
|
|
344
|
+
echo "Error: Orchestrator process died unexpectedly"
|
|
345
|
+
redis-cli HSET "seo:task:$TASK_ID:status" orchestrator_status "failed"
|
|
346
|
+
exit 1
|
|
347
|
+
fi
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Integration with CFN Loop
|
|
351
|
+
|
|
352
|
+
**Not a CFN Loop Coordinator:**
|
|
353
|
+
- SEO pipeline is specialized (8-step sequential, not 3-loop validation)
|
|
354
|
+
- No Loop 3/Loop 2/Product Owner pattern
|
|
355
|
+
- Uses custom validation (3 validators with ≥0.95 consensus)
|
|
356
|
+
|
|
357
|
+
**Similarities:**
|
|
358
|
+
- CLI spawning for cost optimization
|
|
359
|
+
- Redis coordination
|
|
360
|
+
- Iteration-based improvement
|
|
361
|
+
- Confidence-based progression
|
|
362
|
+
|
|
363
|
+
**When to Use CFN Loop vs SEO Pipeline:**
|
|
364
|
+
- CFN Loop: Generic software development, features, bugs
|
|
365
|
+
- SEO Pipeline: SEO content creation specifically
|
|
366
|
+
|
|
367
|
+
## Workflow Example
|
|
368
|
+
|
|
369
|
+
**User Request:** "Write a blog post about preserving family stories for OurStories"
|
|
370
|
+
|
|
371
|
+
**Coordinator Actions:**
|
|
372
|
+
1. Classify task: `blog-post`
|
|
373
|
+
2. Extract context:
|
|
374
|
+
- Target Keyword: "preserve family stories" (auto-detected from title)
|
|
375
|
+
- Brand: "OurStories"
|
|
376
|
+
- Audience: "families, genealogists" (inferred)
|
|
377
|
+
3. Validate APIs: DataForSEO ✅, OpenRouter ✅
|
|
378
|
+
4. Store context in Redis
|
|
379
|
+
5. Invoke orchestrator:
|
|
380
|
+
```bash
|
|
381
|
+
./.claude/skills/seo-orchestration/orchestrate-seo.sh \
|
|
382
|
+
--task-id "seo-blog-67890" \
|
|
383
|
+
--content-type "blog-post" \
|
|
384
|
+
--target-keyword "preserve family stories" \
|
|
385
|
+
--brand "OurStories" \
|
|
386
|
+
--audience "families, genealogists" \
|
|
387
|
+
--iteration 1
|
|
388
|
+
```
|
|
389
|
+
6. Exit cleanly, orchestrator runs independently
|
|
390
|
+
|
|
391
|
+
**Orchestrator Executes:**
|
|
392
|
+
- Step 1: Keyword research (10 target keywords)
|
|
393
|
+
- Step 2: Competitor analysis (analyze top 3 ranking pages)
|
|
394
|
+
- Step 3: Content outline (5-7 sections)
|
|
395
|
+
- Step 4: Perplexity research (gather sources)
|
|
396
|
+
- Step 5: Write 1500+ word draft
|
|
397
|
+
- Step 6: SEO optimize (title tag, meta, headers, internal links)
|
|
398
|
+
- Step 7: Validate (humanizer + branding + audience ≥0.95 consensus)
|
|
399
|
+
- Step 8: Publish with Article schema
|
|
400
|
+
|
|
401
|
+
**Final Output:** `content/blog/preserve-family-stories.md` with full schema markup
|
|
402
|
+
|
|
403
|
+
## Related Documentation
|
|
404
|
+
|
|
405
|
+
- **Task Mode Guide:** `.claude/commands/seo/SEO_TASK_MODE.md` (Task() spawning alternative)
|
|
406
|
+
- **Agent Delegation Matrix:** `.claude/agents/cfn-seo-team/DELEGATION_MATRIX.md`
|
|
407
|
+
- **Integration Requirements:** `.claude/agents/cfn-seo-team/INTEGRATION_REQUIREMENTS.md`
|
|
408
|
+
- **SEO Orchestration Skill:** `.claude/skills/seo-orchestration/SKILL.md` (to be created)
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
**Version:** 1.0.0
|
|
413
|
+
**Last Updated:** 2025-11-01
|
|
414
|
+
**Maintained By:** CFN SEO Team
|