Repository navigation
docs(seo): restore readable titles and improve site metadata - #598
Conversation
Revert "docs(seo): improve page metadata" (567aa81), which rewrote the frontmatter of 57 pages into templated, keyword-stuffed titles. Because Mintlify already appends the site name to the title tag, the "GoModel ..." prefix rendered as "GoModel Cost tracking: AI Gateway Configuration Guide - GoModel" and pushed the brand into every sidebar and tab label. That commit also appended boilerplate to every description and overwrote the curated keywords on budgets, rate-limits, and failover with a generic ["GoModel", "AI gateway", "<page>"] triple. Titles are restored byte-identical to the pre-commit state, so navigation reads the way it did before. SEO is improved instead through metadata that readers never see: - docs.json: add the site-level description, seo.organization (schema.org publisher entity with sameAs links), and metadata.timestamp so pages carry a dateModified freshness signal. The existing canonical was verified against the deployed site first - Mintlify appends each page's path, so it already emits correct per-page canonicals and is left alone. - keywords: only 3 of 57 pages had any. All 57 now carry specific terms feeding Mintlify's internal search, the meta tag, and structured data. - descriptions: extend the 11 thinnest (53-77 chars) to 134-151, drawn from each page's own content. Google renders ~155, so those pages were using half the available line. The other 46 were already good and are untouched. Also simplify the cost-tracking caveats, after verifying each claim against the source. The warning said costs come "from catalog pricing", but CalculateUsageCost prefers provider-reported exact costs for OpenRouter and xAI (internal/usage/cost.go:429-437), and pricing resolves overrides -> config.yaml -> catalog, contradicting the page's own "Where pricing comes from" section. Reword to cover the exact-cost case and drop the unverifiable list of billing-difference causes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 34 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe PR refreshes documentation metadata across about, advanced, feature, guide, MCP proxy, and provider pages. It also expands site SEO metadata and clarifies cost-estimation, cached-token pricing, and recalculation documentation. ChangesDocumentation refresh
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
The caveat forbade using GoModel figures for invoicing or reconciliation outright. That is stricter than intended: the figures are usable for those purposes, they just need to be checked against the provider's own billing first, since they are estimates whenever a provider does not report an exact cost. Reword from a prohibition to a verify-first condition. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Remove tag: "Beta" from the Anthropic Messages, Responses, Responses compatibility, Conversations, and Audio API pages. The passthrough API keeps its pill, since that page still describes beta-scoped behavior in its body. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
sameAs is meant for profiles that identify the organization itself, and an invite link is not one. The Discord navigation anchor is unaffected. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
enterpilot.io publishes its own Organization block naming the company "enterpilot, Inc.", so the registered name can now be stated. Keep name as the common display name and put the registered name in legalName, which is the split schema.org intends. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
What
Reverts
567aa814 docs(seo): improve page metadataand improves docs SEO through metadata readers never see, leaving navigation labels alone.Why the revert
That commit rewrote the frontmatter of 57 pages into templated titles. Mintlify already appends the site name to the title tag, so the
GoModel …prefix rendered on the live site as:The brand appeared twice in the title tag and once in every sidebar and tab label. It also appended boilerplate to every description ("Review implementation guidance for reliable production AI workloads") and overwrote the curated keywords on
budgets,rate-limits, andfailoverwith a generic["GoModel", "AI gateway", "<page>"]triple.Titles are restored byte-identical to the pre-commit state — verified with
git diff 567aa814^ -- 'docs/**/*.mdx' | grep '^[+-]title:'returning nothing.SEO improvements
None of these touch a nav label.
docs.jsondescription— used for SERP and AI indexing; was missing.seo.organization— schema.org publisher entity withsameAslinks.legalNameomitted, as I couldn't verify one.metadata.timestamp— renders a last-modified date, feedingdateModifiedin structured data.canonicalwas checked against the deployed site before touching anything: Mintlify appends each page's path, so/docs/features/cost-trackingalready gets its own correct canonical. Left as-is.Keywords — only 3 of 57 pages had any; all 57 now do, with specific terms (
"circuit breaker","DashScope","prompt cache") rather than brand repetition. Verified against the deployed site: Mintlify renders these into the app payload backing internal docs search and AI/MCP retrieval, not into akeywordsmeta tag or structured data. (Google ignores meta keywords regardless, so the value here is site search and AI answer quality, not ranking.)Descriptions — the 11 thinnest (53–77 chars) extended to 134–151, drawn from each page's own content. Google renders ~155, so those pages were using half the available line. The other 46 were already good and are untouched.
Cost-tracking caveats
Simplified, after verifying each claim against the source:
CalculateUsageCostprefers provider-reported exact costs for OpenRouter and xAI (internal/usage/cost.go:429-437), and pricing resolves overrides →config.yaml→ catalog, contradicting the page's own "Where pricing comes from" section. Reworded to cover the exact-cost case.<Note>and recalculation<Warning>both check out (cost.go:175-178; emptyCostResultwhenpricing == nilatcost.go:139-141→ NULL cost) — kept, tightened.User-visible impact
Sidebar, tabs, and page headings return to the short human-readable names. Title tags go from
GoModel Cost tracking: AI Gateway Configuration Guide - GoModeltoCost tracking - GoModel.One deliberate visible addition:
metadata.timestampputs a last-modified date on every page. Easy to drop if unwanted — it's one line indocs.json.Verified against the Mintlify preview
The preview deploy (
gomodel-docs-seo-metadata.mintlify.site) confirms:Cost tracking - GoModel, down fromGoModel Cost tracking: AI Gateway Configuration Guide - GoModel.https://gomodel.enterpilot.io/docs/features/cost-tracking), so previews can't compete for indexing.metadata.timestamprenders ("Last modified on July 27")./docs/logo.svg) returns 200image/svg+xml.One caveat: preview deploys emit only a reduced
WebSiteJSON-LD block, whereas production emits the full@graph(Organization, WebSite, WebPage, BreadcrumbList). Soseo.organizationis present and parsed in the shipped config, but its effect on the Organization entity can only be confirmed once this is on production. Today production derives that entity as nameGoModel; after merge it becomesEnterpilotwith asameAslink to the GitHub repo.Testing
mint validatepasses via pre-commit, coveringdocs.jsonand all 57 pages' frontmatter. No Go code is touched.🤖 Generated with Claude Code
Summary by CodeRabbit