antigravity-seo-kit 2.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.

Potentially problematic release.


This version of antigravity-seo-kit might be problematic. Click here for more details.

Files changed (135) hide show
  1. package/.agent/agent.md +96 -0
  2. package/.agent/skills/seo/SKILL.md +153 -0
  3. package/.agent/skills/seo/references/cwv-thresholds.md +108 -0
  4. package/.agent/skills/seo/references/eeat-framework.md +214 -0
  5. package/.agent/skills/seo/references/local-schema-types.md +230 -0
  6. package/.agent/skills/seo/references/local-seo-signals.md +218 -0
  7. package/.agent/skills/seo/references/maps-api-endpoints.md +160 -0
  8. package/.agent/skills/seo/references/maps-free-apis.md +176 -0
  9. package/.agent/skills/seo/references/maps-gbp-checklist.md +150 -0
  10. package/.agent/skills/seo/references/maps-geo-grid.md +154 -0
  11. package/.agent/skills/seo/references/quality-gates.md +155 -0
  12. package/.agent/skills/seo/references/schema-types.md +118 -0
  13. package/.agent/skills/seo/schema/templates.json +213 -0
  14. package/.agent/skills/seo/scripts/analyze_visual.py +217 -0
  15. package/.agent/skills/seo/scripts/capture_screenshot.py +181 -0
  16. package/.agent/skills/seo/scripts/fetch_page.py +196 -0
  17. package/.agent/skills/seo/scripts/parse_html.py +201 -0
  18. package/.agent/skills/seo-audit/SKILL.md +278 -0
  19. package/.agent/skills/seo-competitor-pages/SKILL.md +212 -0
  20. package/.agent/skills/seo-content/SKILL.md +230 -0
  21. package/.agent/skills/seo-dataforseo/SKILL.md +418 -0
  22. package/.agent/skills/seo-geo/SKILL.md +305 -0
  23. package/.agent/skills/seo-google/SKILL.md +405 -0
  24. package/.agent/skills/seo-google/assets/templates/cwv-audit-report.md +48 -0
  25. package/.agent/skills/seo-google/assets/templates/gsc-performance-report.md +44 -0
  26. package/.agent/skills/seo-google/assets/templates/indexation-status-report.md +43 -0
  27. package/.agent/skills/seo-google/references/auth-setup.md +154 -0
  28. package/.agent/skills/seo-google/references/ga4-data-api.md +184 -0
  29. package/.agent/skills/seo-google/references/indexing-api.md +107 -0
  30. package/.agent/skills/seo-google/references/keyword-planner-api.md +66 -0
  31. package/.agent/skills/seo-google/references/nlp-api.md +55 -0
  32. package/.agent/skills/seo-google/references/pagespeed-crux-api.md +204 -0
  33. package/.agent/skills/seo-google/references/rate-limits-quotas.md +75 -0
  34. package/.agent/skills/seo-google/references/search-console-api.md +156 -0
  35. package/.agent/skills/seo-google/references/supplementary-apis.md +99 -0
  36. package/.agent/skills/seo-google/references/youtube-api.md +49 -0
  37. package/.agent/skills/seo-google/scripts/crux_history.py +321 -0
  38. package/.agent/skills/seo-google/scripts/ga4_report.py +478 -0
  39. package/.agent/skills/seo-google/scripts/google_auth.py +795 -0
  40. package/.agent/skills/seo-google/scripts/google_report.py +2273 -0
  41. package/.agent/skills/seo-google/scripts/gsc_inspect.py +340 -0
  42. package/.agent/skills/seo-google/scripts/gsc_query.py +378 -0
  43. package/.agent/skills/seo-google/scripts/indexing_notify.py +313 -0
  44. package/.agent/skills/seo-google/scripts/keyword_planner.py +297 -0
  45. package/.agent/skills/seo-google/scripts/nlp_analyze.py +309 -0
  46. package/.agent/skills/seo-google/scripts/pagespeed_check.py +649 -0
  47. package/.agent/skills/seo-google/scripts/youtube_search.py +355 -0
  48. package/.agent/skills/seo-hreflang/SKILL.md +192 -0
  49. package/.agent/skills/seo-image-gen/SKILL.md +211 -0
  50. package/.agent/skills/seo-image-gen/references/cost-tracking.md +47 -0
  51. package/.agent/skills/seo-image-gen/references/gemini-models.md +200 -0
  52. package/.agent/skills/seo-image-gen/references/mcp-tools.md +115 -0
  53. package/.agent/skills/seo-image-gen/references/post-processing.md +192 -0
  54. package/.agent/skills/seo-image-gen/references/presets.md +69 -0
  55. package/.agent/skills/seo-image-gen/references/prompt-engineering.md +411 -0
  56. package/.agent/skills/seo-image-gen/references/seo-image-presets.md +137 -0
  57. package/.agent/skills/seo-image-gen/scripts/batch.py +97 -0
  58. package/.agent/skills/seo-image-gen/scripts/cost_tracker.py +191 -0
  59. package/.agent/skills/seo-image-gen/scripts/edit.py +141 -0
  60. package/.agent/skills/seo-image-gen/scripts/generate.py +149 -0
  61. package/.agent/skills/seo-image-gen/scripts/presets.py +153 -0
  62. package/.agent/skills/seo-image-gen/scripts/setup_mcp.py +151 -0
  63. package/.agent/skills/seo-image-gen/scripts/validate_setup.py +133 -0
  64. package/.agent/skills/seo-images/SKILL.md +176 -0
  65. package/.agent/skills/seo-local/SKILL.md +381 -0
  66. package/.agent/skills/seo-maps/SKILL.md +328 -0
  67. package/.agent/skills/seo-page/SKILL.md +86 -0
  68. package/.agent/skills/seo-plan/SKILL.md +118 -0
  69. package/.agent/skills/seo-plan/assets/agency.md +175 -0
  70. package/.agent/skills/seo-plan/assets/ecommerce.md +167 -0
  71. package/.agent/skills/seo-plan/assets/generic.md +144 -0
  72. package/.agent/skills/seo-plan/assets/local-service.md +160 -0
  73. package/.agent/skills/seo-plan/assets/publisher.md +153 -0
  74. package/.agent/skills/seo-plan/assets/saas.md +135 -0
  75. package/.agent/skills/seo-programmatic/SKILL.md +171 -0
  76. package/.agent/skills/seo-schema/SKILL.md +223 -0
  77. package/.agent/skills/seo-sitemap/SKILL.md +180 -0
  78. package/.agent/skills/seo-technical/SKILL.md +211 -0
  79. package/.agent/workflows/seo-audit.md +17 -0
  80. package/.agent/workflows/seo-competitor-pages.md +12 -0
  81. package/.agent/workflows/seo-content.md +14 -0
  82. package/.agent/workflows/seo-geo.md +12 -0
  83. package/.agent/workflows/seo-google.md +12 -0
  84. package/.agent/workflows/seo-hreflang.md +12 -0
  85. package/.agent/workflows/seo-images.md +13 -0
  86. package/.agent/workflows/seo-local.md +12 -0
  87. package/.agent/workflows/seo-maps.md +11 -0
  88. package/.agent/workflows/seo-page.md +13 -0
  89. package/.agent/workflows/seo-plan.md +13 -0
  90. package/.agent/workflows/seo-programmatic.md +12 -0
  91. package/.agent/workflows/seo-schema.md +11 -0
  92. package/.agent/workflows/seo-sitemap.md +9 -0
  93. package/.agent/workflows/seo-technical.md +18 -0
  94. package/LICENSE +88 -0
  95. package/README.md +122 -0
  96. package/bin/cli.js +117 -0
  97. package/docs/ARCHITECTURE.md +218 -0
  98. package/docs/COMMANDS.md +184 -0
  99. package/docs/INSTALLATION.md +100 -0
  100. package/docs/MCP-INTEGRATION.md +153 -0
  101. package/docs/TROUBLESHOOTING.md +151 -0
  102. package/docs/superpowers/plans/2026-03-13-github-audit-fixes.md +511 -0
  103. package/extensions/banana/README.md +95 -0
  104. package/extensions/banana/docs/BANANA-SETUP.md +86 -0
  105. package/extensions/banana/install.sh +170 -0
  106. package/extensions/banana/references/cost-tracking.md +47 -0
  107. package/extensions/banana/references/gemini-models.md +200 -0
  108. package/extensions/banana/references/mcp-tools.md +115 -0
  109. package/extensions/banana/references/post-processing.md +192 -0
  110. package/extensions/banana/references/presets.md +69 -0
  111. package/extensions/banana/references/prompt-engineering.md +411 -0
  112. package/extensions/banana/references/seo-image-presets.md +137 -0
  113. package/extensions/banana/scripts/batch.py +97 -0
  114. package/extensions/banana/scripts/cost_tracker.py +191 -0
  115. package/extensions/banana/scripts/edit.py +141 -0
  116. package/extensions/banana/scripts/generate.py +149 -0
  117. package/extensions/banana/scripts/presets.py +153 -0
  118. package/extensions/banana/scripts/setup_mcp.py +151 -0
  119. package/extensions/banana/scripts/validate_setup.py +133 -0
  120. package/extensions/banana/uninstall.sh +43 -0
  121. package/extensions/dataforseo/README.md +169 -0
  122. package/extensions/dataforseo/docs/DATAFORSEO-SETUP.md +74 -0
  123. package/extensions/dataforseo/field-config.json +280 -0
  124. package/extensions/dataforseo/install.ps1 +110 -0
  125. package/extensions/dataforseo/install.sh +161 -0
  126. package/extensions/dataforseo/uninstall.ps1 +35 -0
  127. package/extensions/dataforseo/uninstall.sh +39 -0
  128. package/lib/api.js +190 -0
  129. package/lib/fingerprint.js +68 -0
  130. package/lib/installer.js +486 -0
  131. package/lib/utils.js +254 -0
  132. package/package.json +40 -0
  133. package/pyproject.toml +11 -0
  134. package/requirements-google.txt +15 -0
  135. package/requirements.txt +11 -0
