# robots.txt for https://orbitalradar.com
# Optimised for JS-heavy, real-time web apps (Google-safe)
# Content signals (contentsignals.org): search + attributed AI answers welcome,
# AI training NOT licensed. Legal reservation: https://orbitalradar.com/legal
# (TDM rights reserved under Art. 4(3) Directive (EU) 2019/790 — see also /.well-known/tdmrep.json)
Content-Signal: search=yes, ai-input=yes, ai-train=no
User-agent: *
Content-Signal: search=yes, ai-input=yes, ai-train=no
# Block truly private or non-indexable areas only
Disallow: /admin/
Disallow: /admin.html
Disallow: /private/
Disallow: /tmp/
# ✅ Block the authenticated / app-shell routes (keep landing indexable)
Disallow: /academy/app
Disallow: /academy/app/
# ✅ Block API endpoints — these return JSON/403 and waste crawl budget
Disallow: /api/
# ✅ Block Satellite-Eye proxy endpoints (/t/<hex>, /g/<hex>) — ephemeral, randomised
# tile (GIBS/Maxar/Landsat/S2) + geocoding proxies that rotate per session, so crawlers
# only ever hit stale tokens → 404. Not content. The map's own browser fetches are
# unaffected (robots governs crawlers only). GSC 2026-07-31: surfaced as "Not found (404)".
Disallow: /t/
Disallow: /g/
# ✅ Block query-parameter variants that create canonical duplicates
# These are the SPA globe loaded with client-side state — not indexable content
Disallow: /*?sat=
Disallow: /*?filter=
Disallow: /*?sat_group=
Disallow: /*?highlight=
# ✅ Block ?group= and ?focus= globe state parameters (client-side operator/event views)
# GSC: "Alternate page with proper canonical tag" — /?group=hulianwang, /?focus=shakti etc.
Disallow: /*?group=
Disallow: /*?focus=
# ✅ Block embed parameter variants (used for iframed widgets on third-party sites)
# These serve the same content as the canonical page and waste crawl budget
# GSC: "Alternate page with proper canonical tag" — 713 pages (primary cause)
Disallow: /*?embed=
Disallow: /*?embed
# ✅ Block blog category filter pages (client-side filter, not distinct content)
# GSC: contributes to "Alternate page with proper canonical tag" count
Disallow: /blog?category=
Disallow: /blog?category
# ✅ Blog TAG pages are intentionally CRAWLABLE — do NOT re-block.
# They serve <meta name="robots" content="noindex, follow">, so letting Googlebot crawl
# them is the ONLY way the noindex is honored: the page is dropped from the index but its
# links are still followed. Re-blocking hides the noindex and strands them as
# "Indexed, though blocked by robots.txt" (GSC 2026-08-17: 88 such tag URLs). The tag set
# is finite (curated), so crawl-budget cost is negligible. Category pages stay blocked below
# (they emit index,follow — blocking them prevents thin filtered-view duplicates indexing).
# ✅ Block blog search results (dynamic, noindex — not distinct indexable content)
Disallow: /blog?q=
Disallow: /blog?q
# ✅ Block satellite directory search parameter (client-side search, not distinct content)
Disallow: /satellite-directory?q=
Disallow: /satellite-directory?q
# ✅ Block library search parameter (prevents crawling of SearchAction template URL)
# GSC: /library?q={search_term_string} being crawled from structured data template
Disallow: /library?q=
Disallow: /library?q
# ✅ Block locale prefixes that have NO published translations.
# ⚠️ MAINTENANCE: when a language goes live, REMOVE its line here. A live locale
# left in this list is submitted in sitemap.xml (with hreflang) and then blocked
# from crawling — the pages can never be indexed and the hreflang cluster breaks.
# /ja/ and /es/ were removed 2026-07-29 (pilot went live 2026-07-28).
# /de/ removed 2026-08-17 — DE pilot is live.
# /pt/ and /fr/ removed 2026-08-17 — full i18n rollout went live (de/it/fr/pt/pl/cs/ro/hu,
# 11 pages each). it/cs/ro/hu were never listed here, so they were already crawlable.
# Only genuinely-untranslated locale prefixes remain blocked below.
Disallow: /zh/
Disallow: /ko/
Disallow: /ar/
# IMPORTANT: allow JS, workers, styles, and app assets so Google can render pages
Allow: /
Allow: /scripts/
Allow: /cache/
Allow: /images/
Allow: /public/
# Explicitly allow key app files (belt & braces)
Allow: /main.js
Allow: /satellite.min.js
Allow: /tleWorker.cjs
Allow: /satelliteWorker.js
Allow: /satdbWorker.js
Allow: /filters.js
Allow: /filterNav.js
# Bulk AI-training crawlers with no search/citation value: not welcome.
# (Search-time agents — OAI-SearchBot, ChatGPT-User, Claude-User, PerplexityBot,
# Googlebot etc. — remain ALLOWED: AI citations are wanted. Do not block them.)
User-agent: Bytespider
Disallow: /
# Sitemaps
Sitemap: https://orbitalradar.com/sitemap-index.xml
Sitemap: https://orbitalradar.com/sitemap.xml
Sitemap: https://orbitalradar.com/sitemap-satellites.xml
Sitemap: https://orbitalradar.com/sitemap-satellites-archive.xml
Sitemap: https://orbitalradar.com/sitemap-register.xml
Sitemap: https://orbitalradar.com/sitemap-launches.xml
Sitemap: https://orbitalradar.com/sitemap-asteroids.xml
Sitemap: https://orbitalradar.com/news-sitemap.xmlFolgende Keywords wurden erkannt. Überprüfe die Optimierung dieser Keywords für Deine Seite.
(Nice to have)