Skip to content

feat(docs): SEO overhaul — delete leaks, strict frontmatter, JSON-LD, cross-links#8

Merged
a-essawy merged 5 commits into
mainfrom
feat/seo-overhaul
May 24, 2026
Merged

feat(docs): SEO overhaul — delete leaks, strict frontmatter, JSON-LD, cross-links#8
a-essawy merged 5 commits into
mainfrom
feat/seo-overhaul

Conversation

@a-essawy
Copy link
Copy Markdown
Contributor

What this PR does

Comprehensive SEO audit and overhaul following a live GSC + sitemap review that found 17 orphaned/unindexed URLs, two publicly-leaked internal files, and duplicate content at /credits and /concepts/credits.


Phase 2: Deleted leaked internals

Files removed from the public docs site:

  • CLAUDE.md — internal AI agent rules, no user value
  • superpowers/specs/2026-04-25-cli-docs-section-design.md — internal spec
  • credits.mdx — consolidated into concepts/credits.mdx (see Phase 5)

Both CLAUDE.md and the superpowers spec were indexed by Google. They have been removed.

Phase 3: Frontmatter validator + CI

  • scripts/validate-frontmatter.mjs — walks all .mdx files (excluding snippets/), parses frontmatter, enforces title length (13–52 chars), sentence case, no em/en-dash, no brand prefix, description length (100–160 chars), allowlisted action verb start
  • package.json with validate:frontmatter script
  • .github/workflows/validate-frontmatter.yml — runs on every PR and push to main that touches .mdx files or the validator script

Phase 4: Frontmatter fixes (14 files)

All 24 MDX pages now pass the validator. Changes:

File Fix
changelog/2026-03-20.mdx Removed em-dash from title; rewrote description to start with "Explore"
cli/overview.mdx Title "CLI overview" (12 chars) → "CLI overview and quickstart" (27); added sidebarTitle
concepts/credits.mdx Description rewritten to start with "Learn"
concepts/job-lifecycle.mdx Description rewritten to start with "Explore"
guides/raw-ffmpeg.mdx "Raw FFmpeg" (10 chars) → "Raw FFmpeg guide" (16); added sidebarTitle
job-types/raw-ffmpeg.mdx "raw.ffmpeg" (10 chars) → "raw.ffmpeg reference" (20); added sidebarTitle
mcp/examples.mdx Description rewritten to start with "Build"
mcp/installation.mdx "Install Rendobar MCP" → "Install the MCP server" (removes double-brand); description updated
mcp/overview.mdx "Rendobar MCP" (12 chars + double-brand) → "MCP server overview" (19); description updated
mcp/troubleshooting.mdx Description rewritten to start with "Fix"
mcp/web-and-mobile.mdx "Use Rendobar from..." → "Use the MCP from..." (removes brand prefix)
quickstart.mdx "Quickstart" (10 chars) → "API quickstart guide" (20); added sidebarTitle
support/errors.mdx "Error codes" (11 chars) → "API error codes reference" (25); added sidebarTitle
support/limits.mdx Description rewritten to start with "Compare"

Phase 5: Canonicalize /credits

  • Content from credits.mdx (billing how-to: plans, packs, balance API, usage tracking) merged into concepts/credits.mdx
  • concepts/credits.mdx now covers both the "why nanodollars" conceptual content and the practical billing how-to
  • credits.mdx deleted
  • docs.json navigation updated: Getting Started group now uses concepts/credits
  • Mintlify redirect added: /credits/concepts/credits
  • Fixed og:image:alt in docs.json to match canonical slogan ("Serverless media processing API")

Phase 6: JSON-LD (Organization, WebSite, TechArticle)

Mintlify limitation: seo.metatags in docs.json only injects <meta> tags — it does not support raw <script> injection for JSON-LD. There is no customHead or headJs field in the Mintlify schema.

Workaround used: JSON-LD injected as JSX <script dangerouslySetInnerHTML> directly in high-value MDX pages. Mintlify renders MDX as React, so this works correctly.

Pages with JSON-LD added:

  • quickstart.mdx — TechArticle schema
  • mcp/overview.mdx — TechArticle schema
  • guides/raw-ffmpeg.mdx — TechArticle schema
  • snippets/org-jsonld.mdx — shared Organization + WebSite schema snippet (for reference; not yet imported globally — would need per-page inclusion)

All @id URLs match the apex schema entity IDs (https://rendobar.com/#organization, https://rendobar.com/#website) for cross-domain entity consolidation.

For a global JSON-LD injection on every page, the options are: (a) Mintlify adds customHead support, or (b) every page imports the Organization/WebSite snippet. Option (b) is ~24 file edits; deferred pending Mintlify roadmap check.

Phase 8: Bidirectional cross-links to apex

Doc page Link added
quickstart.mdx "See pricing" → rendobar.com/pricing/, "Explore all operations" → rendobar.com/features/
cli/installation.mdx "version history" → rendobar.com/changelog/
mcp/overview.mdx "complete list of supported job types" → rendobar.com/mcp/
guides/raw-ffmpeg.mdx "all FFmpeg-based operations" → rendobar.com/ffmpeg/
concepts/credits.mdx "pricing breakdown" → rendobar.com/pricing/
support/faq.mdx "rendobar.com" and "pricing page" → rendobar.com/ and rendobar.com/pricing/

All links are natural inline references, not generic footer blocks.


Test plan

  • Frontmatter validator: node scripts/validate-frontmatter.mjs exits 0 on all 24 pages
  • Mintlify PR preview deploy — verify redirect /credits/concepts/credits works
  • Confirm CLAUDE.md and superpowers/ no longer appear in the Mintlify sitemap
  • GSC: request re-crawl of previously-leaked URLs after merge
  • GSC: submit updated sitemap after Mintlify re-deploys (allow 2–4 weeks for indexing improvement)

a-essawy added 5 commits May 24, 2026 07:06
…ions, sidebarTitle)

- Titles: 13-52 chars, sentence case, no em-dash, no Rendobar prefix
- Descriptions: 100-160 chars, start with allowlisted action verb, no em-dash, no brand prefix
- Added sidebarTitle where SEO title is longer than needed for nav
- 14 files updated: changelog, cli, concepts, job-types, mcp, quickstart, support
…direct

- Merged billing how-to content from credits.mdx into concepts/credits.mdx
- Removed duplicate credits.mdx (deleted in prior commit with leaked internals)
- Updated docs.json navigation: Getting Started now uses concepts/credits
- Added redirect rule: /credits -> /concepts/credits
- Fixed og:image:alt to match canonical brand slogan (Serverless media processing API)
…ion snippet

- guides/raw-ffmpeg.mdx: TechArticle schema + apex cross-link to rendobar.com/ffmpeg/
- snippets/org-jsonld.mdx: shared Organization and WebSite schema snippet (for reference)
- @id URLs match apex schema entity IDs for cross-domain entity consolidation

Note: Mintlify seo.metatags does not support raw <script> injection. JSON-LD is
embedded directly as JSX dangerouslySetInnerHTML in each high-value MDX page.
@a-essawy a-essawy merged commit 9ef1d01 into main May 24, 2026
2 checks passed
@a-essawy a-essawy deleted the feat/seo-overhaul branch May 24, 2026 04:10
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