Skip to content

Commit 0514b99

Browse files
authored
Merge pull request #190 from aicodingstack/codex/seo
fix(seo): align metadata with public discovery routes
2 parents 70ab4d1 + 6048055 commit 0514b99

96 files changed

Lines changed: 1053 additions & 392 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cspell.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@
4444
"ignorePaths": ["cloudflare-env.d.ts", "docs", ".claude"],
4545
"ignoreRegExpList": ["/\\d+-g[0-9a-f]{6,}/g"],
4646
"words": [
47+
"Kesiapan",
48+
"Мультимодельная",
49+
"мультимодельную",
50+
"мультимодельные",
51+
"мультимодельных",
52+
"продакшену",
53+
"confiabilidade",
54+
"gözlemlenebilirliğini",
55+
"modelnya",
56+
"observabilitas",
57+
"observabilidad",
58+
"observabilidade",
4759
"Autorisierungsaufträgen",
4860
"Entwicklungsframework",
4961
"İçgörüleri",

data/data-health.json

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -73,59 +73,59 @@
7373
},
7474
"translationsByLocale": {
7575
"de": {
76-
"totalStrings": 453,
76+
"totalStrings": 467,
7777
"matchingEnglish": 39,
78-
"matchingEnglishPercent": 8.6
78+
"matchingEnglishPercent": 8.4
7979
},
8080
"es": {
81-
"totalStrings": 453,
81+
"totalStrings": 467,
8282
"matchingEnglish": 25,
83-
"matchingEnglishPercent": 5.5
83+
"matchingEnglishPercent": 5.4
8484
},
8585
"fr": {
86-
"totalStrings": 453,
86+
"totalStrings": 467,
8787
"matchingEnglish": 36,
88-
"matchingEnglishPercent": 7.9
88+
"matchingEnglishPercent": 7.7
8989
},
9090
"id": {
91-
"totalStrings": 453,
91+
"totalStrings": 467,
9292
"matchingEnglish": 30,
93-
"matchingEnglishPercent": 6.6
93+
"matchingEnglishPercent": 6.4
9494
},
9595
"ja": {
96-
"totalStrings": 453,
96+
"totalStrings": 467,
9797
"matchingEnglish": 23,
98-
"matchingEnglishPercent": 5.1
98+
"matchingEnglishPercent": 4.9
9999
},
100100
"ko": {
101-
"totalStrings": 453,
101+
"totalStrings": 467,
102102
"matchingEnglish": 23,
103-
"matchingEnglishPercent": 5.1
103+
"matchingEnglishPercent": 4.9
104104
},
105105
"pt": {
106-
"totalStrings": 453,
106+
"totalStrings": 467,
107107
"matchingEnglish": 31,
108-
"matchingEnglishPercent": 6.8
108+
"matchingEnglishPercent": 6.6
109109
},
110110
"ru": {
111-
"totalStrings": 453,
111+
"totalStrings": 467,
112112
"matchingEnglish": 23,
113-
"matchingEnglishPercent": 5.1
113+
"matchingEnglishPercent": 4.9
114114
},
115115
"tr": {
116-
"totalStrings": 453,
116+
"totalStrings": 467,
117117
"matchingEnglish": 26,
118-
"matchingEnglishPercent": 5.7
118+
"matchingEnglishPercent": 5.6
119119
},
120120
"zh-Hans": {
121-
"totalStrings": 453,
121+
"totalStrings": 467,
122122
"matchingEnglish": 22,
123-
"matchingEnglishPercent": 4.9
123+
"matchingEnglishPercent": 4.7
124124
},
125125
"zh-Hant": {
126-
"totalStrings": 453,
126+
"totalStrings": 467,
127127
"matchingEnglish": 22,
128-
"matchingEnglishPercent": 4.9
128+
"matchingEnglishPercent": 4.7
129129
}
130130
},
131131
"issues": []

docs/DATA-HEALTH.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,17 @@ Exact English matches are a triage signal; product names and technical terms can
3737

