feat(seo): sync SEO fixes across all nine locales#134
Merged
Conversation
Mirrors the English work from the previous commit into the eight
translations, and clears the meta-length backlog site-wide.
Posts (4 posts x 8 locales):
- Renamed headings, self-contained lead sentences, the merged
click-to-call intro, the per-system audio format table, and the new
FAQs, all translated rather than transplanted.
- The demand term is bridged to the product noun in each market's own
vocabulary: 自动总机 / 自動總機 / オートアテンダント / 자동응답 /
automatische Telefonzentrale / operadora automática / standard
automatique / centralino automatico. The product noun ("call flow")
stays untranslated-in-meaning everywhere, and each locale's new FAQ
states plainly that it is not a full enterprise IVR.
Meta lengths — the reason this was needed:
- A faithful translation runs 30-60% longer than its English source, so
59 title/description fields were truncating in SERPs; one French
description was 261 characters. All are now inside budget, measured by
display width rather than character count, since CJK truncates at
roughly half the character count of Latin text.
- This also covers the five older posts, not just the recent four.
Pages (8 locales each):
- /voice/ gains the two feature cards, the two FAQs (feeding the
existing FAQPage schema), and the SoftwareApplication featureList.
- /voice/prompts/ gains the FAQ connecting the generator to call flows.
Verified: 213 pages build, no broken or leaking internal links, and every
localized post now matches the English heading and table structure
exactly.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EwxQJL43iApJRb4NS5p6vD
wavekat-eason
added a commit
that referenced
this pull request
Jul 26, 2026
An SEO/GEO pass over the four most recent blog posts and the `/voice/` product pages, applied in **all nine languages** — plus the CLAUDE.md rule that makes this review mandatory going forward. (#134 merged into this branch, so this PR now carries both the English work and the full i18n sync.) **No URLs changed.** No file was renamed, so every slug is identical and no redirects are needed. Some `##` headings were reworded; nothing in the repo links to an in-post heading anchor. ## Why Three problems, found with the `claude-seo` skills: 1. **`/voice/` never said what people search for.** The product page contained the words "call flow", "auto attendant" and "click-to-call" exactly zero times, so the two newest features had no landing page — only blog posts. 2. **Titles and descriptions were off-budget**, badly so in translation. A faithful de/es/fr/it translation runs 30–60% longer than its English source, and one French description had reached 261 characters against a ~160 budget. 3. **Posts buried their own answer.** Leads assumed context, headings were labels ("What it does", "How it works") rather than the question the section answers, and one post defined the product twice in two consecutive paragraphs. ## Entity term vs demand term The interesting decision here. "Call flow" is what the app calls the feature; "auto attendant" is what people type into Google. Renaming the feature would break the naming consistency CLAUDE.md asks for, so instead the two are **bridged**: the product noun stays the entity everywhere, the demand term goes in the title, the description, one bridging sentence, and an FAQ that says plainly which is which — including that a call flow is *not* a full enterprise IVR. No page claims something its own FAQ then denies. Each locale uses its own market's word rather than a transliteration: | Locale | "auto attendant" | |---|---| | zh-Hans / zh-Hant | 自动总机 / 自動總機 | | ja | オートアテンダント(自動受付) | | ko | 자동응답 | | de | automatische Telefonzentrale | | es | operadora automática | | fr | standard automatique | | it | centralino automatico | ## What changed **Posts** (4 × 9 languages) - `answer-calls-with-a-call-flow` — retitled *Call Flows — an Auto Attendant for Small Business*; self-contained lead; new FAQ on auto attendant vs IVR. - `click-to-call-phone-links` — merged the duplicated definition into one definitional lead; description 187 → 145. - `phone-menu-ivr-voice-generator` — new "Which format does your phone system need?" table (Asterisk/FreePBX/3CX/Twilio/hosted VoIP, verified against each vendor's docs) and two FAQs; 971 → 1,309 words, 3 → 5 internal links. - `hold-switch-and-transfer-calls` — description trimmed, cross-link added. Meta lengths were re-audited across all 81 posts by **display width**, not character count — CJK glyphs occupy two width units, so a naive character count over-penalizes Latin brand names inside CJK titles and flagged 8 posts that were in fact fine. All genuine overflows are fixed. **Pages** (2 × 9 languages) - `/voice/` — two feature cards (answers when you can't, click a number to call it), two FAQs, and a `featureList` on the `SoftwareApplication` schema. - `/voice/prompts/` — FAQ linking the prompt generator to call flows. **CLAUDE.md** — every page, post, or translation now gets a `claude-seo` review before it ships, with the length budgets (including the separate CJK budget) and the entity-vs-demand-term rule written down. ## Verification - `npx astro build` — 213 pages - `npm run check:links` — no broken or leaking internal links - `npm run check:screenshots` — all 162 present - Structural parity audit — every localized post matches the English H2/H3/table counts exactly; all nine `/voice/` pages emit 14 FAQ questions and a `featureList`; all nine `/voice/prompts/` pages emit 7. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01EwxQJL43iApJRb4NS5p6vD --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #133 — mirrors the English work into the eight translations and clears the meta-length backlog site-wide. Merge #133 first; GitHub will retarget this to
mainautomatically.Posts — 4 posts × 8 locales
Renamed headings, self-contained lead sentences, the merged click-to-call intro, the per-system audio format table, and the new FAQs — translated rather than transplanted.
The demand term is bridged to the product noun in each market's own vocabulary:
"Call flow" stays the product noun everywhere, and each locale's new FAQ says plainly that it is not a full enterprise IVR — so no page argues with itself in any language.
Meta lengths — why this was needed
A faithful translation runs 30–60% longer than its English source, so 59 title/description fields were truncating in SERPs; one French description was 261 characters against a ~160 budget. All are now inside budget, measured by display width rather than character count — CJK truncates at roughly half the character count of Latin text, so a naïve
.lengthcheck both over- and under-reports.This pass also covers the five older posts, not just the recent four.
Pages — 8 locales each
/voice/gains the two feature cards, the two FAQs (feeding the existingFAQPageschema), and theSoftwareApplicationfeatureList./voice/prompts/gains the FAQ connecting the generator to call flows.Verification
npx astro build→ 213 pages;npm run check:links→ no broken or leaking internal links.🤖 Generated with Claude Code
https://claude.ai/code/session_01EwxQJL43iApJRb4NS5p6vD