Skip to content

feat(voice): add alternatives comparison pages - #82

Merged
wavekat-eason merged 1 commit into
mainfrom
feat/voice-alternatives
Jun 4, 2026
Merged

feat(voice): add alternatives comparison pages#82
wavekat-eason merged 1 commit into
mainfrom
feat/voice-alternatives

Conversation

@wavekat-eason

Copy link
Copy Markdown
Contributor

Summary

Adds a data-driven alternatives module under the Voice section — multiple pages, not one, so each comparison can rank for its own " alternative" search intent.

  • src/lib/voice-alternatives.ts — single source of truth. One entry per competitor (SEO title/description, honest "what it is", a capability comparison table, choose-them/choose-us lists, FAQs). Adding a competitor = append one entry.
  • /voice/alternatives/ — hub page; emits ItemList schema, links out, ranks for the broad term.
  • /voice/alternatives/[slug]/ — one page per competitor via getStaticPaths; emits FAQPage + BreadcrumbList schema.
  • Voice.astro — adds the alternatives sub-nav tab and a prefix-based active state so per-competitor pages keep the tab lit.

Linphone is populated as the first comparison, framed as a fair guide (names what Linphone is genuinely good at, then the honest differentiators: auto-record + transcription + searchable history + guided provider setup).

SEO & GEO

  • Every page passes a real title/description, a single <h1>, page-type JSON-LD referencing the org @id, and self-contained answers + an extractable comparison table + a Q&A block (the structures AI answer engines quote most).
  • Copy is platform-neutral (Mac + Linux today, Windows later); "Mac" stays in titles only to catch the high-volume "… for Mac" query without excluding Linux.
  • CLAUDE.md gains an SEO & GEO section codifying these conventions for all future pages, aligned with the feat(seo): structured data + social metadata (+ favicon & download dropdown fixes) #81 SEO baseline.

Testing

  • astro build passes; /voice/alternatives/ and /voice/alternatives/linphone/ generate and land in the sitemap.

🤖 Generated with Claude Code

Data-driven /voice/alternatives module: a hub page plus one page per
competitor via [slug], each targeting "<name> alternative" search
intent. Adding a competitor is a single entry in
src/lib/voice-alternatives.ts; the hub and route pick it up.

Linphone populated as the first comparison. Each page emits FAQPage +
BreadcrumbList schema (hub emits ItemList), carries a self-contained
intro, an extractable comparison table, a fair "what it is", and a Q&A
block — SEO and GEO friendly. Copy is platform-neutral (Mac + Linux),
with "Mac" kept in titles only to catch the high-volume query.

Also documents the SEO & GEO conventions in CLAUDE.md so future pages
inherit them, aligned with the #81 SEO baseline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

@wavekat-eason
wavekat-eason merged commit 6d01545 into main Jun 4, 2026
2 checks passed
@wavekat-eason
wavekat-eason deleted the feat/voice-alternatives branch June 4, 2026 10:02
wavekat-eason pushed a commit that referenced this pull request Jun 4, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.0.27](wavekat-com-v0.0.26...wavekat-com-v0.0.27)
(2026-06-04)


### Features

* **seo:** structured data + social metadata (+ favicon & download
dropdown fixes)
([#81](#81))
([d8fb369](d8fb369))
* **voice:** add alternatives comparison pages
([#82](#82))
([6d01545](6d01545))
* **voice:** Linux download & OS-aware buttons
([#79](#79))
([590219d](590219d))

---
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant