@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.
Files changed (62) hide show
  1. package/LICENSE.txt +223 -0
  2. package/README.md +61 -0
  3. package/bin/sonic.js +304 -0
  4. package/lib/index.js +20 -0
  5. package/lib/installer.js +156 -0
  6. package/lib/license.js +48 -0
  7. package/package.json +46 -0
  8. package/plugin/.claude-plugin/plugin.json +13 -0
  9. package/plugin/README.md +100 -0
  10. package/plugin/agents/sonic.md +80 -0
  11. package/plugin/commands/sonic-build.md +145 -0
  12. package/plugin/commands/sonic-help.md +71 -0
  13. package/plugin/skills/accessibility-qa/SKILL.md +160 -0
  14. package/plugin/skills/accessibility-qa/templates/accessibility-qa-report-template.md +123 -0
  15. package/plugin/skills/accessibility-qa/templates/wcag-compliance-statement.md +70 -0
  16. package/plugin/skills/aka-wireframe-wp/SKILL.md +149 -0
  17. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/README.md +190 -0
  18. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/footer.php +49 -0
  19. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/functions.php +395 -0
  20. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/header.php +58 -0
  21. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/index.php +39 -0
  22. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/page-answer.php +62 -0
  23. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/page-authority-hub.php +122 -0
  24. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/page-knowledge.php +58 -0
  25. package/plugin/skills/aka-wireframe-wp/assets/aka-framework-theme/style.css +633 -0
  26. package/plugin/skills/aka-wireframe-wp/references/content-generator.md +371 -0
  27. package/plugin/skills/aka-wireframe-wp/references/internal-linker.md +430 -0
  28. package/plugin/skills/aka-wireframe-wp/references/orchestrator.md +269 -0
  29. package/plugin/skills/aka-wireframe-wp/references/prompts-library.md +880 -0
  30. package/plugin/skills/aka-wireframe-wp/references/seo-optimizer.md +433 -0
  31. package/plugin/skills/aka-wireframe-wp/references/strategy-planner.md +317 -0
  32. package/plugin/skills/aka-wireframe-wp/references/wordpress-deployer.md +545 -0
  33. package/plugin/skills/authority-site-builder/SKILL.md +138 -0
  34. package/plugin/skills/brand-philosophy/SKILL.md +77 -0
  35. package/plugin/skills/freepik-spaces/SKILL.md +122 -0
  36. package/plugin/skills/freepik-spaces/docs/automation-guide.md +233 -0
  37. package/plugin/skills/freepik-spaces/docs/research-notes.md +264 -0
  38. package/plugin/skills/freepik-spaces/plans/naseberry-demo-plan.md +320 -0
  39. package/plugin/skills/freepik-spaces/templates/naseberry-demo.json +302 -0
  40. package/plugin/skills/freepik-spaces/templates/saas-demo.json +212 -0
  41. package/plugin/skills/frontend-design/LICENSE.txt +177 -0
  42. package/plugin/skills/frontend-design/SKILL.md +77 -0
  43. package/plugin/skills/programmatic-seo/SKILL.md +236 -0
  44. package/plugin/skills/programmatic-seo/references/playbooks.md +293 -0
  45. package/plugin/skills/seo-qa/SKILL.md +132 -0
  46. package/plugin/skills/seo-qa/templates/schema-localbusiness.json +49 -0
  47. package/plugin/skills/seo-qa/templates/schema-service.json +36 -0
  48. package/plugin/skills/seo-qa/templates/seo-qa-report-template.md +90 -0
  49. package/plugin/skills/visual-identity/SKILL.md +109 -0
  50. package/plugin/skills/visual-identity/templates/style-guide-template.md +108 -0
  51. package/plugin/skills/website-image-gen/SKILL.md +82 -0
  52. package/plugin/skills/website-image-gen/templates/blog-featured.md +56 -0
  53. package/plugin/skills/website-image-gen/templates/hero-service-photo.md +56 -0
  54. package/plugin/skills/wordpress-pro/SKILL.md +105 -0
  55. package/plugin/skills/wordpress-pro/references/gutenberg-blocks.md +870 -0
  56. package/plugin/skills/wordpress-pro/references/hooks-filters.md +845 -0
  57. package/plugin/skills/wordpress-pro/references/performance-security.md +1012 -0
  58. package/plugin/skills/wordpress-pro/references/plugin-architecture.md +1041 -0
  59. package/plugin/skills/wordpress-pro/references/theme-development.md +858 -0
  60. package/plugin/sops/SOP-Sonic 777/authority-site-sop.html +1100 -0
  61. package/plugin/sops/SOP-WORDPRESS-330-PAGE-SITES.md +926 -0
  62. 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
+ }