@lebtiga/sonic-agent 1.0.0
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/LICENSE.txt +223 -0
- package/README.md +61 -0
- package/bin/sonic.js +304 -0
- package/lib/index.js +20 -0
- package/lib/installer.js +156 -0
- package/lib/license.js +48 -0
- package/package.json +46 -0
- package/plugin/.claude-plugin/plugin.json +13 -0
- package/plugin/README.md +100 -0
- package/plugin/agents/sonic.md +80 -0
- package/plugin/commands/sonic-build.md +145 -0
- package/plugin/commands/sonic-help.md +71 -0
- package/plugin/skills/accessibility-qa/SKILL.md +160 -0
- package/plugin/skills/accessibility-qa/templates/accessibility-qa-report-template.md +123 -0
- package/plugin/skills/accessibility-qa/templates/wcag-compliance-statement.md +70 -0
- package/plugin/skills/aka-wireframe-wp/SKILL.md +149 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/README.md +190 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/footer.php +49 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/functions.php +395 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/header.php +58 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/index.php +39 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/page-answer.php +62 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/page-authority-hub.php +122 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/page-knowledge.php +58 -0
- package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/style.css +633 -0
- package/plugin/skills/aka-wireframe-wp/references/content-generator.md +371 -0
- package/plugin/skills/aka-wireframe-wp/references/internal-linker.md +430 -0
- package/plugin/skills/aka-wireframe-wp/references/orchestrator.md +269 -0
- package/plugin/skills/aka-wireframe-wp/references/prompts-library.md +880 -0
- package/plugin/skills/aka-wireframe-wp/references/seo-optimizer.md +433 -0
- package/plugin/skills/aka-wireframe-wp/references/strategy-planner.md +317 -0
- package/plugin/skills/aka-wireframe-wp/references/wordpress-deployer.md +545 -0
- package/plugin/skills/authority-site-builder/SKILL.md +138 -0
- package/plugin/skills/brand-philosophy/SKILL.md +77 -0
- package/plugin/skills/freepik-spaces/SKILL.md +122 -0
- package/plugin/skills/freepik-spaces/docs/automation-guide.md +233 -0
- package/plugin/skills/freepik-spaces/docs/research-notes.md +264 -0
- package/plugin/skills/freepik-spaces/plans/naseberry-demo-plan.md +320 -0
- package/plugin/skills/freepik-spaces/templates/naseberry-demo.json +302 -0
- package/plugin/skills/freepik-spaces/templates/saas-demo.json +212 -0
- package/plugin/skills/frontend-design/LICENSE.txt +177 -0
- package/plugin/skills/frontend-design/SKILL.md +77 -0
- package/plugin/skills/programmatic-seo/SKILL.md +236 -0
- package/plugin/skills/programmatic-seo/references/playbooks.md +293 -0
- package/plugin/skills/seo-qa/SKILL.md +132 -0
- package/plugin/skills/seo-qa/templates/schema-localbusiness.json +49 -0
- package/plugin/skills/seo-qa/templates/schema-service.json +36 -0
- package/plugin/skills/seo-qa/templates/seo-qa-report-template.md +90 -0
- package/plugin/skills/visual-identity/SKILL.md +109 -0
- package/plugin/skills/visual-identity/templates/style-guide-template.md +108 -0
- package/plugin/skills/website-image-gen/SKILL.md +82 -0
- package/plugin/skills/website-image-gen/templates/blog-featured.md +56 -0
- package/plugin/skills/website-image-gen/templates/hero-service-photo.md +56 -0
- package/plugin/skills/wordpress-pro/SKILL.md +105 -0
- package/plugin/skills/wordpress-pro/references/gutenberg-blocks.md +870 -0
- package/plugin/skills/wordpress-pro/references/hooks-filters.md +845 -0
- package/plugin/skills/wordpress-pro/references/performance-security.md +1012 -0
- package/plugin/skills/wordpress-pro/references/plugin-architecture.md +1041 -0
- package/plugin/skills/wordpress-pro/references/theme-development.md +858 -0
- package/plugin/sops/SOP-Sonic 777/authority-site-sop.html +1100 -0
- package/plugin/sops/SOP-WORDPRESS-330-PAGE-SITES.md +926 -0
- package/scripts/postinstall.js +109 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: programmatic-seo
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: When the user wants to create SEO-driven pages at scale using templates and data. Also use when the user mentions "programmatic SEO," "template pages," "pages at scale," "directory pages," "location pages," "[keyword] + [city] pages," "comparison pages," "integration pages," or "building many pages for SEO." For auditing existing SEO issues, see seo-audit.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Programmatic SEO
|
|
8
|
+
|
|
9
|
+
You are an expert in programmatic SEO—building SEO-optimized pages at scale using templates and data. Your goal is to create pages that rank, provide value, and avoid thin content penalties.
|
|
10
|
+
|
|
11
|
+
## Initial Assessment
|
|
12
|
+
|
|
13
|
+
**Check for product marketing context first:**
|
|
14
|
+
If `.claude/product-marketing-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
|
|
15
|
+
|
|
16
|
+
Before designing a programmatic SEO strategy, understand:
|
|
17
|
+
|
|
18
|
+
1. **Business Context**
|
|
19
|
+
- What's the product/service?
|
|
20
|
+
- Who is the target audience?
|
|
21
|
+
- What's the conversion goal for these pages?
|
|
22
|
+
|
|
23
|
+
2. **Opportunity Assessment**
|
|
24
|
+
- What search patterns exist?
|
|
25
|
+
- How many potential pages?
|
|
26
|
+
- What's the search volume distribution?
|
|
27
|
+
|
|
28
|
+
3. **Competitive Landscape**
|
|
29
|
+
- Who ranks for these terms now?
|
|
30
|
+
- What do their pages look like?
|
|
31
|
+
- Can you realistically compete?
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Core Principles
|
|
36
|
+
|
|
37
|
+
### 1. Unique Value Per Page
|
|
38
|
+
- Every page must provide value specific to that page
|
|
39
|
+
- Not just swapped variables in a template
|
|
40
|
+
- Maximize unique content—the more differentiated, the better
|
|
41
|
+
|
|
42
|
+
### 2. Proprietary Data Wins
|
|
43
|
+
Hierarchy of data defensibility:
|
|
44
|
+
1. Proprietary (you created it)
|
|
45
|
+
2. Product-derived (from your users)
|
|
46
|
+
3. User-generated (your community)
|
|
47
|
+
4. Licensed (exclusive access)
|
|
48
|
+
5. Public (anyone can use—weakest)
|
|
49
|
+
|
|
50
|
+
### 3. Clean URL Structure
|
|
51
|
+
**Always use subfolders, not subdomains**:
|
|
52
|
+
- Good: `yoursite.com/templates/resume/`
|
|
53
|
+
- Bad: `templates.yoursite.com/resume/`
|
|
54
|
+
|
|
55
|
+
### 4. Genuine Search Intent Match
|
|
56
|
+
Pages must actually answer what people are searching for.
|
|
57
|
+
|
|
58
|
+
### 5. Quality Over Quantity
|
|
59
|
+
Better to have 100 great pages than 10,000 thin ones.
|
|
60
|
+
|
|
61
|
+
### 6. Avoid Google Penalties
|
|
62
|
+
- No doorway pages
|
|
63
|
+
- No keyword stuffing
|
|
64
|
+
- No duplicate content
|
|
65
|
+
- Genuine utility for users
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## The 12 Playbooks (Overview)
|
|
70
|
+
|
|
71
|
+
| Playbook | Pattern | Example |
|
|
72
|
+
|----------|---------|---------|
|
|
73
|
+
| Templates | "[Type] template" | "resume template" |
|
|
74
|
+
| Curation | "best [category]" | "best website builders" |
|
|
75
|
+
| Conversions | "[X] to [Y]" | "$10 USD to GBP" |
|
|
76
|
+
| Comparisons | "[X] vs [Y]" | "webflow vs wordpress" |
|
|
77
|
+
| Examples | "[type] examples" | "landing page examples" |
|
|
78
|
+
| Locations | "[service] in [location]" | "dentists in austin" |
|
|
79
|
+
| Personas | "[product] for [audience]" | "crm for real estate" |
|
|
80
|
+
| Integrations | "[product A] [product B] integration" | "slack asana integration" |
|
|
81
|
+
| Glossary | "what is [term]" | "what is pSEO" |
|
|
82
|
+
| Translations | Content in multiple languages | Localized content |
|
|
83
|
+
| Directory | "[category] tools" | "ai copywriting tools" |
|
|
84
|
+
| Profiles | "[entity name]" | "stripe ceo" |
|
|
85
|
+
|
|
86
|
+
**For detailed playbook implementation**: See [references/playbooks.md](references/playbooks.md)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Choosing Your Playbook
|
|
91
|
+
|
|
92
|
+
| If you have... | Consider... |
|
|
93
|
+
|----------------|-------------|
|
|
94
|
+
| Proprietary data | Directories, Profiles |
|
|
95
|
+
| Product with integrations | Integrations |
|
|
96
|
+
| Design/creative product | Templates, Examples |
|
|
97
|
+
| Multi-segment audience | Personas |
|
|
98
|
+
| Local presence | Locations |
|
|
99
|
+
| Tool or utility product | Conversions |
|
|
100
|
+
| Content/expertise | Glossary, Curation |
|
|
101
|
+
| Competitor landscape | Comparisons |
|
|
102
|
+
|
|
103
|
+
You can layer multiple playbooks (e.g., "Best coworking spaces in San Diego").
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Implementation Framework
|
|
108
|
+
|
|
109
|
+
### 1. Keyword Pattern Research
|
|
110
|
+
|
|
111
|
+
**Identify the pattern:**
|
|
112
|
+
- What's the repeating structure?
|
|
113
|
+
- What are the variables?
|
|
114
|
+
- How many unique combinations exist?
|
|
115
|
+
|
|
116
|
+
**Validate demand:**
|
|
117
|
+
- Aggregate search volume
|
|
118
|
+
- Volume distribution (head vs. long tail)
|
|
119
|
+
- Trend direction
|
|
120
|
+
|
|
121
|
+
### 2. Data Requirements
|
|
122
|
+
|
|
123
|
+
**Identify data sources:**
|
|
124
|
+
- What data populates each page?
|
|
125
|
+
- Is it first-party, scraped, licensed, public?
|
|
126
|
+
- How is it updated?
|
|
127
|
+
|
|
128
|
+
### 3. Template Design
|
|
129
|
+
|
|
130
|
+
**Page structure:**
|
|
131
|
+
- Header with target keyword
|
|
132
|
+
- Unique intro (not just variables swapped)
|
|
133
|
+
- Data-driven sections
|
|
134
|
+
- Related pages / internal links
|
|
135
|
+
- CTAs appropriate to intent
|
|
136
|
+
|
|
137
|
+
**Ensuring uniqueness:**
|
|
138
|
+
- Each page needs unique value
|
|
139
|
+
- Conditional content based on data
|
|
140
|
+
- Original insights/analysis per page
|
|
141
|
+
|
|
142
|
+
### 4. Internal Linking Architecture
|
|
143
|
+
|
|
144
|
+
**Hub and spoke model:**
|
|
145
|
+
- Hub: Main category page
|
|
146
|
+
- Spokes: Individual programmatic pages
|
|
147
|
+
- Cross-links between related spokes
|
|
148
|
+
|
|
149
|
+
**Avoid orphan pages:**
|
|
150
|
+
- Every page reachable from main site
|
|
151
|
+
- XML sitemap for all pages
|
|
152
|
+
- Breadcrumbs with structured data
|
|
153
|
+
|
|
154
|
+
### 5. Indexation Strategy
|
|
155
|
+
|
|
156
|
+
- Prioritize high-volume patterns
|
|
157
|
+
- Noindex very thin variations
|
|
158
|
+
- Manage crawl budget thoughtfully
|
|
159
|
+
- Separate sitemaps by page type
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Quality Checks
|
|
164
|
+
|
|
165
|
+
### Pre-Launch Checklist
|
|
166
|
+
|
|
167
|
+
**Content quality:**
|
|
168
|
+
- [ ] Each page provides unique value
|
|
169
|
+
- [ ] Answers search intent
|
|
170
|
+
- [ ] Readable and useful
|
|
171
|
+
|
|
172
|
+
**Technical SEO:**
|
|
173
|
+
- [ ] Unique titles and meta descriptions
|
|
174
|
+
- [ ] Proper heading structure
|
|
175
|
+
- [ ] Schema markup implemented
|
|
176
|
+
- [ ] Page speed acceptable
|
|
177
|
+
|
|
178
|
+
**Internal linking:**
|
|
179
|
+
- [ ] Connected to site architecture
|
|
180
|
+
- [ ] Related pages linked
|
|
181
|
+
- [ ] No orphan pages
|
|
182
|
+
|
|
183
|
+
**Indexation:**
|
|
184
|
+
- [ ] In XML sitemap
|
|
185
|
+
- [ ] Crawlable
|
|
186
|
+
- [ ] No conflicting noindex
|
|
187
|
+
|
|
188
|
+
### Post-Launch Monitoring
|
|
189
|
+
|
|
190
|
+
Track: Indexation rate, Rankings, Traffic, Engagement, Conversion
|
|
191
|
+
|
|
192
|
+
Watch for: Thin content warnings, Ranking drops, Manual actions, Crawl errors
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Common Mistakes
|
|
197
|
+
|
|
198
|
+
- **Thin content**: Just swapping city names in identical content
|
|
199
|
+
- **Keyword cannibalization**: Multiple pages targeting same keyword
|
|
200
|
+
- **Over-generation**: Creating pages with no search demand
|
|
201
|
+
- **Poor data quality**: Outdated or incorrect information
|
|
202
|
+
- **Ignoring UX**: Pages exist for Google, not users
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Output Format
|
|
207
|
+
|
|
208
|
+
### Strategy Document
|
|
209
|
+
- Opportunity analysis
|
|
210
|
+
- Implementation plan
|
|
211
|
+
- Content guidelines
|
|
212
|
+
|
|
213
|
+
### Page Template
|
|
214
|
+
- URL structure
|
|
215
|
+
- Title/meta templates
|
|
216
|
+
- Content outline
|
|
217
|
+
- Schema markup
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Task-Specific Questions
|
|
222
|
+
|
|
223
|
+
1. What keyword patterns are you targeting?
|
|
224
|
+
2. What data do you have (or can acquire)?
|
|
225
|
+
3. How many pages are you planning?
|
|
226
|
+
4. What does your site authority look like?
|
|
227
|
+
5. Who currently ranks for these terms?
|
|
228
|
+
6. What's your technical stack?
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Related Skills
|
|
233
|
+
|
|
234
|
+
- **seo-audit**: For auditing programmatic pages after launch
|
|
235
|
+
- **schema-markup**: For adding structured data
|
|
236
|
+
- **competitor-alternatives**: For comparison page frameworks
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# The 12 Programmatic SEO Playbooks
|
|
2
|
+
|
|
3
|
+
Beyond mixing and matching data point permutations, these are the proven playbooks for programmatic SEO.
|
|
4
|
+
|
|
5
|
+
## 1. Templates
|
|
6
|
+
|
|
7
|
+
**Pattern**: "[Type] template" or "free [type] template"
|
|
8
|
+
**Example searches**: "resume template", "invoice template", "pitch deck template"
|
|
9
|
+
|
|
10
|
+
**What it is**: Downloadable or interactive templates users can use directly.
|
|
11
|
+
|
|
12
|
+
**Why it works**:
|
|
13
|
+
- High intent—people need it now
|
|
14
|
+
- Shareable/linkable assets
|
|
15
|
+
- Natural for product-led companies
|
|
16
|
+
|
|
17
|
+
**Value requirements**:
|
|
18
|
+
- Actually usable templates (not just previews)
|
|
19
|
+
- Multiple variations per type
|
|
20
|
+
- Quality comparable to paid options
|
|
21
|
+
- Easy download/use flow
|
|
22
|
+
|
|
23
|
+
**URL structure**: `/templates/[type]/` or `/templates/[category]/[type]/`
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. Curation
|
|
28
|
+
|
|
29
|
+
**Pattern**: "best [category]" or "top [number] [things]"
|
|
30
|
+
**Example searches**: "best website builders", "top 10 crm software", "best free design tools"
|
|
31
|
+
|
|
32
|
+
**What it is**: Curated lists ranking or recommending options in a category.
|
|
33
|
+
|
|
34
|
+
**Why it works**:
|
|
35
|
+
- Comparison shoppers searching for guidance
|
|
36
|
+
- High commercial intent
|
|
37
|
+
- Evergreen with updates
|
|
38
|
+
|
|
39
|
+
**Value requirements**:
|
|
40
|
+
- Genuine evaluation criteria
|
|
41
|
+
- Real testing or expertise
|
|
42
|
+
- Regular updates (date visible)
|
|
43
|
+
- Not just affiliate-driven rankings
|
|
44
|
+
|
|
45
|
+
**URL structure**: `/best/[category]/` or `/[category]/best/`
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 3. Conversions
|
|
50
|
+
|
|
51
|
+
**Pattern**: "[X] to [Y]" or "[amount] [unit] in [unit]"
|
|
52
|
+
**Example searches**: "$10 USD to GBP", "100 kg to lbs", "pdf to word"
|
|
53
|
+
|
|
54
|
+
**What it is**: Tools or pages that convert between formats, units, or currencies.
|
|
55
|
+
|
|
56
|
+
**Why it works**:
|
|
57
|
+
- Instant utility
|
|
58
|
+
- Extremely high search volume
|
|
59
|
+
- Repeat usage potential
|
|
60
|
+
|
|
61
|
+
**Value requirements**:
|
|
62
|
+
- Accurate, real-time data
|
|
63
|
+
- Fast, functional tool
|
|
64
|
+
- Related conversions suggested
|
|
65
|
+
- Mobile-friendly interface
|
|
66
|
+
|
|
67
|
+
**URL structure**: `/convert/[from]-to-[to]/` or `/[from]-to-[to]-converter/`
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 4. Comparisons
|
|
72
|
+
|
|
73
|
+
**Pattern**: "[X] vs [Y]" or "[X] alternative"
|
|
74
|
+
**Example searches**: "webflow vs wordpress", "notion vs coda", "figma alternatives"
|
|
75
|
+
|
|
76
|
+
**What it is**: Head-to-head comparisons between products, tools, or options.
|
|
77
|
+
|
|
78
|
+
**Why it works**:
|
|
79
|
+
- High purchase intent
|
|
80
|
+
- Clear search pattern
|
|
81
|
+
- Scales with number of competitors
|
|
82
|
+
|
|
83
|
+
**Value requirements**:
|
|
84
|
+
- Honest, balanced analysis
|
|
85
|
+
- Actual feature comparison data
|
|
86
|
+
- Clear recommendation by use case
|
|
87
|
+
- Updated when products change
|
|
88
|
+
|
|
89
|
+
**URL structure**: `/compare/[x]-vs-[y]/` or `/[x]-vs-[y]/`
|
|
90
|
+
|
|
91
|
+
*See also: competitor-alternatives skill for detailed frameworks*
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 5. Examples
|
|
96
|
+
|
|
97
|
+
**Pattern**: "[type] examples" or "[category] inspiration"
|
|
98
|
+
**Example searches**: "saas landing page examples", "email subject line examples", "portfolio website examples"
|
|
99
|
+
|
|
100
|
+
**What it is**: Galleries or collections of real-world examples for inspiration.
|
|
101
|
+
|
|
102
|
+
**Why it works**:
|
|
103
|
+
- Research phase traffic
|
|
104
|
+
- Highly shareable
|
|
105
|
+
- Natural for design/creative tools
|
|
106
|
+
|
|
107
|
+
**Value requirements**:
|
|
108
|
+
- Real, high-quality examples
|
|
109
|
+
- Screenshots or embeds
|
|
110
|
+
- Categorization/filtering
|
|
111
|
+
- Analysis of why they work
|
|
112
|
+
|
|
113
|
+
**URL structure**: `/examples/[type]/` or `/[type]-examples/`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 6. Locations
|
|
118
|
+
|
|
119
|
+
**Pattern**: "[service/thing] in [location]"
|
|
120
|
+
**Example searches**: "coworking spaces in san diego", "dentists in austin", "best restaurants in brooklyn"
|
|
121
|
+
|
|
122
|
+
**What it is**: Location-specific pages for services, businesses, or information.
|
|
123
|
+
|
|
124
|
+
**Why it works**:
|
|
125
|
+
- Local intent is massive
|
|
126
|
+
- Scales with geography
|
|
127
|
+
- Natural for marketplaces/directories
|
|
128
|
+
|
|
129
|
+
**Value requirements**:
|
|
130
|
+
- Actual local data (not just city name swapped)
|
|
131
|
+
- Local providers/options listed
|
|
132
|
+
- Location-specific insights (pricing, regulations)
|
|
133
|
+
- Map integration helpful
|
|
134
|
+
|
|
135
|
+
**URL structure**: `/[service]/[city]/` or `/locations/[city]/[service]/`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 7. Personas
|
|
140
|
+
|
|
141
|
+
**Pattern**: "[product] for [audience]" or "[solution] for [role/industry]"
|
|
142
|
+
**Example searches**: "payroll software for agencies", "crm for real estate", "project management for freelancers"
|
|
143
|
+
|
|
144
|
+
**What it is**: Tailored landing pages addressing specific audience segments.
|
|
145
|
+
|
|
146
|
+
**Why it works**:
|
|
147
|
+
- Speaks directly to searcher's context
|
|
148
|
+
- Higher conversion than generic pages
|
|
149
|
+
- Scales with personas
|
|
150
|
+
|
|
151
|
+
**Value requirements**:
|
|
152
|
+
- Genuine persona-specific content
|
|
153
|
+
- Relevant features highlighted
|
|
154
|
+
- Testimonials from that segment
|
|
155
|
+
- Use cases specific to audience
|
|
156
|
+
|
|
157
|
+
**URL structure**: `/for/[persona]/` or `/solutions/[industry]/`
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 8. Integrations
|
|
162
|
+
|
|
163
|
+
**Pattern**: "[your product] [other product] integration" or "[product] + [product]"
|
|
164
|
+
**Example searches**: "slack asana integration", "zapier airtable", "hubspot salesforce sync"
|
|
165
|
+
|
|
166
|
+
**What it is**: Pages explaining how your product works with other tools.
|
|
167
|
+
|
|
168
|
+
**Why it works**:
|
|
169
|
+
- Captures users of other products
|
|
170
|
+
- High intent (they want the solution)
|
|
171
|
+
- Scales with integration ecosystem
|
|
172
|
+
|
|
173
|
+
**Value requirements**:
|
|
174
|
+
- Real integration details
|
|
175
|
+
- Setup instructions
|
|
176
|
+
- Use cases for the combination
|
|
177
|
+
- Working integration (not vaporware)
|
|
178
|
+
|
|
179
|
+
**URL structure**: `/integrations/[product]/` or `/connect/[product]/`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 9. Glossary
|
|
184
|
+
|
|
185
|
+
**Pattern**: "what is [term]" or "[term] definition" or "[term] meaning"
|
|
186
|
+
**Example searches**: "what is pSEO", "api definition", "what does crm stand for"
|
|
187
|
+
|
|
188
|
+
**What it is**: Educational definitions of industry terms and concepts.
|
|
189
|
+
|
|
190
|
+
**Why it works**:
|
|
191
|
+
- Top-of-funnel awareness
|
|
192
|
+
- Establishes expertise
|
|
193
|
+
- Natural internal linking opportunities
|
|
194
|
+
|
|
195
|
+
**Value requirements**:
|
|
196
|
+
- Clear, accurate definitions
|
|
197
|
+
- Examples and context
|
|
198
|
+
- Related terms linked
|
|
199
|
+
- More depth than a dictionary
|
|
200
|
+
|
|
201
|
+
**URL structure**: `/glossary/[term]/` or `/learn/[term]/`
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 10. Translations
|
|
206
|
+
|
|
207
|
+
**Pattern**: Same content in multiple languages
|
|
208
|
+
**Example searches**: "qué es pSEO", "was ist SEO", "マーケティングとは"
|
|
209
|
+
|
|
210
|
+
**What it is**: Your content translated and localized for other language markets.
|
|
211
|
+
|
|
212
|
+
**Why it works**:
|
|
213
|
+
- Opens entirely new markets
|
|
214
|
+
- Lower competition in many languages
|
|
215
|
+
- Multiplies your content reach
|
|
216
|
+
|
|
217
|
+
**Value requirements**:
|
|
218
|
+
- Quality translation (not just Google Translate)
|
|
219
|
+
- Cultural localization
|
|
220
|
+
- hreflang tags properly implemented
|
|
221
|
+
- Native speaker review
|
|
222
|
+
|
|
223
|
+
**URL structure**: `/[lang]/[page]/` or `yoursite.com/es/`, `/de/`, etc.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 11. Directory
|
|
228
|
+
|
|
229
|
+
**Pattern**: "[category] tools" or "[type] software" or "[category] companies"
|
|
230
|
+
**Example searches**: "ai copywriting tools", "email marketing software", "crm companies"
|
|
231
|
+
|
|
232
|
+
**What it is**: Comprehensive directories listing options in a category.
|
|
233
|
+
|
|
234
|
+
**Why it works**:
|
|
235
|
+
- Research phase capture
|
|
236
|
+
- Link building magnet
|
|
237
|
+
- Natural for aggregators/reviewers
|
|
238
|
+
|
|
239
|
+
**Value requirements**:
|
|
240
|
+
- Comprehensive coverage
|
|
241
|
+
- Useful filtering/sorting
|
|
242
|
+
- Details per listing (not just names)
|
|
243
|
+
- Regular updates
|
|
244
|
+
|
|
245
|
+
**URL structure**: `/directory/[category]/` or `/[category]-directory/`
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 12. Profiles
|
|
250
|
+
|
|
251
|
+
**Pattern**: "[person/company name]" or "[entity] + [attribute]"
|
|
252
|
+
**Example searches**: "stripe ceo", "airbnb founding story", "elon musk companies"
|
|
253
|
+
|
|
254
|
+
**What it is**: Profile pages about notable people, companies, or entities.
|
|
255
|
+
|
|
256
|
+
**Why it works**:
|
|
257
|
+
- Informational intent traffic
|
|
258
|
+
- Builds topical authority
|
|
259
|
+
- Natural for B2B, news, research
|
|
260
|
+
|
|
261
|
+
**Value requirements**:
|
|
262
|
+
- Accurate, sourced information
|
|
263
|
+
- Regularly updated
|
|
264
|
+
- Unique insights or aggregation
|
|
265
|
+
- Not just Wikipedia rehash
|
|
266
|
+
|
|
267
|
+
**URL structure**: `/people/[name]/` or `/companies/[name]/`
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Choosing Your Playbook
|
|
272
|
+
|
|
273
|
+
### Match to Your Assets
|
|
274
|
+
|
|
275
|
+
| If you have... | Consider... |
|
|
276
|
+
|----------------|-------------|
|
|
277
|
+
| Proprietary data | Stats, Directories, Profiles |
|
|
278
|
+
| Product with integrations | Integrations |
|
|
279
|
+
| Design/creative product | Templates, Examples |
|
|
280
|
+
| Multi-segment audience | Personas |
|
|
281
|
+
| Local presence | Locations |
|
|
282
|
+
| Tool or utility product | Conversions |
|
|
283
|
+
| Content/expertise | Glossary, Curation |
|
|
284
|
+
| International potential | Translations |
|
|
285
|
+
| Competitor landscape | Comparisons |
|
|
286
|
+
|
|
287
|
+
### Combine Playbooks
|
|
288
|
+
|
|
289
|
+
You can layer multiple playbooks:
|
|
290
|
+
- **Locations + Personas**: "Marketing agencies for startups in Austin"
|
|
291
|
+
- **Curation + Locations**: "Best coworking spaces in San Diego"
|
|
292
|
+
- **Integrations + Personas**: "Slack for sales teams"
|
|
293
|
+
- **Glossary + Translations**: Multi-language educational content
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seo-qa
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Final SEO quality assurance pass on a built site. Scans every page for duplicate H1s/titles/meta descriptions, missing meta tags, missing schema markup, broken internal links, and generates sitemap.xml. Run this BEFORE handing the site over. Pass/fail report with specific URLs to fix.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SEO QA Skill
|
|
8
|
+
|
|
9
|
+
The safety net that catches what bulk generation misses. Run this AFTER Stage 5 (bulk page generation) and BEFORE handing the site to the client.
|
|
10
|
+
|
|
11
|
+
## When to use this
|
|
12
|
+
|
|
13
|
+
- After `programmatic-seo` + `wordpress-pro` have deployed all pages
|
|
14
|
+
- Before closing the project / handing to the client
|
|
15
|
+
- Anytime the user says "audit my site" or "is the SEO right?"
|
|
16
|
+
|
|
17
|
+
## What this skill checks
|
|
18
|
+
|
|
19
|
+
### 🔴 Critical — site won't rank without these
|
|
20
|
+
|
|
21
|
+
1. **Duplicate H1s** — every page must have a unique H1
|
|
22
|
+
2. **Duplicate meta titles** — every `<title>` must be unique
|
|
23
|
+
3. **Duplicate meta descriptions** — every meta description must be unique (or pulled from page-specific data)
|
|
24
|
+
4. **Missing H1** — every page must have exactly ONE H1
|
|
25
|
+
5. **Missing meta title** — required on every page
|
|
26
|
+
6. **Missing meta description** — required on every page
|
|
27
|
+
7. **Title length** — 50-60 chars (warns under 30 or over 70)
|
|
28
|
+
8. **Meta description length** — 140-160 chars (warns under 100 or over 175)
|
|
29
|
+
|
|
30
|
+
### 🟡 Important — affects rankings
|
|
31
|
+
|
|
32
|
+
9. **Schema markup present** — at minimum, LocalBusiness on homepage + Service schema on service pages
|
|
33
|
+
10. **Canonical tags** — every page should self-canonical (or explicitly canonical to a parent if duplicate)
|
|
34
|
+
11. **Internal link health** — no broken internal links, every page linked from at least one other page
|
|
35
|
+
12. **Image alt text** — every image must have descriptive alt
|
|
36
|
+
13. **Heading hierarchy** — H1 → H2 → H3 (no skipping levels)
|
|
37
|
+
|
|
38
|
+
### 🟢 Nice-to-have
|
|
39
|
+
|
|
40
|
+
14. **Open Graph tags** — `og:title`, `og:description`, `og:image` on every page
|
|
41
|
+
15. **Twitter Card tags** — `twitter:card`, `twitter:title`, etc.
|
|
42
|
+
16. **Robots meta** — explicit `index,follow` (or noindex when intended)
|
|
43
|
+
17. **Sitemap.xml** — generated and submitted to Google Search Console
|
|
44
|
+
|
|
45
|
+
## How to run
|
|
46
|
+
|
|
47
|
+
### Step 1: Pull the page list
|
|
48
|
+
Use the WP REST API to get all published pages and posts:
|
|
49
|
+
```
|
|
50
|
+
GET /wp-json/wp/v2/pages?per_page=100&status=publish
|
|
51
|
+
GET /wp-json/wp/v2/posts?per_page=100&status=publish
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Step 2: Fetch each page's HTML
|
|
55
|
+
For each URL, fetch the rendered HTML. Parse:
|
|
56
|
+
- `<title>`
|
|
57
|
+
- `<meta name="description">`
|
|
58
|
+
- `<h1>`, `<h2>`, `<h3>` tags
|
|
59
|
+
- `<link rel="canonical">`
|
|
60
|
+
- `<script type="application/ld+json">` (schema)
|
|
61
|
+
- `<a href="">` for internal links
|
|
62
|
+
- `<img alt="">`
|
|
63
|
+
- Open Graph + Twitter meta
|
|
64
|
+
|
|
65
|
+
### Step 3: Run the checks
|
|
66
|
+
Build a report with:
|
|
67
|
+
- Per-page checklist (pass/fail per check)
|
|
68
|
+
- Site-wide duplicate scans (titles, H1s, descriptions)
|
|
69
|
+
- Top 10 pages with most issues
|
|
70
|
+
- Critical issues count (blockers)
|
|
71
|
+
- Important issues count (rankings impact)
|
|
72
|
+
|
|
73
|
+
### Step 4: Generate fixes
|
|
74
|
+
For each issue found, generate the fix:
|
|
75
|
+
- Duplicate H1 → suggest unique H1 based on page topic
|
|
76
|
+
- Missing meta description → generate one from first 155 chars of page content
|
|
77
|
+
- Missing schema → generate LocalBusiness/Service JSON-LD
|
|
78
|
+
- Missing alt text → generate descriptive alt from image filename + context
|
|
79
|
+
|
|
80
|
+
### Step 5: Apply fixes via WP REST API
|
|
81
|
+
With user confirmation, push fixes back to WordPress:
|
|
82
|
+
- `POST /wp-json/wp/v2/pages/{id}` with updated content/meta
|
|
83
|
+
- Update Yoast/RankMath fields if those plugins are active
|
|
84
|
+
- Update featured image alt text via `/wp-json/wp/v2/media/{id}`
|
|
85
|
+
|
|
86
|
+
### Step 6: Generate sitemap.xml
|
|
87
|
+
Build a clean `sitemap.xml`:
|
|
88
|
+
- All published pages and posts
|
|
89
|
+
- `<lastmod>` from WordPress modified date
|
|
90
|
+
- `<priority>` based on page depth (homepage 1.0, service pages 0.8, blog posts 0.6)
|
|
91
|
+
- `<changefreq>` based on content type
|
|
92
|
+
|
|
93
|
+
Save to project workspace AND offer to upload to WP root.
|
|
94
|
+
|
|
95
|
+
### Step 7: Final report
|
|
96
|
+
Output `SEO-QA-REPORT.md` with:
|
|
97
|
+
- ✅ Total pages scanned
|
|
98
|
+
- 🔴 Critical issues (count + URLs)
|
|
99
|
+
- 🟡 Important issues (count + URLs)
|
|
100
|
+
- 🟢 Recommendations
|
|
101
|
+
- 📊 Before/after if fixes were applied
|
|
102
|
+
- 🔗 Sitemap URL
|
|
103
|
+
|
|
104
|
+
## Templates
|
|
105
|
+
|
|
106
|
+
See `templates/seo-qa-report-template.md` for the report format.
|
|
107
|
+
See `templates/schema-localbusiness.json` and `schema-service.json` for schema templates.
|
|
108
|
+
|
|
109
|
+
## Hard rules
|
|
110
|
+
|
|
111
|
+
- ❌ Never close a project (Stage 6 of /sonic-build) without running SEO QA
|
|
112
|
+
- ❌ Never apply fixes without showing the user what changed first
|
|
113
|
+
- ✅ Always save SEO-QA-REPORT.md to project workspace
|
|
114
|
+
- ✅ Always offer to submit sitemap to Google Search Console (via WP plugin or manual instruction)
|
|
115
|
+
|
|
116
|
+
## Common patterns to fix
|
|
117
|
+
|
|
118
|
+
### Duplicate H1 across location pages
|
|
119
|
+
**Bad:** Every Tampa, Brandon, Plant City page has `<h1>HVAC Services</h1>`
|
|
120
|
+
**Fix:** `<h1>HVAC Services in {City}, FL</h1>` (rebuild from data)
|
|
121
|
+
|
|
122
|
+
### Generic meta descriptions
|
|
123
|
+
**Bad:** "We are the best HVAC company in Florida" (on 50 pages)
|
|
124
|
+
**Fix:** Pull first sentence of each page's intro that mentions the city + service
|
|
125
|
+
|
|
126
|
+
### Missing schema on service pages
|
|
127
|
+
**Bad:** Plain HTML with no `<script type="application/ld+json">`
|
|
128
|
+
**Fix:** Generate Service schema with `serviceType`, `provider`, `areaServed`, `description`
|
|
129
|
+
|
|
130
|
+
### Image alt text reading "image"
|
|
131
|
+
**Bad:** `<img src="hvac-tampa.jpg" alt="image">`
|
|
132
|
+
**Fix:** `<img src="hvac-tampa.jpg" alt="HVAC technician installing AC unit in Tampa home">`
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "LocalBusiness",
|
|
4
|
+
"name": "{{BUSINESS_NAME}}",
|
|
5
|
+
"description": "{{SHORT_DESCRIPTION}}",
|
|
6
|
+
"url": "{{HOMEPAGE_URL}}",
|
|
7
|
+
"telephone": "{{PHONE}}",
|
|
8
|
+
"email": "{{EMAIL}}",
|
|
9
|
+
"priceRange": "{{PRICE_RANGE_DOLLAR_SIGNS}}",
|
|
10
|
+
"image": "{{LOGO_OR_HERO_URL}}",
|
|
11
|
+
"address": {
|
|
12
|
+
"@type": "PostalAddress",
|
|
13
|
+
"streetAddress": "{{STREET}}",
|
|
14
|
+
"addressLocality": "{{CITY}}",
|
|
15
|
+
"addressRegion": "{{STATE}}",
|
|
16
|
+
"postalCode": "{{ZIP}}",
|
|
17
|
+
"addressCountry": "US"
|
|
18
|
+
},
|
|
19
|
+
"geo": {
|
|
20
|
+
"@type": "GeoCoordinates",
|
|
21
|
+
"latitude": "{{LATITUDE}}",
|
|
22
|
+
"longitude": "{{LONGITUDE}}"
|
|
23
|
+
},
|
|
24
|
+
"openingHoursSpecification": [
|
|
25
|
+
{
|
|
26
|
+
"@type": "OpeningHoursSpecification",
|
|
27
|
+
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
|
|
28
|
+
"opens": "08:00",
|
|
29
|
+
"closes": "18:00"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"areaServed": [
|
|
33
|
+
{
|
|
34
|
+
"@type": "City",
|
|
35
|
+
"name": "{{PRIMARY_CITY}}"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"sameAs": [
|
|
39
|
+
"{{FACEBOOK_URL}}",
|
|
40
|
+
"{{INSTAGRAM_URL}}",
|
|
41
|
+
"{{LINKEDIN_URL}}",
|
|
42
|
+
"{{GOOGLE_BUSINESS_PROFILE_URL}}"
|
|
43
|
+
],
|
|
44
|
+
"aggregateRating": {
|
|
45
|
+
"@type": "AggregateRating",
|
|
46
|
+
"ratingValue": "{{AVERAGE_RATING}}",
|
|
47
|
+
"reviewCount": "{{REVIEW_COUNT}}"
|
|
48
|
+
}
|
|
49
|
+
}
|