3838
| Locale | Comparable strings | Exact English matches | Match rate |
3939
| --- | ---: | ---: | ---: |
40-
| de | 453 | 39 | 8.6% |
41-
| es | 453 | 25 | 5.5% |
42-
| fr | 453 | 36 | 7.9% |
43-
| id | 453 | 30 | 6.6% |
44-
| ja | 453 | 23 | 5.1% |
45-
| ko | 453 | 23 | 5.1% |
46-
| pt | 453 | 31 | 6.8% |
47-
| ru | 453 | 23 | 5.1% |
48-
| tr | 453 | 26 | 5.7% |
49-
| zh-Hans | 453 | 22 | 4.9% |
50-
| zh-Hant | 453 | 22 | 4.9% |
40+
| de | 467 | 39 | 8.4% |
41+
| es | 467 | 25 | 5.4% |
42+
| fr | 467 | 36 | 7.7% |
43+
| id | 467 | 30 | 6.4% |
44+
| ja | 467 | 23 | 4.9% |
45+
| ko | 467 | 23 | 4.9% |
46+
| pt | 467 | 31 | 6.6% |
47+
| ru | 467 | 23 | 4.9% |
48+
| tr | 467 | 26 | 5.6% |
49+
| zh-Hans | 467 | 22 | 4.7% |
50+
| zh-Hant | 467 | 22 | 4.7% |
5151

5252
## Backlog by Issue Type
5353

docs/SEO-SEARCH-OPPORTUNITY-MAP.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ AI Coding Stack has stronger structured catalog data than many editorial competi
6767
| P0 | Optimize `/models` for comparison intent | It is the strongest striking-distance page | Implemented in working tree |
6868
| P0 | Complete `/models/compare` metadata | The comparison route lacked canonical, hreflang, robots, and complete social metadata | Implemented in working tree |
6969
| P0 | Reposition homepage metadata around “AI coding tools directory and comparisons” | Aligns the broad landing page with non-brand discovery intent | Implemented in working tree |
70-
| P1 | Expand `/model-providers` selection guidance | Average position 14.3 indicates near-term potential | Planned |
70+
| P0 | Add the lowercase domain as a fallback WebSite name | Google indexed pages but exact brand and domain discovery remained weak; the WebSite schema lacked an `alternateName` fallback | Implemented in working tree |
71+
| P0 | Correct `/model-providers` canonical and hreflang paths | Production pointed canonical and alternates to the non-public `/modelProviders` path while the sitemap used `/model-providers` | Implemented in working tree |
72+
| P0 | Remove static meta-keyword lists and product examples | Google Search does not use the keywords meta tag for indexing or ranking; manually curated product names become stale and distract from visible, localized search-intent content | Implemented in working tree |
73+
| P1 | Expand `/model-providers` selection guidance | Average position 14.3 indicates near-term potential | Implemented in working tree |
7174
| P1 | Expand `/clis/codex-cli` with a direct answer and setup coverage | Multiple queries rank between positions 14.9 and 16.0 | Planned |
7275
| P1 | Expand `/ides/vscode` for “VS Code AI” intent | Highest observed product-query impressions | Planned |
7376
| P1 | Expand `/ides/kiro` for AWS/Kiro entity coverage | Multiple related queries already receive impressions | Planned |

src/app/[locale]/ai-coding-landscape/page.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s
2020
basePath: 'ai-coding-landscape',
2121
title,
2222
description,
23-
keywords:
24-
'AI coding ecosystem, AI development landscape, AI tools, coding tools visualization, vendor comparison, product matrix',
2523
ogType: 'website',
2624
})
2725
}

src/app/[locale]/articles/page.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s
2222
basePath: 'articles',
2323
title,
2424
description,
25-
keywords: tPage('keywords'),
2625
ogType: 'website',
2726
})
2827
}

src/app/[locale]/clis/page.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s
1111
locale: locale as Locale,
1212
category: 'clis',
1313
translationNamespace: 'pages.clis',
14-
additionalKeywords: ['Gemini CLI', 'GitHub Copilot CLI', 'command line AI tools'],
1514
})
1615
}
1716

src/app/[locale]/curated-collections/page.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ export async function generateMetadata({ params }: LocalePageProps) {
2323
basePath: 'curated-collections',
2424
title,
2525
description,
26-
keywords:
27-
'AI coding resources, MCP protocol, Agent2Agent, development standards, AI coding articles, semantic versioning, conventional commits',
2826
ogType: 'website',
2927
})
3028
}

src/app/[locale]/docs/page.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s
2323
basePath: 'docs',
2424
title,
2525
description,
26-
keywords: tPage('keywords'),
2726
ogType: 'website',
2827
})
2928
}

src/app/[locale]/extensions/page.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ export async function generateMetadata({ params }: { params: Promise<{ locale: s
1111
locale: locale as Locale,
1212
category: 'extensions',
1313
translationNamespace: 'pages.extensions',
14-
additionalKeywords: ['AI code completion', 'VS Code extensions', 'JetBrains AI'],
1514
})
1615
}
1716

0 commit comments

Comments
 (0)