Skip to content

seo: fix subdomain split, add canonical/sitemap/schema#27

Open
layerzerocontents wants to merge 1 commit into
mainfrom
seo/initial-fixes
Open

seo: fix subdomain split, add canonical/sitemap/schema#27
layerzerocontents wants to merge 1 commit into
mainfrom
seo/initial-fixes

Conversation

@layerzerocontents
Copy link
Copy Markdown
Collaborator

Why

Searched "slaim.app" on Google. The landing isn't on page 1 at all — instead app.slaim.app (the PWA login wall) is #1. The rest of page 1 is spelling-variant junk (slime apps, "slim", Spotify artist named Slaim, slaim.io game, etc.). Two root causes:

  1. Subdomain authority splitapp.slaim.app is indexable and outranks the apex. Anyone clicking the top result lands on a login screen.
  2. No entity disambiguation — Google has no signal to bind "slaim" the string to our software entity, so it fuzzy-matches to higher-authority lookalikes.

Raw HTML audit of slaim.app showed: no canonical, no JSON-LD, no sitemap, no robots.txt, and a <title> that's brand-only with zero category keywords.

What changed

Landing (/landing)

  • <title>: Slaim — Just Slaim it.Slaim — AI Slide Tutor for Med Students | PDF to Real Anki .apkg
    • OG/Twitter titles kept as the catchy brand version (social shares stay on-brand; SERP gets keywords)
  • <link rel="canonical" href="https://slaim.app/">
  • <meta name="robots" content="index, follow, max-image-preview:large">
  • Two JSON-LD blocks: SoftwareApplication (with offers Free/$19/$39) + Organization, both with sameAs to Instagram + GitHub. This is the single biggest entity signal — tells Knowledge Graph "Slaim = this thing, not the artist / slime apps."
  • /robots.txt referencing the sitemap
  • /sitemap.xml covering /, /pricing, /marketplace, /privacy, /terms

App (/app)

  • <meta name="robots" content="noindex, follow"> + canonical → https://slaim.app/ in index.html
  • X-Robots-Tag: noindex, follow header in vercel.json — covers any PWA route past /, belt-and-suspenders with the meta tag
  • follow is intentional: don't waste internal link equity that flows through to the apex

Expected impact

  • 1-2 crawl cycles: app.slaim.app deindexed → slaim.app takes the Polar + Discord integration · remove yc-export #1 brand slot
  • 2-4 weeks: sameAs + Schema starts disambiguating the entity in Knowledge Graph; fuzzy-match to "slime"/"slim" decreases
  • Title keyword change ("AI Slide Tutor", "Med Students", "Anki .apkg") opens the door to ranking for category queries beyond brand

Follow-up (not in this PR)

  • Google Search Console: verify both domains, submit sitemap, request indexing on top pages
  • Bing Webmaster Tools (affects DuckDuckGo + ChatGPT search)
  • Add more sameAs entries once TikTok / X / LinkedIn handles exist
  • Product Hunt launch — single biggest external authority lever
  • Directory listings: TheresAnAIForThat, Futurepedia, BetaList, Crunchbase
  • Blog with category long-tail (/blog/pdf-to-anki, /blog/slaim-vs-anki)

Test plan

  • After merge + Vercel deploy: curl -sI https://app.slaim.app | grep -i x-robots → returns noindex, follow
  • curl -sL https://slaim.app | grep -E "canonical|application/ld\+json" → both present
  • curl -sI https://slaim.app/sitemap.xml → 200
  • curl -sI https://slaim.app/robots.txt → 200
  • Validate JSON-LD: https://validator.schema.org/ with slaim.app URL → no errors
  • Rich Results test: https://search.google.com/test/rich-results → SoftwareApplication detected
  • OG share preview unchanged on Twitter/LinkedIn/Slack (we only changed <title>, not OG)

Problem: "slaim.app" Google search shows app.slaim.app (the PWA login
wall) on page 1 — landing slaim.app doesn't appear. Branded query is
being lost to (a) the login subdomain outranking the apex, and (b)
Google fuzzy-matching to "slime"/"slim" with no entity signal to
disambiguate.

Landing (slaim.app):
- title: brand-only "Just Slaim it." → keyword-rich
  "AI Slide Tutor for Med Students | PDF to Real Anki .apkg"
  (OG/Twitter titles kept as the catchy brand version for social shares)
- canonical → https://slaim.app/
- robots meta with max-image-preview:large
- JSON-LD SoftwareApplication + Organization with sameAs to
  Instagram and GitHub (entity disambiguation: tells Google
  "Slaim" = this software, not the Spotify artist / slime apps)
- /sitemap.xml + /robots.txt at landing root

App (app.slaim.app):
- robots meta noindex,follow + canonical to slaim.app
- X-Robots-Tag: noindex,follow header in vercel.json (covers
  all PWA routes, belt-and-suspenders with meta tag)

Expected: Google deindexes app.slaim.app within 1-2 crawl cycles;
authority consolidates on apex. sameAs + Schema gives Knowledge
Graph the entity it needs to stop fuzzy-matching.
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