fix(website): SEO, noindex, canonical, nosnippet & more - #1269
Merged
Merged
Conversation
Contributor
Website Preview DeployedURL: https://alchemyeffectwebsite-website-pr-1269-6v4i3nu2hxiftalm.testing-2b2.workers.dev Built from commit This comment updates automatically with each push. |
Contributor
Author
|
@BlankParticle did you have a chance to look at this? We need to fix the SEO issue on google |
Member
|
i forgot, will take a look |
BlankParticle
force-pushed
the
claude/google-indexing-escaped-chars-68e3b0
branch
from
August 26, 2026 15:41
b8512c5 to
876288e
Compare
BlankParticle
marked this pull request as ready for review
August 26, 2026 15:42
BlankParticle
force-pushed
the
claude/google-indexing-escaped-chars-68e3b0
branch
2 times, most recently
from
September 1, 2026 10:34
6f02ec4 to
3b2a244
Compare
Contributor
Website Preview DeployedURL: https://pr-1269-alchemyeffectwebsite-website-pjklbtzujol4cpasllfbla6qj.testing-2b2.workers.dev Built from commit This comment updates automatically with each push. |
`alchemy.run/robots.txt` was Cloudflare's content-signals comment block and nothing else — no `User-agent`, no `Allow`, and no `Sitemap:`, so the 4,206-URL sitemap was never advertised to crawlers. Google was also synthesizing the homepage snippet instead of using our meta description (254 chars against a ~155 budget), stitching it together with decorative terminal chrome from the marketing islands. - add `public/robots.txt` with the sitemap reference - `X-Robots-Tag: noindex` on the agent-facing `.md` mirrors and `llms.txt`; `alchemy.run/getting-started.md` is indexed today with raw MDX imports as its snippet - fold `robots.txt` into the preview-origin rewrite so PR previews don't advertise production's sitemap - `noindex` the OAuth landing pages and drop `/auth/` from the sitemap - cut the homepage description to 154 chars - `data-nosnippet` on the simulated terminal and browser chrome, which currently leaks into snippets as `○localhost:1337/ HMR. ~/my-appDEV.` Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…et decorations, sameAs JSON-LD - every non-canonical host (main.alchemy.run, PR previews) answers with X-Robots-Tag: noindex, a sitemap-less robots.txt, and an untouched <link rel="canonical"> pointing at https://alchemy.run (og:* still rewritten so previews unfurl themselves) - v1-era URLs (/docs/*, /guides/*, /providers/*, /concepts/*) that 404 on prod probe v1.alchemy.run and 301 there instead of dead-ending - data-nosnippet on every simulated terminal / browser / diagram island, the docs Terminal + DAG/Loop figures, and both copies of the copy-for-agent prompt - Organization (sameAs → GitHub, X, Discord, npm) + WebSite JSON-LD and twitter:site on every page - blog pagination pages dropped from the sitemap Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…sions from noindex meta
BlankParticle
force-pushed
the
claude/google-indexing-escaped-chars-68e3b0
branch
from
September 1, 2026 11:29
3b2a244 to
403c635
Compare
BlankParticle
deleted the
claude/google-indexing-escaped-chars-68e3b0
branch
September 1, 2026 11:41
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.
SEO pass. Google Search Console has been surfacing non-content (terminal chrome, the copy-for-agent prompt, raw
.mdmirrors, mirror hosts) as results and snippets.One indexable origin
https://alchemy.runis canonical. Every other host the worker answers on —main.alchemy.run, PR previews, future aliases — is a mirror:Before this,
main.alchemy.run/getting-started/declared itself canonical and was fully indexable.robots.txt + markdown mirrors
alchemy.run/robots.txtwas serving only Cloudflare's content-signals block — noSitemap:. Nowwebsite/public/robots.txtadvertises the sitemap..mdmirrors (/getting-started.md,Accept: text/markdown) andllms*.txtgetX-Robots-Tag: noindex— crawlable so the directive is seen, out of the index. DuckDuckGo/Google were listingalchemy.run/guides/cloudflare.mdwithimport { Tabs, TabItem } from '@astrojs/starlight/components';as the snippet.v1-era URLs
/docs/getting-started,/docs/providers/aws-control/…,/guides/cloudflareare still indexed and 404 on prod. On a prod 404 under/docs/,/guides/,/providers/,/concepts/the worker HEADsv1.alchemy.runand 301s there when it has the page.data-nosnippetOn every simulated terminal / browser / diagram island on the homepage, the docs
Terminal,DAG,LoopDiagramfigures, and both SSR'd copies of the 2.8 KB copy-for-agent prompt. Live snippet before:Learn more →. ‹›↻. ○localhost:1337/ HMR. ~/my-appDEV.Generated reference pages are
noindex, follow/providers/**is 4,070 of the site's 4,412 pages (AWS alone 3,584), each a one-paragraph summary plus one snippet. Indexed individually they read as programmatic thin content and are what surfaces as "random" results instead of the hub/guide pages. The generator now emits:Still navigable, still crawled (
follow), still in Pagefind.followkeeps link equity flowing to the hub pages. Lifting it later is one line inscripts/generate-api-reference.ts.The sitemap no longer needs a hand-maintained exclusion list: a
collectNoindexPagesintegration scans the build output for anoindexrobots meta and the sitemap filter drops those URLs — covers the reference pages and/auth/*alike.Structured data
Organization(sameAs→ GitHub, X, Discord, npm) +WebSiteJSON-LD andtwitter:siteon every page (src/components/StructuredData.astro).Also
/auth/*pagesnoindex, followand out of the sitemap/blog/2/…) out of the sitemap🤖 Generated with Claude Code