@@ -0,0 +1,153 @@
1
+ <!-- Updated: 2026-02-07 -->
2
+ # Publisher/Media SEO Strategy Template
3
+
4
+ ## Industry Characteristics
5
+
6
+ - High content volume
7
+ - Time-sensitive content (news)
8
+ - Ad revenue dependent on traffic
9
+ - Authority and trust critical
10
+ - Competing with social platforms
11
+ - AI Overviews impact on traffic
12
+
13
+ ## Recommended Site Architecture
14
+
15
+ ```
16
+ /
17
+ ├── Home
18
+ ├── /news (or /latest)
19
+ ├── /topics
20
+ │ ├── /topic-1
21
+ │ ├── /topic-2
22
+ │ └── ...
23
+ ├── /authors
24
+ │ ├── /author-1
25
+ │ └── ...
26
+ ├── /opinion
27
+ ├── /reviews
28
+ ├── /guides
29
+ ├── /videos
30
+ ├── /podcasts
31
+ ├── /newsletter
32
+ ├── /about
33
+ │ ├── /editorial-policy
34
+ │ ├── /corrections
35
+ │ └── /contact
36
+ └── /[year]/[month]/[slug] (article URLs)
37
+ ```
38
+
39
+ ## Schema Recommendations
40
+
41
+ | Page Type | Schema Types |
42
+ |-----------|-------------|
43
+ | Article | NewsArticle or Article, Person (author), Organization (publisher) |
44
+ | Author Page | Person, ProfilePage |
45
+ | Topic Page | CollectionPage, ItemList |
46
+ | Homepage | WebSite, Organization |
47
+ | Video | VideoObject |
48
+ | Podcast | PodcastEpisode, PodcastSeries |
49
+
50
+ ### NewsArticle Schema Example
51
+ ```json
52
+ {
53
+ "@context": "https://schema.org",
54
+ "@type": "NewsArticle",
55
+ "headline": "Article Headline",
56
+ "datePublished": "2026-02-07T10:00:00Z",
57
+ "dateModified": "2026-02-07T14:30:00Z",
58
+ "author": {
59
+ "@type": "Person",
60
+ "name": "Author Name",
61
+ "url": "https://example.com/authors/author-name"
62
+ },
63
+ "publisher": {
64
+ "@type": "Organization",
65
+ "name": "Publication Name",
66
+ "logo": {
67
+ "@type": "ImageObject",
68
+ "url": "https://example.com/logo.png"
69
+ }
70
+ },
71
+ "image": ["https://example.com/article-image.jpg"],
72
+ "mainEntityOfPage": {
73
+ "@type": "WebPage",
74
+ "@id": "https://example.com/article-url"
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## E-E-A-T Requirements
80
+
81
+ Publishers face highest E-E-A-T scrutiny.
82
+
83
+ ### Author Pages Must Include
84
+ - Full name and photo
85
+ - Bio and credentials
86
+ - Areas of expertise
87
+ - Contact information
88
+ - Social profiles (sameAs)
89
+ - Previous articles by this author
90
+
91
+ ### Editorial Standards
92
+ - Clear correction policy
93
+ - Transparent editorial process
94
+ - Fact-checking procedures
95
+ - Conflict of interest disclosures
96
+
97
+ ## Content Priorities
98
+
99
+ ### High Priority
100
+ 1. Breaking news (speed matters)
101
+ 2. Evergreen guides on core topics
102
+ 3. Author pages with credentials
103
+ 4. Topic hubs/pillar pages
104
+
105
+ ### Medium Priority
106
+ 1. Opinion/analysis pieces
107
+ 2. Video content
108
+ 3. Interactive content
109
+ 4. Newsletter landing pages
110
+
111
+ ### GEO Considerations
112
+ - Clear, quotable facts in articles
113
+ - Tables for data-heavy content
114
+ - Expert quotes with attribution
115
+ - Update dates prominently displayed
116
+ - Structured headings (H2/H3)
117
+ - First-party data and original research are highly cited by AI systems
118
+ - Ensure author entities are clearly defined with Person schema + sameAs links
119
+ - Monitor AI citation frequency across Google AI Overviews, AI Mode, ChatGPT, Perplexity
120
+ - Treat AI citation as a standalone KPI alongside organic traffic
121
+
122
+ ### Publisher SEO Updates (2025-2026)
123
+
124
+ - **Google News automatic inclusion:** Google News no longer accepts manual applications (since March 2025). Inclusion is fully automatic based on Google's content quality criteria. Focus on Google News sitemap markup and consistent, high-quality publishing cadence.
125
+ - **KPI shift:** Traffic-based KPIs (sessions, pageviews) are declining in relevance as AI Overviews reduce click-through rates. Leading publishers are shifting to: subscriber conversions, time on page, scroll depth, newsletter signups, AI citation frequency, and revenue per visitor.
126
+ - **Site reputation abuse risk:** Publishers hosting third-party content (coupons, product reviews, affiliate content) under their domain are at high risk. Google penalized Forbes, WSJ, Time, and CNN for this in late 2024. If hosting third-party content, ensure strong editorial oversight and clear first-party involvement.
127
+
128
+ ## Technical Considerations
129
+
130
+ ### Core Web Vitals
131
+ - Ad placement affects CLS
132
+ - Lazy load ads and images below fold
133
+ - Optimize hero images for LCP
134
+ - Minimize render-blocking resources
135
+
136
+ ### AMP (if used)
137
+ - Consider dropping AMP (no longer required for Top Stories)
138
+ - Ensure canonical setup is correct
139
+ - Monitor performance vs non-AMP
140
+
141
+ ### Pagination
142
+ - Proper pagination for multi-page articles
143
+ - Or infinite scroll with proper indexing
144
+ - Canonical to page 1 or full article
145
+
146
+ ## Key Metrics to Track
147
+
148
+ - Page views from organic
149
+ - Time on page
150
+ - Pages per session
151
+ - Newsletter signups from organic
152
+ - Google News/Discover traffic
153
+ - AI Overview appearances
@@ -0,0 +1,135 @@
1
+ <!-- Updated: 2026-02-07 -->
2
+ # SaaS SEO Strategy Template
3
+
4
+ ## Industry Characteristics
5
+
6
+ - Long sales cycles with multiple touchpoints
7
+ - Feature-focused decision making
8
+ - Comparison shopping behavior
9
+ - Heavy research phase before purchase
10
+ - Integration and ecosystem considerations
11
+
12
+ ## Recommended Site Architecture
13
+
14
+ ```
15
+ /
16
+ ├── Home
17
+ ├── /product (or /platform)
18
+ │ ├── /features
19
+ │ │ ├── /feature-1
20
+ │ │ ├── /feature-2
21
+ │ │ └── ...
22
+ │ ├── /integrations
23
+ │ │ ├── /integration-1
24
+ │ │ └── ...
25
+ │ └── /security
26
+ ├── /solutions
27
+ │ ├── /by-industry
28
+ │ │ ├── /industry-1
29
+ │ │ └── ...
30
+ │ └── /by-use-case
31
+ │ ├── /use-case-1
32
+ │ └── ...
33
+ ├── /pricing
34
+ ├── /customers
35
+ │ ├── /case-studies
36
+ │ │ ├── /case-study-1
37
+ │ │ └── ...
38
+ │ └── /testimonials
39
+ ├── /resources
40
+ │ ├── /blog
41
+ │ ├── /guides
42
+ │ ├── /webinars
43
+ │ ├── /templates
44
+ │ └── /glossary
45
+ ├── /docs (or /help)
46
+ │ └── /api
47
+ ├── /company
48
+ │ ├── /about
49
+ │ ├── /careers
50
+ │ ├── /press
51
+ │ └── /contact
52
+ └── /compare
53
+ ├── /vs-competitor-1
54
+ └── /vs-competitor-2
55
+ ```
56
+
57
+ ## Content Priorities
58
+
59
+ ### High Priority Pages
60
+ 1. Homepage (value proposition, social proof)
61
+ 2. Features overview
62
+ 3. Pricing page
63
+ 4. Key integrations
64
+ 5. Top 3-5 use case pages
65
+
66
+ ### Medium Priority Pages
67
+ 1. Individual feature pages
68
+ 2. Industry solution pages
69
+ 3. Case studies (2-3 detailed ones)
70
+ 4. Comparison pages (vs competitors)
71
+
72
+ ### Content Marketing Focus
73
+ 1. Bottom-of-funnel: Comparison guides, ROI calculators
74
+ 2. Middle-of-funnel: How-to guides, best practices
75
+ 3. Top-of-funnel: Industry trends, educational content
76
+
77
+ ## Schema Recommendations
78
+
79
+ | Page Type | Schema Types |
80
+ |-----------|-------------|
81
+ | Homepage | Organization, WebSite, SoftwareApplication |
82
+ | Product/Features | SoftwareApplication, Offer |
83
+ | Pricing | SoftwareApplication, Offer (with pricing) |
84
+ | Blog | Article, BlogPosting |
85
+ | Case Studies | Article, Organization (customer) |
86
+ | Documentation | TechArticle |
87
+
88
+ ## Key Metrics to Track
89
+
90
+ - Organic traffic to pricing page
91
+ - Demo/trial signups from organic
92
+ - Blog → pricing page conversion
93
+ - Comparison page rankings
94
+ - Integration page performance
95
+
96
+ ## Comparison & Alternative Pages
97
+
98
+ Comparison pages are among the highest-converting content types for SaaS, with conversion rates of **4-7%** vs. 0.5-1.8% for standard blog content (35.8% of marketers report comparison content performs "better than ever" per Intergrowth November 2025 survey).
99
+
100
+ **Recommended page types:**
101
+ - `/{product}-vs-{competitor}`: Direct 1:1 comparison
102
+ - `/{competitor}-alternative`: Targeting competitor brand searches
103
+ - `/compare/{category}`: Category comparison hub
104
+ - `/best-{category}-tools`: Roundup-style pages
105
+
106
+ **Best practices:**
107
+ - Include structured comparison tables with pricing, features, pros/cons
108
+ - Be factually accurate about competitors: verify claims regularly
109
+ - Include customer testimonials from users who switched
110
+ - Add FAQ schema for common comparison questions (valuable for AI search)
111
+ - Update regularly: stale comparison data damages credibility
112
+ - Cross-reference the `seo-competitor-pages` skill for detailed frameworks
113
+
114
+ **Legal considerations:**
115
+ - Nominative fair use generally permits competitor brand mentions for comparison purposes
116
+ - Do NOT imply endorsement or affiliation
117
+ - Do NOT make false or unverifiable claims about competitor products
118
+ - Different jurisdictions have different trademark laws: consult legal counsel
119
+
120
+ ## Competitive Considerations
121
+
122
+ - Monitor competitor feature releases
123
+ - Track competitor content strategies
124
+ - Identify keyword gaps in feature coverage
125
+ - Watch for new comparison opportunities
126
+
127
+ ## Generative Engine Optimization (GEO) for SaaS
128
+
129
+ - [ ] Include clear, structured feature comparisons that AI systems can parse and cite
130
+ - [ ] Use SoftwareApplication schema with complete feature lists and pricing
131
+ - [ ] Publish original benchmark data, case studies, and ROI metrics
132
+ - [ ] Build content clusters around key product categories and use cases
133
+ - [ ] Ensure integration pages have clear, quotable descriptions
134
+ - [ ] Structure pricing information in tables AI can extract
135
+ - [ ] Monitor AI citation across Google AI Overviews, ChatGPT, and Perplexity
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: seo-programmatic
3
+ description: >
4
+ Programmatic SEO planning and analysis for pages generated at scale from data
5
+ sources. Covers template engines, URL patterns, internal linking automation,
6
+ thin content safeguards, and index bloat prevention. Use when user says
7
+ "programmatic SEO", "pages at scale", "dynamic pages", "template pages",
8
+ "generated pages", or "data-driven SEO".
9
+ ---
10
+
11
+ # Programmatic SEO Analysis & Planning
12
+
13
+ Build and audit SEO pages generated at scale from structured data sources.
14
+ Enforces quality gates to prevent thin content penalties and index bloat.
15
+
16
+ ## Data Source Assessment
17
+
18
+ Evaluate the data powering programmatic pages:
19
+ - **CSV/JSON files**: Row count, column uniqueness, missing values
20
+ - **API endpoints**: Response structure, data freshness, rate limits
21
+ - **Database queries**: Record count, field completeness, update frequency
22
+ - Data quality checks:
23
+ - Each record must have enough unique attributes to generate distinct content
24
+ - Flag duplicate or near-duplicate records (>80% field overlap)
25
+ - Verify data freshness; stale data produces stale pages
26
+
27
+ ## Template Engine Planning
28
+
29
+ Design templates that produce unique, valuable pages:
30
+ - **Variable injection points**: Title, H1, body sections, meta description, schema
31
+ - **Content blocks**: Static (shared across pages) vs dynamic (unique per page)
32
+ - **Conditional logic**: Show/hide sections based on data availability
33
+ - **Supplementary content**: Related items, contextual tips, user-generated content
34
+ - Template review checklist:
35
+ - Each page must read as a standalone, valuable resource
36
+ - No "mad-libs" patterns (just swapping city/product names in identical text)
37
+ - Dynamic sections must add genuine information, not just keyword variations
38
+
39
+ ## URL Pattern Strategy
40
+
41
+ ### Common Patterns
42
+ - `/tools/[tool-name]`: Tool/product directory pages
43
+ - `/[city]/[service]`: Location + service pages
44
+ - `/integrations/[platform]`: Integration landing pages
45
+ - `/glossary/[term]`: Definition/reference pages
46
+ - `/templates/[template-name]`: Downloadable template pages
47
+
48
+ ### URL Rules
49
+ - Lowercase, hyphenated slugs derived from data
50
+ - Logical hierarchy reflecting site architecture
51
+ - No duplicate slugs; enforce uniqueness at generation time
52
+ - Keep URLs under 100 characters
53
+ - No query parameters for primary content URLs
54
+ - Consistent trailing slash usage (match existing site pattern)
55
+
56
+ ## Internal Linking Automation
57
+
58
+ - **Hub/spoke model**: Category hub pages linking to individual programmatic pages
59
+ - **Related items**: Auto-link to 3-5 related pages based on data attributes
60
+ - **Breadcrumbs**: Generate BreadcrumbList schema from URL hierarchy
61
+ - **Cross-linking**: Link between programmatic pages sharing attributes (same category, same city, same feature)
62
+ - **Anchor text**: Use descriptive, varied anchor text. Avoid exact-match keyword repetition
63
+ - Link density: 3-5 internal links per 1000 words (match seo-content guidelines)
64
+
65
+ ## Thin Content Safeguards
66
+
67
+ ### Quality Gates
68
+
69
+ | Metric | Threshold | Action |
70
+ |--------|-----------|--------|
71
+ | Pages without content review | 100+ | ⚠️ WARNING: require content audit before publishing |
72
+ | Pages without justification | 500+ | 🛑 HARD STOP: require explicit user approval and thin content audit |
73
+ | Unique content per page | <40% | ❌ Flag as thin content (likely penalty risk) |
74
+ | Word count per page | <300 | ⚠️ Flag for review (may lack sufficient value) |
75
+
76
+ ### Scaled Content Abuse: Enforcement Context (2025-2026)
77
+
78
+ Google's Scaled Content Abuse policy (introduced March 2024) saw major enforcement escalation in 2025:
79
+
80
+ - **June 2025:** Wave of manual actions targeting websites with AI-generated content at scale
81
+ - **August 2025:** SpamBrain spam update enhanced pattern detection for AI-generated link schemes and content farms
82
+ - **Result:** Google reported 45% reduction in low-quality, unoriginal content in search results post-March 2024 enforcement
83
+
84
+ **Enhanced quality gates for programmatic pages:**
85
+ - **Content differentiation:** ≥30-40% of content must be genuinely unique between any two programmatic pages (not just city/keyword string replacement)
86
+ - **Human review:** Minimum 5-10% sample review of generated pages before publishing
87
+ - **Progressive rollout:** Publish in batches of 50-100 pages. Monitor indexing and rankings for 2-4 weeks before expanding. Never publish 500+ programmatic pages simultaneously without explicit quality review.
88
+ - **Standalone value test:** Each page should pass: "Would this page be worth publishing even if no other similar pages existed?"
89
+ - **Site reputation abuse:** If publishing programmatic content under a high-authority domain (not your own), this may trigger site reputation abuse penalties. Google began enforcing this aggressively in November 2024.
90
+
91
+ > **Recommendation:** The WARNING gate at `<40% unique content` remains appropriate. Consider a HARD STOP at `<30%` unique content to prevent scaled content abuse risk.
92
+
93
+ ### Safe Programmatic Pages (OK at scale)
94
+ ✅ Integration pages (with real setup docs, API details, screenshots)
95
+ ✅ Template/tool pages (with downloadable content, usage instructions)
96
+ ✅ Glossary pages (200+ word definitions with examples, related terms)
97
+ ✅ Product pages (unique specs, reviews, comparison data)
98
+ ✅ Data-driven pages (unique statistics, charts, analysis per record)
99
+
100
+ ### Penalty Risk (avoid at scale)
101
+ ❌ Location pages with only city name swapped in identical text
102
+ ❌ "Best [tool] for [industry]" without industry-specific value
103
+ ❌ "[Competitor] alternative" without real comparison data
104
+ ❌ AI-generated pages without human review and unique value-add
105
+ ❌ Pages where >60% of content is shared template boilerplate
106
+
107
+ ### Uniqueness Calculation
108
+ Unique content % = (words unique to this page) / (total words on page) × 100
109
+
110
+ Measure against all other pages in the programmatic set. Shared headers, footers, and navigation are excluded from the calculation. Template boilerplate text IS included.
111
+
112
+ ## Canonical Strategy
113
+
114
+ - Every programmatic page must have a self-referencing canonical tag
115
+ - Parameter variations (sort, filter, pagination) canonical to the base URL
116
+ - Paginated series: canonical to page 1 or use rel=next/prev
117
+ - If programmatic pages overlap with manual pages, the manual page is canonical
118
+ - No canonical to a different domain unless intentional cross-domain setup
119
+
120
+ ## Sitemap Integration
121
+
122
+ - Auto-generate sitemap entries for all programmatic pages
123
+ - Split at 50,000 URLs per sitemap file (protocol limit)
124
+ - Use sitemap index if multiple sitemap files needed
125
+ - `<lastmod>` reflects actual data update timestamp (not generation time)
126
+ - Exclude noindexed programmatic pages from sitemap
127
+ - Register sitemap in robots.txt
128
+ - Update sitemap dynamically as new records are added to data source
129
+
130
+ ## Index Bloat Prevention
131
+
132
+ - **Noindex low-value pages**: Pages that don't meet quality gates
133
+ - **Pagination**: Noindex paginated results beyond page 1 (or use rel=next/prev)
134
+ - **Faceted navigation**: Noindex filtered views, canonical to base category
135
+ - **Crawl budget**: For sites with >10k programmatic pages, monitor crawl stats in Search Console
136
+ - **Thin page consolidation**: Merge records with insufficient data into aggregated pages
137
+ - **Regular audits**: Monthly review of indexed page count vs intended count
138
+
139
+ ## Output
140
+
141
+ ### Programmatic SEO Score: XX/100
142
+
143
+ ### Assessment Summary
144
+ | Category | Status | Score |
145
+ |----------|--------|-------|
146
+ | Data Quality | ✅/⚠️/❌ | XX/100 |
147
+ | Template Uniqueness | ✅/⚠️/❌ | XX/100 |
148
+ | URL Structure | ✅/⚠️/❌ | XX/100 |
149
+ | Internal Linking | ✅/⚠️/❌ | XX/100 |
150
+ | Thin Content Risk | ✅/⚠️/❌ | XX/100 |
151
+ | Index Management | ✅/⚠️/❌ | XX/100 |
152
+
153
+ ### Critical Issues (fix immediately)
154
+ ### High Priority (fix within 1 week)
155
+ ### Medium Priority (fix within 1 month)
156
+ ### Low Priority (backlog)
157
+
158
+ ### Recommendations
159
+ - Data source improvements
160
+ - Template modifications
161
+ - URL pattern adjustments
162
+ - Quality gate compliance actions
163
+
164
+ ## Error Handling
165
+
166
+ | Scenario | Action |
167
+ |----------|--------|
168
+ | URL unreachable | Report connection error with status code. Suggest verifying URL accessibility and checking for authentication requirements. |
169
+ | No programmatic pages detected | Inform user that no template-generated or data-driven page patterns were found. Suggest checking if pages use client-side rendering or if the URL points to the correct section. |
170
+ | Thin content threshold exceeded | Trigger quality gate warning. Report the unique content percentage and flag pages below 40% uniqueness. Require user acknowledgment before proceeding. |
171
+ | Quality gate violation | Halt analysis at the HARD STOP threshold (500+ pages without justification or <30% unique content). Present findings and require explicit user approval to continue. |
@@ -0,0 +1,223 @@
1
+ ---
2
+ name: seo-schema
3
+ description: >
4
+ Detect, validate, and generate Schema.org structured data. JSON-LD format
5
+ preferred. Use when user says "schema", "structured data", "rich results",
6
+ "JSON-LD", or "markup".
7
+ ---
8
+
9
+ # Schema Markup Analysis & Generation
10
+
11
+ ## Detection
12
+
13
+ 1. Scan page source for JSON-LD `<script type="application/ld+json">`
14
+ 2. Check for Microdata (`itemscope`, `itemprop`)
15
+ 3. Check for RDFa (`typeof`, `property`)
16
+ 4. Always recommend JSON-LD as primary format (Google's stated preference)
17
+
18
+ ## Validation
19
+
20
+ - Check required properties per schema type
21
+ - Validate against Google's supported rich result types
22
+ - Test for common errors:
23
+ - Missing @context
24
+ - Invalid @type
25
+ - Wrong data types
26
+ - Placeholder text
27
+ - Relative URLs (should be absolute)
28
+ - Invalid date formats
29
+ - Flag deprecated types (see below)
30
+
31
+ ## Schema Type Status (as of Feb 2026)
32
+
33
+ Read `references/schema-types.md` for the full list. Key rules:
34
+
35
+ ### ACTIVE (recommend freely):
36
+ Organization, LocalBusiness, SoftwareApplication, WebApplication, Product (with Certification markup as of April 2025), ProductGroup, Offer, Service, Article, BlogPosting, NewsArticle, Review, AggregateRating, BreadcrumbList, WebSite, WebPage, Person, ProfilePage, ContactPage, VideoObject, ImageObject, Event, JobPosting, Course, DiscussionForumPosting
37
+
38
+ ### VIDEO & SPECIALIZED (recommend freely):
39
+ BroadcastEvent, Clip, SeekToAction, SoftwareSourceCode
40
+
41
+ See `schema/templates.json` for ready-to-use JSON-LD templates for these types.
42
+
43
+ > **JSON-LD and JavaScript rendering:** Per Google's December 2025 JS SEO guidance, structured data injected via JavaScript may face delayed processing. For time-sensitive markup (especially Product, Offer), include JSON-LD in the initial server-rendered HTML.
44
+
45
+ ### RESTRICTED (only for specific sites):
46
+ - **FAQ**: ONLY for government and healthcare authority sites (restricted Aug 2023)
47
+
48
+ ### DEPRECATED (never recommend):
49
+ - **HowTo**: Rich results removed September 2023
50
+ - **SpecialAnnouncement**: Deprecated July 31, 2025
51
+ - **CourseInfo, EstimatedSalary, LearningVideo**: Retired June 2025
52
+ - **ClaimReview**: Retired from rich results June 2025
53
+ - **VehicleListing**: Retired from rich results June 2025
54
+ - **Practice Problem**: Retired from rich results late 2025
55
+ - **Dataset**: Retired from rich results late 2025
56
+ - **Book Actions**: Deprecated then reversed, still functional as of Feb 2026 (historical note)
57
+
58
+ ## Generation
59
+
60
+ When generating schema for a page:
61
+ 1. Identify page type from content analysis
62
+ 2. Select appropriate schema type(s)
63
+ 3. Generate valid JSON-LD with all required + recommended properties
64
+ 4. Include only truthful, verifiable data. Use placeholders clearly marked for user to fill
65
+ 5. Validate output before presenting
66
+
67
+ ## Common Schema Templates
68
+
69
+ ### Organization
70
+ ```json
71
+ {
72
+ "@context": "https://schema.org",
73
+ "@type": "Organization",
74
+ "name": "[Company Name]",
75
+ "url": "[Website URL]",
76
+ "logo": "[Logo URL]",
77
+ "contactPoint": {
78
+ "@type": "ContactPoint",
79
+ "telephone": "[Phone]",
80
+ "contactType": "customer service"
81
+ },
82
+ "sameAs": [
83
+ "[Facebook URL]",
84
+ "[LinkedIn URL]",
85
+ "[Twitter URL]"
86
+ ]
87
+ }
88
+ ```
89
+
90
+ ### LocalBusiness
91
+ ```json
92
+ {
93
+ "@context": "https://schema.org",
94
+ "@type": "LocalBusiness",
95
+ "name": "[Business Name]",
96
+ "address": {
97
+ "@type": "PostalAddress",
98
+ "streetAddress": "[Street]",
99
+ "addressLocality": "[City]",
100
+ "addressRegion": "[State]",
101
+ "postalCode": "[ZIP]",
102
+ "addressCountry": "US"
103
+ },
104
+ "telephone": "[Phone]",
105
+ "openingHours": "Mo-Fr 09:00-17:00",
106
+ "geo": {
107
+ "@type": "GeoCoordinates",
108
+ "latitude": "[Lat]",
109
+ "longitude": "[Long]"
110
+ }
111
+ }
112
+ ```
113
+
114
+ ### Article/BlogPosting
115
+ ```json
116
+ {
117
+ "@context": "https://schema.org",
118
+ "@type": "Article",
119
+ "headline": "[Title]",
120
+ "author": {
121
+ "@type": "Person",
122
+ "name": "[Author Name]"
123
+ },
124
+ "datePublished": "[YYYY-MM-DD]",
125
+ "dateModified": "[YYYY-MM-DD]",
126
+ "image": "[Image URL]",
127
+ "publisher": {
128
+ "@type": "Organization",
129
+ "name": "[Publisher]",
130
+ "logo": {
131
+ "@type": "ImageObject",
132
+ "url": "[Logo URL]"
133
+ }
134
+ }
135
+ }
136
+ ```
137
+
138
+ ## Output
139
+
140
+ - `SCHEMA-REPORT.md`: detection and validation results
141
+ - `generated-schema.json`: ready-to-use JSON-LD snippets
142
+
143
+ ### Validation Results
144
+ | Schema | Type | Status | Issues |
145
+ |--------|------|--------|--------|
146
+ | ... | ... | ✅/⚠️/❌ | ... |
147
+
148
+ ### Recommendations
149
+ - Missing schema opportunities
150
+ - Validation fixes needed
151
+ - Generated code for implementation
152
+
153
+ ## Error Handling
154
+
155
+ | Scenario | Action |
156
+ |----------|--------|
157
+ | URL unreachable | Report connection error with status code. Suggest verifying URL and checking if the page requires authentication. |
158
+ | No schema markup found | Report that no JSON-LD, Microdata, or RDFa was detected. Recommend appropriate schema types based on page content analysis. |
159
+ | Invalid JSON-LD syntax | Parse and report specific syntax errors (missing brackets, trailing commas, unquoted keys). Provide corrected JSON-LD output. |
160
+ | Deprecated schema type detected | Flag the deprecated type with its retirement date. Recommend the current replacement type or advise removal if no replacement exists. |
161
+
162
+ ## Specialist Role Instructions
163
+
164
+ When operating as a specialist during audits:
165
+
166
+ You are a Schema.org markup specialist.
167
+
168
+ When analyzing pages:
169
+
170
+ 1. Detect all existing schema (JSON-LD, Microdata, RDFa)
171
+ 2. Validate against Google's supported rich result types
172
+ 3. Check for required and recommended properties
173
+ 4. Identify missing schema opportunities
174
+ 5. Generate correct JSON-LD for recommended additions
175
+
176
+ ## CRITICAL RULES
177
+
178
+ ### Never Recommend These (Deprecated):
179
+ - **HowTo**: Rich results removed September 2023
180
+ - **SpecialAnnouncement**: Deprecated July 31, 2025
181
+ - **CourseInfo, EstimatedSalary, LearningVideo**: Retired June 2025
182
+
183
+ ### Restricted Schema:
184
+ - **FAQ**: Google rich results restricted to government and healthcare sites (August 2023).
185
+ - **Existing FAQPage on commercial sites**: Flag as Info priority (not Critical). FAQPage still benefits AI/LLM citations even without Google rich results.
186
+ - **Adding new FAQPage on commercial sites**: Not recommended for Google benefit; note AI discoverability upside if user prioritizes GEO.
187
+
188
+ ### Always Prefer:
189
+ - JSON-LD format over Microdata or RDFa
190
+ - `https://schema.org` as @context (not http)
191
+ - Absolute URLs (not relative)
192
+ - ISO 8601 date format
193
+
194
+ ## Validation Checklist
195
+
196
+ For any schema block, verify:
197
+ 1. ✅ @context is "https://schema.org"
198
+ 2. ✅ @type is valid and not deprecated
199
+ 3. ✅ All required properties present
200
+ 4. ✅ Property values match expected types
201
+ 5. ✅ No placeholder text (e.g., "[Business Name]")
202
+ 6. ✅ URLs are absolute
203
+ 7. ✅ Dates are ISO 8601 format
204
+
205
+ ## Common Schema Types
206
+
207
+ Recommend freely:
208
+ - Organization, LocalBusiness
209
+ - Article, BlogPosting, NewsArticle
210
+ - Product, Offer, Service
211
+ - BreadcrumbList, WebSite, WebPage
212
+ - Person, Review, AggregateRating
213
+ - VideoObject, Event, JobPosting
214
+
215
+ For video schema types (VideoObject, BroadcastEvent, Clip, SeekToAction), see the schema templates file at `.agent/skills/seo/schema/templates.json`.
216
+
217
+ ## Output Format
218
+
219
+ Provide:
220
+ - Detection results (what schema exists)
221
+ - Validation results (pass/fail per block)
222
+ - Missing opportunities
223
+ - Generated JSON-LD for implementation