docs: lead with onepin positioning tagline and enrich pypi/github seo metadata#58
Merged
Merged
Conversation
… metadata Give search and generative engines a clean entity definition and fill in discovery metadata now that the repo is public. - README: lead with the Onepin voice-workflow-platform tagline; switch brand prose to "Onepin" (code identifiers / generated CLI block unchanged) - pyproject: keyword-rich description, add keywords, add Topic/Environment/OS classifiers, add Homepage URL GitHub repo description + topics were updated separately via repo settings. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
kj-podonos
added a commit
that referenced
this pull request
Jun 19, 2026
…ng (#59) ## What & why Follow-up to #58. Deepen the in-repo SEO/GEO surface and make the brand name render consistently. ### README — GEO content (high-value, LLM-extractable) - **"What Onepin does"** capability list up top (orchestrate / validate / 100+ models / ship / agent skill) — gives crawlers and generative engines an early, quotable capability map. - **FAQ** section: *What is Onepin? · How many TTS models? · ElevenLabs/Cartesia support? · How is it different from calling a TTS API directly? · Account? · Agent skill?* Q&A is the single most extractable structure for AI-engine answers and Google "People Also Ask". - Copy written to the Onepin brand voice (Sage-led, validator/retry/ship vocabulary, no marketing filler). ### Metadata - pyproject `description` → "100+ TTS models" (parity with the tagline). GitHub repo description synced to match (applied live, outside this PR). ### Brand casing OnePin → Onepin - Prose in CONTRIBUTING / SECURITY / SUPPORT / AGENTS / examples, plus CLI help strings (root `--help` + `skill` group). Regenerated the README CLI block (`scripts/gen_cli_docs.py`). - **Intentionally unchanged:** the Fern-generated SDK under `src/onepin/` (renders "OnePin" from the upstream OpenAPI spec — fixing it means a spec change, not a repo edit), code identifiers (`OnePinClient`, `*Error`), and the `X-OnePin-Required-Version` wire-protocol header. ## Verification - `ruff check` + `ruff format --check` ✓ · `mypy -p onepin._cli` ✓ - full `pytest` ✓ (incl. `test_readme_in_sync` + `test_cli_manifest` — generated block + manifest in sync) - **diff-cover 100%** on changed `_cli` lines (gate ≥90) - `uv build` + `twine check` → **PASSED** ## Follow-up (not here) True one-entity canonical casing needs the upstream spec/Fern config to emit "Onepin" so the generated SDK README/reference stop saying "OnePin". External GEO levers (onepin.ai/docs.onepin.ai `llms.txt`, JSON-LD, robots.txt for AI crawlers) remain with the web/docs team. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 (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.
What & why
Now that the repo is public, prep its public-facing surfaces for SEO (Google / PyPI / GitHub indexing) and GEO (ChatGPT, Claude, Perplexity, Gemini). The lead asset is a clean, quotable entity-defining sentence; the rest fills in discovery metadata that was generic or missing.
README
readme = "README.md").Onepin. Code identifiers (OnePinClient,AsyncOnePinClient,OnePinClientEnvironment,OnePinUpgradeRequiredError), the generated CLI-commands block, and theonepin.aidomain are intentionally unchanged.pyproject.toml
description→ keyword-rich one-liner (PyPI summary / Google snippet).keywords(was missing): tts, text-to-speech, speech-synthesis, voice-ai, voice-agents, elevenlabs, cartesia, …Topic/Environment/Operating Systemclassifiers (none before) for PyPI browse/filter.Homepage = https://onepin.aito[project.urls].GitHub repo (applied live, outside this PR)
Verification
uv run python -c 'import trove_classifiers …'→ all classifiers validuv build && uv run twine check dist/*→ PASSED (metadata + long_description render)Follow-ups (not in this PR)
Higher-leverage GEO work lives on the website/docs, not this repo:
onepin.ai/llms.txt+docs.onepin.ai/llms.txt, README FAQ + comparison blocks, site JSON-LD / OG tags / robots.txt for AI crawlers, GitHub social-preview image, and a full brand-casing sweep for one-entity consistency.🤖 Generated with Claude Code