optbrew 0.0.0-stage → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +6 -0
- package/.claude-plugin/plugin.json +6 -0
- package/.codex-plugin/plugin.json +13 -0
- package/CHANGELOG.md +50 -0
- package/LICENSE +21 -0
- package/README.ko.md +149 -0
- package/README.md +148 -2
- package/THIRD_PARTY_NOTICES.md +10 -0
- package/bin/optbrew.mjs +4 -0
- package/docs/platforms.md +107 -0
- package/docs/release.md +14 -0
- package/lib/cli.mjs +116 -0
- package/lib/doctor.mjs +45 -0
- package/lib/install.mjs +158 -0
- package/lib/paths.mjs +30 -0
- package/lib/records.mjs +44 -0
- package/lib/reinstall.mjs +92 -0
- package/lib/transaction.mjs +205 -0
- package/lib/update.mjs +189 -0
- package/package.json +39 -4
- package/plugin.json +13 -0
- package/skills/optbrew/LICENSE +21 -0
- package/skills/optbrew/SKILL.md +17 -0
- package/skills/optbrew/THIRD_PARTY_NOTICES.md +10 -0
- package/skills/optbrew/agents/openai.yaml +4 -0
- package/skills/optbrew/bundle-manifest.json +687 -0
- package/skills/optbrew/licenses/firecrawl-seo-audit.txt +15 -0
- package/skills/optbrew/licenses/magnus-seo.txt +21 -0
- package/skills/optbrew/licenses/marketing-search.txt +21 -0
- package/skills/optbrew/licenses/mblode-seo.txt +21 -0
- package/skills/optbrew/licenses/naver-searchadvisor.txt +29 -0
- package/skills/optbrew/licenses/seranking-seo.txt +21 -0
- package/skills/optbrew/modules/firecrawl-seo-audit/GUIDE.md +64 -0
- package/skills/optbrew/modules/magnus-seo/GUIDE.md +79 -0
- package/skills/optbrew/modules/magnus-seo/README.md +45 -0
- package/skills/optbrew/modules/magnus-seo/assets/audit-report-template.md +76 -0
- package/skills/optbrew/modules/magnus-seo/references/aeo-methodology.md +105 -0
- package/skills/optbrew/modules/magnus-seo/references/agent-readable-content.md +28 -0
- package/skills/optbrew/modules/magnus-seo/references/content-and-entity-architecture.md +100 -0
- package/skills/optbrew/modules/magnus-seo/references/content-strategy-seo.md +142 -0
- package/skills/optbrew/modules/magnus-seo/references/discovery-and-freshness.md +47 -0
- package/skills/optbrew/modules/magnus-seo/references/evidence-boundaries.md +75 -0
- package/skills/optbrew/modules/magnus-seo/references/ghost-metadata.md +204 -0
- package/skills/optbrew/modules/magnus-seo/references/implementation-playbook.md +114 -0
- package/skills/optbrew/modules/magnus-seo/references/measurement-and-experimentation.md +47 -0
- package/skills/optbrew/modules/magnus-seo/references/onpage-seo.md +154 -0
- package/skills/optbrew/modules/magnus-seo/references/platform-guidance.md +30 -0
- package/skills/optbrew/modules/magnus-seo/references/schema-markup.md +244 -0
- package/skills/optbrew/modules/magnus-seo/references/source-index.md +36 -0
- package/skills/optbrew/modules/magnus-seo/references/structured-data.md +56 -0
- package/skills/optbrew/modules/magnus-seo/references/technical-seo.md +99 -0
- package/skills/optbrew/modules/magnus-seo/scripts/aeo_audit.py +158 -0
- package/skills/optbrew/modules/magnus-seo/scripts/build_prompt_matrix.py +52 -0
- package/skills/optbrew/modules/magnus-seo/templates/aeo-implementation-plan.md +53 -0
- package/skills/optbrew/modules/magnus-seo/templates/citation-observation-log.md +16 -0
- package/skills/optbrew/modules/magnus-seo/templates/llms.txt.template +15 -0
- package/skills/optbrew/modules/magnus-seo/templates/question-cluster.md +27 -0
- package/skills/optbrew/modules/magnus-seo/templates/robots-ai-crawlers.txt +23 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/GUIDE.md +483 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/agent-readiness.md +57 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/citations-vs-recommendations.md +85 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/content-patterns.md +287 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/content-types.md +71 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/format-volatility.md +98 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/okf.md +104 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/platform-ranking-factors.md +154 -0
- package/skills/optbrew/modules/marketing-search/skills/ai-seo/references/youtube-ai-citations.md +60 -0
- package/skills/optbrew/modules/marketing-search/skills/analytics/GUIDE.md +303 -0
- package/skills/optbrew/modules/marketing-search/skills/analytics/references/event-library.md +260 -0
- package/skills/optbrew/modules/marketing-search/skills/analytics/references/ga4-implementation.md +300 -0
- package/skills/optbrew/modules/marketing-search/skills/analytics/references/gtm-implementation.md +390 -0
- package/skills/optbrew/modules/marketing-search/skills/content-strategy/GUIDE.md +432 -0
- package/skills/optbrew/modules/marketing-search/skills/content-strategy/references/content-distribution.md +83 -0
- package/skills/optbrew/modules/marketing-search/skills/content-strategy/references/headless-cms.md +194 -0
- package/skills/optbrew/modules/marketing-search/skills/programmatic-seo/GUIDE.md +231 -0
- package/skills/optbrew/modules/marketing-search/skills/programmatic-seo/references/playbooks.md +308 -0
- package/skills/optbrew/modules/marketing-search/skills/schema/GUIDE.md +172 -0
- package/skills/optbrew/modules/marketing-search/skills/schema/references/schema-examples.md +398 -0
- package/skills/optbrew/modules/marketing-search/skills/seo-audit/GUIDE.md +492 -0
- package/skills/optbrew/modules/marketing-search/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/skills/optbrew/modules/marketing-search/skills/seo-audit/references/international-seo.md +230 -0
- package/skills/optbrew/modules/marketing-search/skills/site-architecture/GUIDE.md +350 -0
- package/skills/optbrew/modules/marketing-search/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/skills/optbrew/modules/marketing-search/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/skills/optbrew/modules/marketing-search/skills/site-architecture/references/site-type-templates.md +293 -0
- package/skills/optbrew/modules/mblode-seo/GUIDE.md +74 -0
- package/skills/optbrew/modules/mblode-seo/references/answer-engines.md +58 -0
- package/skills/optbrew/modules/mblode-seo/references/audit.md +78 -0
- package/skills/optbrew/modules/mblode-seo/references/brief-template.md +47 -0
- package/skills/optbrew/modules/mblode-seo/references/monitoring.md +56 -0
- package/skills/optbrew/modules/mblode-seo/references/nextjs-implementation.md +65 -0
- package/skills/optbrew/modules/mblode-seo/references/research-protocol.md +37 -0
- package/skills/optbrew/modules/mblode-seo/references/sources.md +47 -0
- package/skills/optbrew/modules/mblode-seo/references/validation-evidence.md +21 -0
- package/skills/optbrew/modules/naver-searchadvisor/GUIDE.md +75 -0
- package/skills/optbrew/modules/naver-searchadvisor/NOTICE.md +59 -0
- package/skills/optbrew/modules/naver-searchadvisor/references/INDEX.md +97 -0
- package/skills/optbrew/modules/naver-searchadvisor/scripts/audit.mjs +742 -0
- package/skills/optbrew/modules/naver-searchadvisor/scripts/robots.mjs +77 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-ai-search-share-of-voice/GUIDE.md +94 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-api/GUIDE.md +186 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-api/references/api-surface-map.md +207 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-api/references/auth-and-keys.md +182 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-api/references/integration-patterns.md +283 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-api/references/rate-limits-and-credits.md +235 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-competitor-gap-analysis/GUIDE.md +117 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-content-audit/GUIDE.md +155 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-content-audit/references/cite.md +84 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-content-audit/references/core-eeat.md +147 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-content-audit/templates/verdict.md +63 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-firecrawl/GUIDE.md +141 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-firecrawl/references/preflight.md +73 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-geo/GUIDE.md +159 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/GUIDE.md +393 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/assets/templates/cwv-audit-report.md +48 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/assets/templates/gsc-performance-report.md +44 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/assets/templates/indexation-status-report.md +43 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/auth-setup.md +160 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/cross-skill-integration.md +187 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/ga4-data-api.md +184 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/indexing-api.md +109 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/keyword-planner-api.md +66 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/nlp-api.md +55 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/pagespeed-crux-api.md +204 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/rate-limits-quotas.md +75 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/search-console-api.md +156 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/supplementary-apis.md +99 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-google/references/youtube-api.md +49 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-keyword-niche/GUIDE.md +174 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-page/GUIDE.md +174 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-plan/GUIDE.md +220 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/GUIDE.md +135 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/references/google-rich-results.md +89 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/templates/article.json +23 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/templates/breadcrumb-list.json +18 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/templates/faq-page.json +22 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/templates/local-business.json +32 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-schema/templates/product.json +25 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-sitemap/GUIDE.md +128 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-technical-audit/GUIDE.md +235 -0
- package/skills/optbrew/modules/seranking-seo/skills/seo-technical-audit/references/severity-mapping.md +133 -0
- package/skills/optbrew/references/ai-crawlers.json +21 -0
- package/skills/optbrew/references/ai-crawlers.md +24 -0
- package/skills/optbrew/references/api.md +45 -0
- package/skills/optbrew/references/check-registry.json +28 -0
- package/skills/optbrew/references/evidence.md +9 -0
- package/skills/optbrew/references/intake.md +9 -0
- package/skills/optbrew/references/measurement.md +29 -0
- package/skills/optbrew/references/policies.md +7 -0
- package/skills/optbrew/references/profiles.json +13 -0
- package/skills/optbrew/references/remediations.json +12 -0
- package/skills/optbrew/references/report.md +29 -0
- package/skills/optbrew/references/routing.md +15 -0
- package/skills/optbrew/references/schemas/contract.schema.json +51 -0
- package/skills/optbrew/references/scoring.md +62 -0
- package/skills/optbrew/scripts/adapters/anthropic.mjs +116 -0
- package/skills/optbrew/scripts/adapters/imports.mjs +81 -0
- package/skills/optbrew/scripts/audit.mjs +124 -0
- package/skills/optbrew/scripts/cli.mjs +41 -0
- package/skills/optbrew/scripts/core/bootstrap.mjs +31 -0
- package/skills/optbrew/scripts/core/bundle.mjs +73 -0
- package/skills/optbrew/scripts/core/capabilities.mjs +19 -0
- package/skills/optbrew/scripts/core/collector.mjs +250 -0
- package/skills/optbrew/scripts/core/compare.mjs +47 -0
- package/skills/optbrew/scripts/core/contracts.mjs +144 -0
- package/skills/optbrew/scripts/core/cost-ledger.mjs +95 -0
- package/skills/optbrew/scripts/core/crawlers.mjs +11 -0
- package/skills/optbrew/scripts/core/derive.mjs +168 -0
- package/skills/optbrew/scripts/core/facts.mjs +189 -0
- package/skills/optbrew/scripts/core/findings.mjs +54 -0
- package/skills/optbrew/scripts/core/html.mjs +53 -0
- package/skills/optbrew/scripts/core/metrics.mjs +97 -0
- package/skills/optbrew/scripts/core/protocol.mjs +125 -0
- package/skills/optbrew/scripts/core/report.mjs +742 -0
- package/skills/optbrew/scripts/core/scope.mjs +52 -0
- package/skills/optbrew/scripts/core/score.mjs +71 -0
- package/skills/optbrew/scripts/core/weights.mjs +139 -0
- package/skills/optbrew/source-lock.json +2686 -0
- package/source-lock.json +2686 -0
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
> Example output: examples/seo-google-quickstart-20260514/README.md (upstream-only reference; route through optbrew)
|
|
2
|
+
|
|
3
|
+
# Google SEO APIs
|
|
4
|
+
|
|
5
|
+
Direct access to Google's own SEO data. Bridges the gap between crawl-based analysis (the rest of the catalogue) and Google's real-time field data: actual Chrome user metrics, real indexation status, search performance, and organic traffic.
|
|
6
|
+
|
|
7
|
+
All APIs are free. Setup requires a Google Cloud project with API key and/or service account — run the `setup` command for step-by-step instructions, or read `references/auth-setup.md` directly.
|
|
8
|
+
|
|
9
|
+
> **Adapted from [`AgriciDaniel/claude-seo`](https://github.com/AgriciDaniel/claude-seo)'s `seo-google` skill** (MIT). Scripts, references, and command surface mirror the upstream implementation. Config path namespaced to `~/.config/seo-skills/` for clean coexistence with the original.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
- **Required:** Python 3.10+ and the Google API client libraries. Install via `optbrew capability setup (see top-level routing)`.
|
|
14
|
+
- **Required:** at minimum a Google API key (Tier 0). For full coverage, also a Google Cloud service account (Tier 1+) and optionally a GA4 property ID (Tier 2) and Google Ads developer token (Tier 3).
|
|
15
|
+
- Config file: `~/.config/seo-skills/google-api.json`.
|
|
16
|
+
|
|
17
|
+
Before executing any command, check credentials:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
upstream script excluded; use optbrew capability routing
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Config file shape (`~/.config/seo-skills/google-api.json`):
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"service_account_path": "/path/to/service_account.json",
|
|
28
|
+
"api_key": "AIzaSy...",
|
|
29
|
+
"default_property": "sc-domain:example.com",
|
|
30
|
+
"ga4_property_id": "properties/123456789"
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
If missing, read `references/auth-setup.md` and walk the user through setup.
|
|
35
|
+
|
|
36
|
+
### Credential Tiers
|
|
37
|
+
|
|
38
|
+
| Tier | Detection | Available Commands |
|
|
39
|
+
|------|-----------|-------------------|
|
|
40
|
+
| **0** (API Key) | `api_key` present | `pagespeed`, `crux`, `crux-history`, `youtube`, `nlp`, `entity`, `safety` |
|
|
41
|
+
| **1** (OAuth/SA) | + OAuth token or service account | Tier 0 + `gsc`, `inspect`, `sitemaps`, `index` |
|
|
42
|
+
| **2** (Full) | + `ga4_property_id` configured | Tier 1 + `ga4`, `ga4-pages`, `ga4-referrals`, `ga4-channel-mix`, `ga4-properties` |
|
|
43
|
+
| **3** (Ads) | + `ads_developer_token` + `ads_customer_id` | Tier 2 + `keywords`, `volume` |
|
|
44
|
+
|
|
45
|
+
Always communicate the detected tier before running commands.
|
|
46
|
+
|
|
47
|
+
## Quick Reference
|
|
48
|
+
|
|
49
|
+
| Command | What it does | Tier |
|
|
50
|
+
|---------|-------------|------|
|
|
51
|
+
| `setup` | Check/configure API credentials | -- |
|
|
52
|
+
| `pagespeed <url>` | PSI Lighthouse + CrUX field data | 0 |
|
|
53
|
+
| `crux <url>` | CrUX field data only (p75 metrics) | 0 |
|
|
54
|
+
| `crux-history <url>` | 25-week CWV trend analysis | 0 |
|
|
55
|
+
| `gsc <property>` | Search Console: clicks, impressions, CTR, position | 1 |
|
|
56
|
+
| `inspect <url>` | URL Inspection: index status, canonical, crawl info | 1 |
|
|
57
|
+
| `inspect-batch <file>` | Batch URL Inspection from file | 1 |
|
|
58
|
+
| `sitemaps <property>` | GSC sitemap status | 1 |
|
|
59
|
+
| `index <url>` | Submit URL to Indexing API | 1 |
|
|
60
|
+
| `index-batch <file>` | Batch submit up to 200 URLs | 1 |
|
|
61
|
+
| `ga4 [property-id]` | GA4 organic traffic report | 2 |
|
|
62
|
+
| `ga4-pages [property-id]` | Top organic landing pages | 2 |
|
|
63
|
+
| `ga4-referrals [property-id]` | Referral sessions by source — AI assistants by default | 2 |
|
|
64
|
+
| `ga4-channel-mix [property-id]` | Sessions split by channel group (Direct / Organic / Referral / Paid …) | 2 |
|
|
65
|
+
| `ga4-properties` | List every GA4 account + property the service account can read | 2 |
|
|
66
|
+
| `youtube <query>` | YouTube video search (views, likes, duration) | 0 |
|
|
67
|
+
| `youtube-video <id>` | YouTube video details + top comments | 0 |
|
|
68
|
+
| `nlp <url-or-text>` | NLP entity extraction + sentiment + classification | 0 |
|
|
69
|
+
| `entities <url-or-text>` | Entity analysis only (for E-E-A-T) | 0 |
|
|
70
|
+
| `keywords <seed>` | Keyword ideas from Google Ads Keyword Planner | 3 |
|
|
71
|
+
| `volume <keywords>` | Search volume lookup from Keyword Planner | 3 |
|
|
72
|
+
| `entity <query>` | Knowledge Graph entity check | 0 |
|
|
73
|
+
| `safety <url>` | Web Risk URL safety check | 0 |
|
|
74
|
+
| `quotas` | Show rate limits for all APIs | -- |
|
|
75
|
+
| `report <type>` | Generate a PDF/HTML/XLSX report from collected JSON | -- |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## PageSpeed + CrUX
|
|
80
|
+
|
|
81
|
+
### `pagespeed <url>`
|
|
82
|
+
|
|
83
|
+
Combined Lighthouse lab data + CrUX field data.
|
|
84
|
+
|
|
85
|
+
**Script:** `upstream script excluded; use optbrew capability routing <url> --json`
|
|
86
|
+
**Reference:** `references/pagespeed-crux-api.md`
|
|
87
|
+
**Default:** Both mobile + desktop strategies, all Lighthouse categories.
|
|
88
|
+
|
|
89
|
+
Output merges lab scores (point-in-time Lighthouse) with field data (28-day Chrome user metrics). CrUX tries URL-level first, falls back to origin-level.
|
|
90
|
+
|
|
91
|
+
### `crux <url>`
|
|
92
|
+
|
|
93
|
+
CrUX field data only (no Lighthouse run). Faster.
|
|
94
|
+
|
|
95
|
+
**Script:** `upstream script excluded; use optbrew capability routing <url> --crux-only --json`
|
|
96
|
+
|
|
97
|
+
### `crux-history <url>`
|
|
98
|
+
|
|
99
|
+
25-week CrUX History trends. Shows whether CWV metrics are improving, stable, or degrading.
|
|
100
|
+
|
|
101
|
+
**Script:** `upstream script excluded; use optbrew capability routing <url> --json`
|
|
102
|
+
**Reference:** `references/pagespeed-crux-api.md`
|
|
103
|
+
|
|
104
|
+
Output includes per-metric trend direction, percentage change, and weekly p75 values.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Search Console
|
|
109
|
+
|
|
110
|
+
### `gsc <property>`
|
|
111
|
+
|
|
112
|
+
Search Analytics: clicks, impressions, CTR, position for last 28 days.
|
|
113
|
+
|
|
114
|
+
**Script:** `upstream script excluded; use optbrew capability routing <property> --json`
|
|
115
|
+
**Reference:** `references/search-console-api.md`
|
|
116
|
+
**Default:** 28 days, dimensions=query,page, type=web, limit=1000.
|
|
117
|
+
|
|
118
|
+
Includes quick-win detection: queries at position 4-10 with high impressions.
|
|
119
|
+
|
|
120
|
+
**Filtering:** `--device {desktop,mobile,tablet}`, `--country <ISO3>`, `--page <url-or-substring>` (defaults to `contains` match; pass `--page-match equals` for exact-URL match). Combine for per-URL query analysis: `--page /blog/best-ai-seo-tools/ --dimensions query`.
|
|
121
|
+
|
|
122
|
+
**AI Overview / AI Mode:** `--ai-overview` (or `--ai-mode`) filters results to queries where Google rendered an AI Overview / AI Mode SERP that included one of your URLs. This is Google's first-party answer to *"are we cited in AI Overview?"* — clicks, impressions, CTR, and avg position straight from GSC. Combine with `--dimensions query,page` to see which queries+pages earned AI Overview presence, or with `--page /post/` to scope to one URL. For other appearance types (`RICH_RESULT`, `REVIEW_SNIPPET`, etc.) use `--search-appearance <value>`.
|
|
123
|
+
|
|
124
|
+
### `inspect <url>`
|
|
125
|
+
|
|
126
|
+
URL Inspection: real indexation status from Google.
|
|
127
|
+
|
|
128
|
+
**Script:** `upstream script excluded; use optbrew capability routing <url> --json`
|
|
129
|
+
|
|
130
|
+
Returns: verdict (PASS/FAIL), coverage state, robots.txt status, indexing state, page fetch state, canonical selection, mobile usability, rich results.
|
|
131
|
+
|
|
132
|
+
### `inspect-batch <file>`
|
|
133
|
+
|
|
134
|
+
Batch inspection from a file (one URL per line). Rate limited to 2,000/day per site.
|
|
135
|
+
|
|
136
|
+
**Script:** `upstream script excluded; use optbrew capability routing <file> --json`
|
|
137
|
+
|
|
138
|
+
### `sitemaps <property>`
|
|
139
|
+
|
|
140
|
+
List submitted sitemaps with status, errors, warnings.
|
|
141
|
+
|
|
142
|
+
**Script:** `upstream script excluded; use optbrew capability routing sitemaps --property <property> --json`
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Indexing API
|
|
147
|
+
|
|
148
|
+
### `index <url>`
|
|
149
|
+
|
|
150
|
+
Notify Google of a URL update.
|
|
151
|
+
|
|
152
|
+
**Execution:** Submission disabled in optbrew. No publish or batch command is bundled. Separate user authority and an approved submission path are required.
|
|
153
|
+
**Reference:** `references/indexing-api.md`
|
|
154
|
+
|
|
155
|
+
The Indexing API is officially for JobPosting and BroadcastEvent/VideoObject pages. Always inform the user of this restriction. Daily quota: 200 publish requests.
|
|
156
|
+
|
|
157
|
+
### `index-batch <file>`
|
|
158
|
+
|
|
159
|
+
Batch submit URLs from a file. Tracks quota usage.
|
|
160
|
+
|
|
161
|
+
**Execution:** Submission disabled in optbrew. No publish or batch command is bundled. Separate user authority and an approved submission path are required.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## GA4 Traffic
|
|
166
|
+
|
|
167
|
+
All GA4 reports accept an optional `--page <path-or-url>` flag to scope the report to a single landing page (EXACT match against GA4's `landingPage` dimension; full URLs are auto-stripped to path). Use it whenever the question is "how is *this* post performing?" rather than site-wide.
|
|
168
|
+
|
|
169
|
+
`--report organic` and `--report top-pages` accept `--channel <name|all>`: defaults to `organic` (Organic Search), pass `all` to drop the channel filter (required for whole-page weekly trends across all traffic sources), or any GA4 default channel group verbatim — `Direct`, `Referral`, `Paid Search`, `Organic Social`, etc.
|
|
170
|
+
|
|
171
|
+
### `ga4 [property-id]`
|
|
172
|
+
|
|
173
|
+
Daily-time-series traffic report: sessions, users, pageviews, bounce rate, engagement.
|
|
174
|
+
|
|
175
|
+
**Script:** `upstream script excluded; use optbrew capability routing <id> --json`
|
|
176
|
+
**Reference:** `references/ga4-data-api.md`
|
|
177
|
+
**Default:** 28 days, filtered to Organic Search channel group. Pass `--channel all` for unfiltered traffic.
|
|
178
|
+
|
|
179
|
+
The all-channels variant is what answers "how is this post growing week over week?" when most of the traffic is Direct or Referral rather than Organic — the canonical case for AI-cited content. Example: `--report organic --page /blog/best-ai-seo-tools/ --channel all --days 99`.
|
|
180
|
+
|
|
181
|
+
### `ga4-pages [property-id]`
|
|
182
|
+
|
|
183
|
+
Top landing pages ranked by sessions for the chosen channel (default Organic Search; use `--channel all` for site-wide top pages across every source).
|
|
184
|
+
|
|
185
|
+
**Script:** `upstream script excluded; use optbrew capability routing <id> --report top-pages --json`
|
|
186
|
+
|
|
187
|
+
### `ga4-referrals [property-id]`
|
|
188
|
+
|
|
189
|
+
Referral sessions broken down by `sessionSource`. Defaults to a curated AI-assistant
|
|
190
|
+
hostname list — OpenAI (chatgpt.com, chat.openai.com), Anthropic (claude.ai), Google
|
|
191
|
+
(gemini.google.com, bard.google.com), Microsoft (copilot.microsoft.com), Perplexity
|
|
192
|
+
(perplexity.ai), Alibaba/Qwen (chat.qwen.ai, qwen.com, tongyi.aliyun.com), Mistral
|
|
193
|
+
(chat.mistral.ai), DeepSeek (chat.deepseek.com), xAI/Grok (grok.com, x.ai), plus
|
|
194
|
+
you.com / phind.com / poe.com — so the "how much traffic do AI assistants actually
|
|
195
|
+
send us?" question is one command. Use this as a reality check against AI-visibility
|
|
196
|
+
data from `seo-ai-search-share-of-voice` and `seo-geo` — referral volume measures
|
|
197
|
+
users sharing your links in AI chats, not whether the AI proactively cites you.
|
|
198
|
+
|
|
199
|
+
**Script:** `upstream script excluded; use optbrew capability routing <id> --report referrals --json`
|
|
200
|
+
|
|
201
|
+
**Source modes (`--sources`):**
|
|
202
|
+
- `ai` (default) — curated AI-assistant hostname list
|
|
203
|
+
- `all` — every source in the Referral channel group
|
|
204
|
+
- `chatgpt.com,perplexity.ai,...` — explicit comma-separated list
|
|
205
|
+
|
|
206
|
+
Combine with `--page` to answer "how much AI traffic did THIS specific post get?":
|
|
207
|
+
`--report referrals --page /blog/best-ai-seo-tools/`.
|
|
208
|
+
|
|
209
|
+
### `ga4-channel-mix [property-id]`
|
|
210
|
+
|
|
211
|
+
Sessions broken down by `sessionDefaultChannelGroup` (Direct / Organic Search / Referral / Paid Search / Organic Social / …). No channel filter — this is the diagnostic view for "where does traffic to this page actually come from?". Each row includes a `share_of_sessions` percentage so the mix is visible at a glance.
|
|
212
|
+
|
|
213
|
+
**Script:** `upstream script excluded; use optbrew capability routing <id> --report channel-mix --json`
|
|
214
|
+
|
|
215
|
+
This is the report that answers questions like *"is this post mostly winning on organic, or is the traffic coming from somewhere else?"*. AI-assistant traffic frequently lands in `Direct` (uncredited) rather than `Referral`, so a high Direct share on a recent content-heavy page is itself an AI-visibility signal — pair with `ga4-referrals` for a fuller picture.
|
|
216
|
+
|
|
217
|
+
Per-page diagnosis: `--report channel-mix --page /blog/best-ai-seo-tools/ --days 90`.
|
|
218
|
+
|
|
219
|
+
### `ga4-properties`
|
|
220
|
+
|
|
221
|
+
Enumerates every GA4 account and property the service account can read. Use this
|
|
222
|
+
*before* running `ga4` / `ga4-pages` / `ga4-referrals` / `ga4-channel-mix` when the
|
|
223
|
+
client has multiple GA4 properties (typical: separate marketing-site and app
|
|
224
|
+
properties, or per-region properties) and you need to know which property_id to
|
|
225
|
+
query. Output groups properties by parent account; the `property_id` field is the
|
|
226
|
+
numeric value to pass as `--property`.
|
|
227
|
+
|
|
228
|
+
**Script:** `upstream script excluded; use optbrew capability routing properties --json`
|
|
229
|
+
|
|
230
|
+
Requires the **Google Analytics Admin API** to be enabled in your Cloud project
|
|
231
|
+
(separate from the Data API) and the service account to have Viewer access on at
|
|
232
|
+
least one property.
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## YouTube (Video SEO)
|
|
237
|
+
|
|
238
|
+
YouTube mentions have the strongest AI visibility correlation (0.737). Free, API key only.
|
|
239
|
+
|
|
240
|
+
### `youtube <query>`
|
|
241
|
+
|
|
242
|
+
Search YouTube for videos. Returns title, channel, views, likes, duration.
|
|
243
|
+
|
|
244
|
+
**Script:** `upstream script excluded; use optbrew capability routing search "<query>" --json`
|
|
245
|
+
**Reference:** `references/youtube-api.md`
|
|
246
|
+
**Quota:** 100 units per search (10,000 units/day free).
|
|
247
|
+
|
|
248
|
+
### `youtube-video <video_id>`
|
|
249
|
+
|
|
250
|
+
Detailed video info + tags + top 10 comments.
|
|
251
|
+
|
|
252
|
+
**Script:** `upstream script excluded; use optbrew capability routing video <video_id> --json`
|
|
253
|
+
**Quota:** 2 units (video details + comments).
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## NLP Content Analysis
|
|
258
|
+
|
|
259
|
+
Google's own entity/sentiment analysis. Enhances E-E-A-T scoring.
|
|
260
|
+
|
|
261
|
+
### `nlp <url-or-text>`
|
|
262
|
+
|
|
263
|
+
Full NLP analysis: entities, sentiment, content classification.
|
|
264
|
+
|
|
265
|
+
**Script:** `upstream script excluded; use optbrew capability routing <url> --json` or `--text "..."`
|
|
266
|
+
**Reference:** `references/nlp-api.md`
|
|
267
|
+
**Free tier:** 5,000 units/month. Requires billing enabled on GCP project.
|
|
268
|
+
|
|
269
|
+
### `entities <url-or-text>`
|
|
270
|
+
|
|
271
|
+
Entity extraction only (faster, less quota).
|
|
272
|
+
|
|
273
|
+
**Script:** `upstream script excluded; use optbrew capability routing <url> --features entities --json`
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Keyword Research (Google Ads)
|
|
278
|
+
|
|
279
|
+
Gold-standard keyword volume data. Requires Google Ads account.
|
|
280
|
+
|
|
281
|
+
### `keywords <seed>`
|
|
282
|
+
|
|
283
|
+
Generate keyword ideas from seed terms.
|
|
284
|
+
|
|
285
|
+
**Script:** `upstream script excluded; use optbrew capability routing ideas "<seed>" --json`
|
|
286
|
+
**Reference:** `references/keyword-planner-api.md`
|
|
287
|
+
**Requires:** Ads developer token + customer ID in config (Tier 3).
|
|
288
|
+
|
|
289
|
+
### `volume <keywords>`
|
|
290
|
+
|
|
291
|
+
Search volume for specific keywords (comma-separated).
|
|
292
|
+
|
|
293
|
+
**Script:** `upstream script excluded; use optbrew capability routing volume "<kw1>,<kw2>" --json`
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Supplementary
|
|
298
|
+
|
|
299
|
+
### `entity <query>`
|
|
300
|
+
|
|
301
|
+
Knowledge Graph entity check. Verifies brand presence.
|
|
302
|
+
|
|
303
|
+
**Reference:** `references/supplementary-apis.md`
|
|
304
|
+
Uses Knowledge Graph Search API with API key.
|
|
305
|
+
|
|
306
|
+
### `safety <url>`
|
|
307
|
+
|
|
308
|
+
Web Risk API check for malware/social engineering flags.
|
|
309
|
+
|
|
310
|
+
**Reference:** `references/supplementary-apis.md`
|
|
311
|
+
|
|
312
|
+
### `quotas`
|
|
313
|
+
|
|
314
|
+
Display rate limits table. Read `references/rate-limits-quotas.md`.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Reports
|
|
319
|
+
|
|
320
|
+
After any analysis command, offer to generate a PDF/HTML/XLSX report.
|
|
321
|
+
|
|
322
|
+
### `report <type>`
|
|
323
|
+
|
|
324
|
+
Generate a professional PDF/HTML/XLSX report with charts and analytics.
|
|
325
|
+
|
|
326
|
+
**Script:** `upstream script excluded; use optbrew capability routing <type> --data <json> --domain <domain> --format pdf`
|
|
327
|
+
|
|
328
|
+
| Type | Input | Output |
|
|
329
|
+
|------|-------|--------|
|
|
330
|
+
| `cwv-audit` | PSI + CrUX + CrUX History data | Core Web Vitals audit with gauges, timelines, distributions |
|
|
331
|
+
| `gsc-performance` | GSC query data | Search Console report with query tables, quick wins |
|
|
332
|
+
| `indexation` | Batch inspection data | Indexation status with coverage donut chart |
|
|
333
|
+
| `full` | All data combined | Comprehensive Google SEO report (all sections) |
|
|
334
|
+
|
|
335
|
+
**Workflow:**
|
|
336
|
+
1. Run data collection commands (`pagespeed`, `gsc`, `inspect-batch`, etc.)
|
|
337
|
+
2. Save JSON output to file: `upstream script excluded; use optbrew capability routing <url> --json > data.json`
|
|
338
|
+
3. Generate report: `upstream script excluded; use optbrew capability routing cwv-audit --data data.json --domain <domain>`
|
|
339
|
+
|
|
340
|
+
**Convention:** After completing analysis, suggest: "Generate a report? Use `report <type>`."
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Rate Limits
|
|
345
|
+
|
|
346
|
+
| API | Per-Minute | Per-Day | Auth |
|
|
347
|
+
|-----|-----------|---------|------|
|
|
348
|
+
| PSI v5 | 240 QPM | 25,000 QPD | API Key |
|
|
349
|
+
| CrUX + History | 150 QPM (shared) | Unlimited | API Key |
|
|
350
|
+
| GSC Search Analytics | 1,200 QPM/site | 30M QPD | Service Account |
|
|
351
|
+
| GSC URL Inspection | 600 QPM | 2,000 QPD/site | Service Account |
|
|
352
|
+
| Indexing API | 380 RPM | 200 publish/day | Service Account |
|
|
353
|
+
| GA4 Data API | 10 concurrent | ~25K tokens/day | Service Account |
|
|
354
|
+
|
|
355
|
+
## Cross-Skill Integration
|
|
356
|
+
|
|
357
|
+
- **`seo-technical-audit`** — uses `pagespeed_check.py` for real CWV field data; uses `inspect` to confirm indexation status flagged by SE Ranking's audit.
|
|
358
|
+
- **`seo-page`** — replaces estimated traffic with real GSC `query,page` data via `gsc`; confirms indexation via `inspect`.
|
|
359
|
+
- **`seo-drift`** — adds `crux-history` (25-week trend) and GSC delta tracking to baseline/compare snapshots.
|
|
360
|
+
- **`seo-sitemap`** — `sitemaps` command shows which sitemaps Google has actually consumed and their error/warning counts (vs SE Ranking's audit which only crawls).
|
|
361
|
+
- **`seo-content-audit`** — `nlp` enhances E-E-A-T entity/sentiment scoring on the page being audited; `gsc` confirms whether the page is earning impressions for its target keywords.
|
|
362
|
+
- **`seo-geo`** — `gsc --ai-overview --page <url>` answers "did this URL appear in AI Overview, and what did it earn?" with Google's own data, complementing the SE Ranking AIO citation pull. Pair `gsc --ai-overview --dimensions query,page` with the GEO recommendations to confirm wins/losses URL-by-URL.
|
|
363
|
+
- **`seo-ai-search-share-of-voice`** — pair `ga4-referrals` (downstream traffic from chatgpt.com/perplexity.ai/gemini.google.com etc.) with the SoV pull (upstream citation/brand mention presence) for a complete AI-visibility picture: SoV measures whether LLMs cite you, GA4 referrals measure whether their users actually click through.
|
|
364
|
+
- **`seo-keyword-cluster`** / **`seo-keyword-niche`** — `volume` (Tier 3) replaces SE Ranking volume with Google Ads gold-standard volumes when available.
|
|
365
|
+
- **`seo-plan`** — when GSC + GA4 are configured, the "Where you are" baseline uses real impressions/clicks/conversions instead of SE Ranking estimates.
|
|
366
|
+
|
|
367
|
+
## Output Format
|
|
368
|
+
|
|
369
|
+
- CWV metrics: traffic-light rating (Good / Needs Improvement / Poor)
|
|
370
|
+
- Performance reports: tables with sortable columns
|
|
371
|
+
- Always include data freshness note
|
|
372
|
+
- Save reports as `GOOGLE-API-REPORT-{domain}.md`
|
|
373
|
+
- Use templates from `assets/templates/` for structured output
|
|
374
|
+
|
|
375
|
+
## Technical Notes
|
|
376
|
+
|
|
377
|
+
- INP replaced FID on March 12, 2024. Never reference FID.
|
|
378
|
+
- CLS values from CrUX are string-encoded (e.g., "0.05"). Scripts handle parsing.
|
|
379
|
+
- CrUX 404 = insufficient traffic, not an auth error.
|
|
380
|
+
- Search Analytics data has a 2-3 day lag.
|
|
381
|
+
- `round_trip_time` replaced `effectiveConnectionType` in CrUX (Feb 2025).
|
|
382
|
+
- Custom Search JSON API is closed to new customers (2025).
|
|
383
|
+
|
|
384
|
+
## Error Handling
|
|
385
|
+
|
|
386
|
+
| Scenario | Action |
|
|
387
|
+
|----------|--------|
|
|
388
|
+
| No credentials configured | Run `setup`. List Tier 0 commands that work with just an API key. |
|
|
389
|
+
| Service account lacks GSC access | Report error. Instruct: add `client_email` to GSC > Settings > Users > Add. |
|
|
390
|
+
| CrUX data unavailable (404) | Report insufficient Chrome traffic. Suggest PSI lab data as fallback. |
|
|
391
|
+
| GA4 property not found | Report error. Show how to find property ID in GA4 Admin > Property Details. |
|
|
392
|
+
| Indexing API quota exceeded | Report 200/day limit. Suggest prioritizing most important URLs. |
|
|
393
|
+
| Rate limit (429) | Wait and retry with exponential backoff. Report which API hit the limit. |
|
package/skills/optbrew/modules/seranking-seo/skills/seo-google/assets/templates/cwv-audit-report.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Core Web Vitals Audit
|
|
2
|
+
|
|
3
|
+
**URL/Origin:** {target}
|
|
4
|
+
**Strategy:** {strategy}
|
|
5
|
+
|
|
6
|
+
## CrUX Field Data (28-day rolling average)
|
|
7
|
+
|
|
8
|
+
Real Chrome user experience data from the Chrome UX Report.
|
|
9
|
+
|
|
10
|
+
| Metric | p75 Value | Rating | Good Threshold | Distribution |
|
|
11
|
+
|--------|-----------|--------|----------------|-------------|
|
|
12
|
+
| LCP | {lcp_value} | {lcp_rating} | ≤ 2,500ms | Good: {lcp_good}% / NI: {lcp_ni}% / Poor: {lcp_poor}% |
|
|
13
|
+
| INP | {inp_value} | {inp_rating} | ≤ 200ms | Good: {inp_good}% / NI: {inp_ni}% / Poor: {inp_poor}% |
|
|
14
|
+
| CLS | {cls_value} | {cls_rating} | ≤ 0.1 | Good: {cls_good}% / NI: {cls_ni}% / Poor: {cls_poor}% |
|
|
15
|
+
| FCP | {fcp_value} | {fcp_rating} | ≤ 1,800ms | Good: {fcp_good}% / NI: {fcp_ni}% / Poor: {fcp_poor}% |
|
|
16
|
+
| TTFB | {ttfb_value} | {ttfb_rating} | ≤ 800ms | Good: {ttfb_good}% / NI: {ttfb_ni}% / Poor: {ttfb_poor}% |
|
|
17
|
+
|
|
18
|
+
**Collection Period:** {collection_start} to {collection_end}
|
|
19
|
+
|
|
20
|
+
## Lighthouse Lab Scores
|
|
21
|
+
|
|
22
|
+
| Category | Score |
|
|
23
|
+
|----------|-------|
|
|
24
|
+
| Performance | {perf_score}/100 |
|
|
25
|
+
| Accessibility | {a11y_score}/100 |
|
|
26
|
+
| Best Practices | {bp_score}/100 |
|
|
27
|
+
| SEO | {seo_score}/100 |
|
|
28
|
+
|
|
29
|
+
## CrUX History Trends (25-week)
|
|
30
|
+
|
|
31
|
+
| Metric | Direction | Change | Earliest → Latest |
|
|
32
|
+
|--------|-----------|--------|-------------------|
|
|
33
|
+
{trends_table}
|
|
34
|
+
|
|
35
|
+
## Top Opportunities
|
|
36
|
+
|
|
37
|
+
| Opportunity | Estimated Savings |
|
|
38
|
+
|-------------|-------------------|
|
|
39
|
+
{opportunities_table}
|
|
40
|
+
|
|
41
|
+
## Recommendations
|
|
42
|
+
|
|
43
|
+
{recommendations}
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
*CrUX data updated daily ~04:00 UTC. 28-day rolling average.*
|
|
47
|
+
*INP replaced FID as the responsiveness Core Web Vital on March 12, 2024.*
|
|
48
|
+
*Generated {timestamp}.*
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Google Search Console Performance Report
|
|
2
|
+
|
|
3
|
+
**Property:** {property}
|
|
4
|
+
**Date Range:** {start_date} — {end_date}
|
|
5
|
+
**Search Type:** {search_type}
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
| Metric | Value |
|
|
10
|
+
|--------|-------|
|
|
11
|
+
| Total Clicks | {total_clicks} |
|
|
12
|
+
| Total Impressions | {total_impressions} |
|
|
13
|
+
| Average CTR | {avg_ctr}% |
|
|
14
|
+
| Average Position | {avg_position} |
|
|
15
|
+
|
|
16
|
+
## Top Queries
|
|
17
|
+
|
|
18
|
+
| # | Query | Clicks | Impressions | CTR | Position |
|
|
19
|
+
|---|-------|--------|-------------|-----|----------|
|
|
20
|
+
{queries_table}
|
|
21
|
+
|
|
22
|
+
## Top Pages
|
|
23
|
+
|
|
24
|
+
| # | Page | Clicks | Impressions | CTR | Position |
|
|
25
|
+
|---|------|--------|-------------|-----|----------|
|
|
26
|
+
{pages_table}
|
|
27
|
+
|
|
28
|
+
## Quick Wins (Position 4-10, High Impressions)
|
|
29
|
+
|
|
30
|
+
These queries rank on page 1 but below position 3. A small ranking improvement could yield significant traffic gains.
|
|
31
|
+
|
|
32
|
+
| Query | Position | Impressions | Clicks | CTR | Opportunity |
|
|
33
|
+
|-------|----------|-------------|--------|-----|-------------|
|
|
34
|
+
{quick_wins_table}
|
|
35
|
+
|
|
36
|
+
## Device Breakdown
|
|
37
|
+
|
|
38
|
+
| Device | Clicks | Impressions | CTR | Position |
|
|
39
|
+
|--------|--------|-------------|-----|----------|
|
|
40
|
+
{device_table}
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
*Data freshness: Search Analytics has a 2-3 day lag. Data available for ~16 months.*
|
|
44
|
+
*Generated {timestamp} via Google Search Console API.*
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# URL Indexation Status Report
|
|
2
|
+
|
|
3
|
+
**Property:** {property}
|
|
4
|
+
**URLs Inspected:** {total_urls}
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
|
|
8
|
+
| Status | Count | Percentage |
|
|
9
|
+
|--------|-------|-----------|
|
|
10
|
+
| Indexed (PASS) | {pass_count} | {pass_pct}% |
|
|
11
|
+
| Not Indexed (FAIL) | {fail_count} | {fail_pct}% |
|
|
12
|
+
| Neutral | {neutral_count} | {neutral_pct}% |
|
|
13
|
+
| Errors | {error_count} | {error_pct}% |
|
|
14
|
+
|
|
15
|
+
## Detailed Results
|
|
16
|
+
|
|
17
|
+
| URL | Verdict | Coverage State | Fetch State | Google Canonical | Last Crawl |
|
|
18
|
+
|-----|---------|---------------|-------------|-----------------|------------|
|
|
19
|
+
{results_table}
|
|
20
|
+
|
|
21
|
+
## Canonical Mismatches
|
|
22
|
+
|
|
23
|
+
URLs where Google selected a different canonical than declared:
|
|
24
|
+
|
|
25
|
+
| URL | User Canonical | Google Canonical |
|
|
26
|
+
|-----|---------------|-----------------|
|
|
27
|
+
{canonical_mismatches_table}
|
|
28
|
+
|
|
29
|
+
## Common Issues
|
|
30
|
+
|
|
31
|
+
| Issue | Count | Priority | Action |
|
|
32
|
+
|-------|-------|----------|--------|
|
|
33
|
+
{issues_table}
|
|
34
|
+
|
|
35
|
+
## Rich Results Detected
|
|
36
|
+
|
|
37
|
+
| URL | Rich Result Type | Status |
|
|
38
|
+
|-----|-----------------|--------|
|
|
39
|
+
{rich_results_table}
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
*URL Inspection API: 2,000 inspections/day per site, 600/min.*
|
|
43
|
+
*Generated {timestamp} via Google Search Console URL Inspection API.*
|