Skip to content

seo: add redirects for 6 legacy doc URLs with external backlinks - #914

Closed
CahidArda wants to merge 1 commit into
mainfrom
claude/stoic-fermi-b8hpoc
Closed

CahidArda wants to merge 1 commit into
mainfrom
claude/stoic-fermi-b8hpoc

Conversation

@CahidArda

Copy link
Copy Markdown
Contributor

Why

Weekly SEO audit (Ahrefs, 2026-10-11) found these 6 paths as 404s via site-explorer-broken-backlinks, each with a live external backlink pointing at a URL that isn't covered by any existing docs.json redirect. Checked each against the repo and against the existing ~87-entry redirects array to rule out duplicates and stale-crawl false positives (several other candidates from this week's pull, e.g. /docs/features/restapi, /docs/qstash/pricing, /docs/redis/sdks/redis-ts/getstarted, /docs/workflow/migration, turned out to already have a redirect in place — Ahrefs is showing a stale recrawl date for those, not a live 404 — so they're left untouched here).

Evidence & changes

Broken URL (404) Evidence (Ahrefs, site-explorer-broken-backlinks) Fix
upstash.com/docs/realtime/overall/getstarted DR97, 2 backlinks from github.com (tahzeer/cryptalk-app, AbiNash1017/self-destruct-chat-app), anchor "Upstash Realtime" Add redirect /realtime/overall/getstarted → /realtime/overall/quickstart (actual getting-started page)
upstash.com/docs/box/overall/getstarted DR97, github.com (alitariksahin/symphony-box), anchor "Upstash Box" Add redirect /box/overall/getstarted → /box/overall/quickstart
upstash.com/docs/qstash/features/topics DR97, github.com (orgs/upstash/discussions/90) QStash's "Topics" feature was renamed "URL Groups" (the upstash_qstash_topic Terraform resource keeps the old name). Add redirect /qstash/features/topics → /qstash/features/url-groups
upstash.com/docs/qstash/api/dlq/listMessages DR97, github.com (orgs/upstash/discussions/90) Old REST-doc path for an endpoint now documented via the generated API reference (openapi.yaml, tag DLQ, summary "List DLQ messages"). Add redirect → /qstash/api-reference/dlq/list-dlq-messages, matching the existing /qstash/api/url-groups/* → /qstash/api-reference/url-groups/* pattern already in this file
upstash.com/docs/qstash/api/signingKeys/get DR97, github.com (orgs/upstash/discussions/90) Same pattern; openapi.yaml tag Signing Keys, summary "Get Signing Keys". Add redirect → /qstash/api-reference/signing-keys/get-signing-keys
upstash.com/docs/ratelimit DR77, deepwiki.com (Railly/tinte), anchor "Upstash Redis" Add redirect /ratelimit → /redis/overall/ratelimit

I could not find a live equivalent for a 7th candidate from the same discussion thread, /docs/qstash/api/events/list — QStash's OpenAPI spec no longer has an "Events" tag/endpoint at all (not renamed, just not present), so there's no destination I can map to with confidence. Flagging this in this week's seo-weekly Linear ticket instead of guessing a redirect target.

Expected effect

Recovers link equity from 6 DR77–97 referring domains currently pointing at dead pages, and removes 6 confirmed 404s from Site Audit's error count (crawled: 31 404 pages this week).

Notes

🤖 Generated with Claude Code

https://claude.ai/code/session_01G5CArZvv5MAeKJg3DxSVTr


Generated by Claude Code

Ahrefs broken-backlinks (2026-10-11) confirmed these 6 paths 404 with
live external backlinks pointing at them, none covered by an existing
docs.json redirect:
- /realtime/overall/getstarted (DR97, github.com x2)
- /box/overall/getstarted (DR97, github.com)
- /qstash/features/topics (DR97, github.com) - pre-rename "Topics" term
- /qstash/api/dlq/listMessages (DR97, github.com discussion)
- /qstash/api/signingKeys/get (DR97, github.com discussion)
- /ratelimit (DR77, deepwiki.com)

Each maps to the current live page covering the same content.
@mintlify

mintlify Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
upstash 🟢 Ready View Preview Oct 12, 2026, 6:22 AM

💡 Tip: Enable Automations to automatically generate PRs for you.

@context7

context7 Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Docs7 for upstash.com

Result Status Action
Deployment ✅ Ready Open preview
Content review ✅ Passed. No problems found. View findings

Commit 4d1ef54 · Updated 2026-10-12 06:24 UTC · View build details

@context7
context7 Bot temporarily deployed to Docs7 Preview: claude/stoic-fermi-b8hpoc October 12, 2026 06:24 Destroyed
CahidArda pushed a commit that referenced this pull request Oct 19, 2026
…#914)

These three PRs are from earlier weekly runs of the same routine and
were still open/unmerged, each adding overlapping or complementary
legacy-docs redirects. Folded their entries into this PR instead of
leaving four separate overlapping PRs open:

- Deduplicated exact-match sources already covered here (/howto/developerapi,
  /overall/durability, /overall/consistency, /docs/overall/getstarted).
- Added the bare (no /docs prefix) variants #889 had that this PR was
  missing (metadatafiltering, semantic-cache, ratelimit/overview,
  ratelimit, redis/ratelimit, redis/overview).
- Corrected 3 destinations where this PR's guess and #889's guess
  disagreed, verified against the actual file tree:
  - /ratelimit, /redis/ratelimit -> /redis/overall/ratelimit (a real
    file, redis/overall/ratelimit.mdx, missed earlier - not the
    TS-specific SDK overview page).
  - /redis/overview -> /redis/overall/getstarted (generic "overview"
    with no SDK named shouldn't default to the TS SDK).
  - metadatafiltering kept pointing at /vector/features/filtering
    (titled "Metadata Filtering") rather than #889's
    /vector/features/metadata (titled "Metadata and Data" - a
    different, more general page).
- Added #889's 2 fully-unique entries (redis/sdks/javascriptsdk/..,
  vector/sdks/rag-chat) and #914's 5 fully-unique entries
  (realtime/box getstarted->quickstart renames, qstash/features/topics,
  and 2 qstash API-reference redirects verified against qstash/openapi.yaml's
  endpoint summaries, which are not backed by static files so a plain
  file-existence check missed them).

#889 and #903 will be closed as superseded. #914 will be closed as
superseded (it was reported "shipped" in last week's ticket but never
merged).

Copy link
Copy Markdown
Contributor Author

Closing as superseded — this was output from an earlier weekly run of the automated SEO review routine (reported "shipped" in that week's ticket but never merged). All 6 redirects from this PR have been folded into #927, along with #889 and #903, to avoid 4 overlapping open PRs doing the same kind of fix. See #927's description for the full consolidation notes.


Generated by Claude Code

@CahidArda CahidArda closed this Oct 19, 2026
CahidArda added a commit that referenced this pull request Oct 23, 2026
* seo: add redirects for legacy docs paths with high-DR backlinks

Ahrefs Site Explorer (upstash.com, broken-backlinks, 2026-10-18) found
dofollow backlinks from DR75-94 domains (Cloudflare docs, StackOverflow,
Medium, Habr, Go pkg docs, DeepWiki) pointing at legacy /docs/* paths
that now 404. /docs/howto/developerapi is also in the current internal
404 crawl (0 traffic, but 2 external backlinks at DR79/91). Added
redirects from each legacy path to its current canonical page, plus
the bare (no /docs prefix) variant for each, following the existing
dual-entry convention already used in this file (e.g. "/box/overall/stream"
and "/docs/box/overall/stream" -> "/box/overall/agent").

Two of the reported broken paths (/docs/howto/connectwithtls and
/docs/features/restapi) already had matching redirects in this file,
so no new entries were added for those - Ahrefs' backlink index just
hasn't recrawled since the fix shipped.

* seo: consolidate redirects from older open seo-weekly PRs (#889, #903, #914)

These three PRs are from earlier weekly runs of the same routine and
were still open/unmerged, each adding overlapping or complementary
legacy-docs redirects. Folded their entries into this PR instead of
leaving four separate overlapping PRs open:

- Deduplicated exact-match sources already covered here (/howto/developerapi,
  /overall/durability, /overall/consistency, /docs/overall/getstarted).
- Added the bare (no /docs prefix) variants #889 had that this PR was
  missing (metadatafiltering, semantic-cache, ratelimit/overview,
  ratelimit, redis/ratelimit, redis/overview).
- Corrected 3 destinations where this PR's guess and #889's guess
  disagreed, verified against the actual file tree:
  - /ratelimit, /redis/ratelimit -> /redis/overall/ratelimit (a real
    file, redis/overall/ratelimit.mdx, missed earlier - not the
    TS-specific SDK overview page).
  - /redis/overview -> /redis/overall/getstarted (generic "overview"
    with no SDK named shouldn't default to the TS SDK).
  - metadatafiltering kept pointing at /vector/features/filtering
    (titled "Metadata Filtering") rather than #889's
    /vector/features/metadata (titled "Metadata and Data" - a
    different, more general page).
- Added #889's 2 fully-unique entries (redis/sdks/javascriptsdk/..,
  vector/sdks/rag-chat) and #914's 5 fully-unique entries
  (realtime/box getstarted->quickstart renames, qstash/features/topics,
  and 2 qstash API-reference redirects verified against qstash/openapi.yaml's
  endpoint summaries, which are not backed by static files so a plain
  file-existence check missed them).

#889 and #903 will be closed as superseded. #914 will be closed as
superseded (it was reported "shipped" in last week's ticket but never
merged).

* seo: give product/SDK name to 47 pages sharing a generic title

Ahrefs Site Audit flags duplicate_title on exactly 17 pages titled
"Getting Started" and 30 pages titled "Overview" (project 9854245,
crawl 2026-10-18) - these counts match a full repo search exactly, so
this is the complete set, not a sample.

These are each-product's SDK/getstarted/overview landing pages with a
copy-pasted placeholder title and no product or SDK name, so Google
sees the same <title> for e.g. Redis, QStash, Vector and Search's
getting-started pages, and separately for their SDK overview pages -
including several with real traffic (redis/overall/getstarted: 862
visits/mo, qstash/overall/getstarted: 534, workflow/getstarted: 312,
introduction: 215, redis/overall/compare: 247).

Renamed each page's title to include its product/SDK/feature name
(e.g. "Overview" -> "Redis TypeScript SDK Overview", "Getting Started"
-> "QStash Getting Started"), so every page now has a unique,
descriptive <title>. No body copy, URLs, or nav structure changed -
only the `title` frontmatter field on each page.

* chore(llms): regenerate llms.txt and llms-full.txt

* seo: give unique titles to the two "Compare" pages

Ahrefs Site Audit (project 9854245) flags duplicate_title on
redis/overall/compare (247 visits/mo) and qstash/overall/compare (26),
which both use the literal title "Compare". Give each a product-specific
title, keep the sidebar label as "Compare" via sidebarTitle, and add the
missing meta description on the Redis page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RAhS4rWaMVuMCaTUJKgz3P

* chore(llms): regenerate llms.txt and llms-full.txt

* seo: keep short sidebar labels on retitled pages via sidebarTitle

The longer, product-specific titles from aa3ed8e (e.g. "QStash Python
SDK Examples Overview") also showed up as sidebar labels, which is
redundant inside an already-scoped nav group. Add sidebarTitle with each
page's previous label ("Overview", "Getting Started") to all 47 pages, so
the sidebar is unchanged vs main while <title> and JSON-LD keep the
unique titles. Verified on the Docs7 preview that sidebarTitle is honored:
the two Compare pages (eb0044f) render "Compare" in the sidebar and the
full title in <title> and BreadcrumbList.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RAhS4rWaMVuMCaTUJKgz3P

* docs: 1 review fix for #927 (broken links) (#933)

* chore(llms): regenerate llms.txt and llms-full.txt

* seo: product-specific titles for quickstarts and other generic docs pages

Quickstart pages were titled with only the framework or platform name
("App Router", "Laravel", "Next.js"), so search results showed e.g.
"App Router - Upstash Documentation" with neither Redis nor Next.js in
it, and the same title was reused across products (three "Cloudflare
Workers", two "Next.js", two "App Router", ...). Retitle them to
"<Product> with <Framework>" (e.g. "Upstash Redis with Next.js (App
Router)", "QStash with Next.js", "Upstash Workflow with FastAPI").

Also retitle feature/help pages that have search traffic or rankings but
generic titles, per Ahrefs Site Explorer (2026-10-22): Redis FAQ ("upstash
redis" #4, 2.5k/mo), Global Database, Connect Your Client, REST API,
Search Queries, QStash Queues / Use Cases / DLQ / Flow Control / Schedules
/ Local Tunnel ("localtunnel" #10), and the remaining cross-product
duplicate titles (Changelog, Quickstart, FAQ, Features, Security, Pricing,
Read-only Token, ...). Fix the Workflow Datadog and Prometheus pages,
which were titled as QStash integrations.

All pages keep their previous label as sidebarTitle, so the sidebar is
unchanged. Add meta descriptions to the 24 Redis pages whose generated
description was the "If you are an AI agent..." tip (Ahrefs Site Audit,
crawl 2026-10-20).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RAhS4rWaMVuMCaTUJKgz3P

* seo: title Workflow monitoring pages as Workflow & QStash integrations

The Workflow Datadog and Prometheus pages document the shared QStash
metrics integration, so name both products instead of only Workflow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RAhS4rWaMVuMCaTUJKgz3P

* seo: keep the docs landing page titled Overview

Per review on #927: leave the landing page title unchanged. The duplicate
the rename was meant to fix is resolved by redis/search/introduction now
being titled "Redis Search Introduction", and no other page uses
"Overview" anymore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RAhS4rWaMVuMCaTUJKgz3P

* seo: fix four quickstart descriptions and tighten titles from self-review

Self-review of #927 (four parallel reviewers covering all 156 changed
pages) confirmed every sidebar label is unchanged vs main, every new
title matches its page and is unique, and only frontmatter changed.

Fixes from the review:
- Descriptions that overstated the page: Koyeb (not a "globally scaled"
  deploy; it deploys from Git or a container), Azure Functions (deploys
  with Functions Core Tools, not the Azure CLI), Next.js App Router (no
  "create a database" step), DigitalOcean (reword around the shutdown
  date instead of a call to migrate before it).
- Name the product in titles that still left it out: Upstash Redis /
  Search / Vector Getting Started, Upstash Redis Keyspace Notifications,
  Upstash Terraform / Pulumi Provider Overview, Upstash Developer API
  Getting Started, and the four Redis Search operator overviews.
- Match Google's casing: "Google Cloud Run functions".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RAhS4rWaMVuMCaTUJKgz3P

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: context7[bot] <236830434+context7[bot]@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Docs7 Preview: claude/stoic-fermi-b8hpoc — 4d1ef54b Deployed Oct 12, 2026 by context7[bot]
staging — 4d1ef54b Deployed Oct 12, 2026 by mintlify[bot]
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.

2 participants