feat: voice prompt generator landing page#125
Merged
Conversation
Add a standalone SEO/GEO landing page at /voice/prompts/ for the free phone-menu & IVR voice generator (wavekat-platform #161), and a homepage "Free tool" band linking to it so it isn't orphaned. The page markets the tool and hands off to the live app at platform.wavekat.com/voice/prompts. It uses the plain Base chrome rather than the WaveKat Voice sub-nav, since the generator is a separate product from the desktop app that owns /voice/. Carries WebApplication + FAQPage JSON-LD; self-contained intro and Q&A for answer-engine extraction. English-only for now (no hreflang emitted until translated). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
Localize the /voice/prompts/ landing page into all eight non-default locales (zh-Hans, zh-Hant, ja, ko, de, es, fr, it), mirroring the English page section-for-section with translated body copy, localized JSON-LD (url pinned to the live app, inLanguage per locale), and locale-prefixed internal links. Register /voice/prompts/ in the shared fullSite route list so hreflang, sitemap alternates, and the language switcher light up. Mirror the homepage "Free tool" band into each localized homepage. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The homepage "Free tool" band was one card-wide link to the landing page, while its button read "Try it free" — implying it opened the tool. Split it into two explicit actions: a primary "Try it free" that opens the live tool (platform.wavekat.com/voice/prompts) and a secondary "Learn more" to the landing page (/voice/prompts/). This matches the button's promise and keeps the homepage → landing-page internal link for SEO. Applied across all nine locales. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rework the homepage "Free tool" band so the secondary action lives in
the copy instead of as a stacked button. The card now leads with one
bold primary CTA ("Try it free" → the live tool) and an inline orange
"Learn more about the generator" link under the paragraph → the landing
page (/voice/prompts/), preserving the homepage → landing-page internal
link. Each locale's inline link reuses that page's own word for
"generator". Applied across all nine locales.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace inline #ff6d00 hex and arbitrary [#ff6d00] classes on the voice-prompt generator landing page (and its 8 translations) with the wk-orange design token, matching the buttons that already used it. Color and alpha values are byte-exact — border-wk-orange/25 → #ff6d0040 and bg-wk-orange/[0.08] → #ff6d0014 — so there's no visual change; only the subtle to-[#ffa14d] gradient stop stays arbitrary (no token exists). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
wavekat-eason
pushed a commit
that referenced
this pull request
Jul 18, 2026
🤖 I have created a release *beep* *boop* --- ## [0.0.45](wavekat-com-v0.0.44...wavekat-com-v0.0.45) (2026-07-18) ### Features * voice prompt generator landing page ([#125](#125)) ([570887d](570887d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
wavekat-eason
added a commit
that referenced
this pull request
Jul 19, 2026
## Summary Announces the free **phone menu & IVR voice prompt generator** (the tool behind [`/voice/prompts/`](https://wavekat.com/voice/prompts/), shipped in #125) as a blog post, **in all nine locales**. Posts are live on merge. - **New post** `phone-menu-ivr-voice-generator` — self-contained intro, the problem (record yourself / hire talent / generic TTS all fall short), an extractable table of the five prompt types, why telephony formats matter (8 kHz µ-law / WAV / MP3 → Asterisk, FreePBX, 3CX, Twilio), 3-step how-it-works, and a 5-question FAQ (auto-extracted into `FAQPage` JSON-LD). One FAQ disambiguates the generator from WaveKat Voice the app, mirroring the landing page. - **Translations** in all eight non-default locales, mirroring the English post section-for-section, using each locale's established terminology from its `voice/prompts.astro` landing page and its existing blog tag names. Internal links are locale-prefixed. - **Localized screenshots** — new shared scene `voice-prompts` (`public/screenshots/voice-prompts/<code>.webp`, all nine languages) captured by a new scene in wavekat-platform's screenshot pipeline (wavekat/wavekat-platform#169); registered in `scripts/sync-screenshots.js`. Each post embeds its own language's shot. - **Opt-in image shadow** — new `rehypeImageFlags` markdown plugin: writing `#shadow` on an image URL adds an `img-shadow` class (hairline border + soft shadow, light/dark variants) for bare browser captures that would otherwise melt into the page. Per-image on purpose: the framed desktop-app screenshots already ship a real window shadow. ## Testing - `make build` ✓ (195 pages — all nine posts present in a normal, non-draft build) - `npm run check:links` ✓ — no broken or leaking internal links across all locales - `npm run check:screenshots` ✓ — full nine-language set present for every scene - Verified `FAQPage` + `BlogPosting` JSON-LD, the localized screenshot, and the `img-shadow` class in every locale's built post; sitemap hreflang alternates (9 URLs) and RSS entry present; visually checked the shadow in light and dark themes 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01MHmpJKWnmdmhBtcxBFQDFN --------- Co-authored-by: Claude Fable 5 <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.
Summary
Adds a public, SEO/GEO-tuned landing page for the free phone-menu & IVR voice generator shipped in
wavekat-platform#161. The page markets the tool and hands off to the live app atplatform.wavekat.com/voice/prompts. Fully translated into all 9 shipping locales.src/pages/voice/prompts.astroat/voice/prompts/(mirrors the tool's own path). Uses the plainBasechrome, not the WaveKat-Voice sub-nav — the generator is a separate product from the desktop app that owns/voice/.<h1>targets the "free IVR / phone menu voice generator" queries; self-contained intro + a 6-item Q&A for answer-engine extraction.WebApplication+FAQPageJSON-LD;WebApplication.urlpoints at the live tool, matching the platform's own declaration.zh-Hans,zh-Hant,ja,ko,de,es,fr,it), mirroring the English page section-for-section./voice/prompts/is registered in the sharedfullSiteroute list, so hreflang, sitemap alternates, and the language switcher all light up automatically. Localized pages pin the JSON-LD to the live app, addinLanguage, and use locale-prefixed internal links./voice/prompts/is added to the English homepage and mirrored into all eight localized homepages, so the page isn't orphaned (internal link equity + discovery).Testing
astro build✓ (186 pages)npm run check:links✓ — no broken or leaking internal links across all locales<title>,inLanguagein both JSON-LD blocks, locale-prefixed FAQ links, and hreflang/sitemap alternates in the built output.🤖 Generated with Claude Code