# As a condition of accessing this website, you agree to abide by the following # content signals: # (a) If a content-signal = yes, you may collect content for the corresponding # use. # (b) If a content-signal = no, you may not collect content for the # corresponding use. # (c) If the website operator does not include a content signal for a # corresponding use, the website operator neither grants nor restricts # permission via content signal with respect to the corresponding use. # The content signals and their meanings are: # search: building a search index and providing search results (e.g., returning # hyperlinks and short excerpts from your website's contents). Search does not # include providing AI-generated search summaries. # ai-input: inputting content into one or more AI models (e.g., retrieval # augmented generation, grounding, or other real-time taking of content for # generative AI search answers). # ai-train: training or fine-tuning AI models. # ANY RESTRICTIONS EXPRESSED VIA CONTENT SIGNALS ARE EXPRESS RESERVATIONS OF # RIGHTS UNDER ARTICLE 4 OF THE EUROPEAN UNION DIRECTIVE 2019/790 ON COPYRIGHT # AND RELATED RIGHTS IN THE DIGITAL SINGLE MARKET. # robots.txt — https://twitterscore.io # TwitterScore: crypto & NFT analytics based on Twitter/X followers. # # One policy for every crawler. AI / answer-engine crawlers (GPTBot, # ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, CCBot, …) # are intentionally NOT given their own groups: a bare "Allow: /" group # would make them ignore the Disallow rules below and crawl private # dashboards. They fall back to this "*" group instead, so they are # welcome on all public content and blocked from app/admin areas — which # is exactly what we want for AI visibility. User-agent: * # Content signals (Cloudflare / cf.link/content-signals-policy): allow AI SEARCH # indexing + real-time AI answers/citation (we WANT AI-Overview / ChatGPT / # Perplexity visibility), but RESERVE rights on model TRAINING. Flip ai-train to # yes to permit training on our data. Content-Signal: search=yes, ai-input=yes, ai-train=no # # NB: intentionally NO "Allow: /" here — everything not Disallowed is # allowed by default, and an explicit "Allow: /" makes first-match-wins # parsers (Python robotparser & friends) approve EVERY url before they # reach the Disallows below. Also no blank lines inside this group — # strict RFC-1994 parsers treat a blank line as end-of-group and would # drop the remaining rules as orphaned. Comment separators are safe. # # --- Private / app surfaces (no SEO value, waste crawl budget) --- Disallow: /admin/ Disallow: /admins/ Disallow: /admin-tools/ # /api/prices is the public API-pricing landing page — keep it crawlable. # Longest-match wins (Google/Bing), so this Allow beats the /api/ Disallow. Allow: /api/prices Disallow: /api/ # Paid-ad click-redirect endpoints (own-domain redirect to the advertiser's # URL). rel="sponsored" is set on the tags in static/js/ads/*.js; this # Disallow is Google's documented second layer for paid links (block the # redirect page from crawling) — see Search Essentials "qualify outbound links". Disallow: /ads/ Disallow: /new/ Disallow: /payments/ Disallow: /stream/ Disallow: /_a/ Disallow: /o/ Disallow: /oauth/ Disallow: /accountsDashboard/ Disallow: /applicationsDashboard/ Disallow: /monitoringDashboard/ Disallow: /coinsDashboard/ Disallow: /adminLogsDashboard/ Disallow: /CoinsNoneTwitterDashboard/ Disallow: /usersEdit/ # /scoring/ itself is the public "Bulk Score Check" tool page (own # meta robots: index,follow) — keep it crawlable. Its AJAX data endpoints # stay blocked. NB: the more specific Disallows must come BEFORE the # general Allow — primitive parsers (no wildcard/anchor support, e.g. # Python's urllib.robotparser) match literal prefixes in file order, # first match wins; only Google/Bing do real longest-match. Disallow: /scoring/ajax/ Disallow: /scoring/v2/ajax/ Allow: /scoring/ Disallow: /settings/ Disallow: /subscription/ Disallow: /watchlist/ Disallow: /profile/ Disallow: /sign-in/ Disallow: /sign-up/ Disallow: /sign-out/ Disallow: /password-change/ Disallow: /password_reset/ Disallow: /activate/ Disallow: /search/ # # --- AJAX/JSON endpoints (fragments, not pages) --- Disallow: /*/ajax/ Disallow: /*/ajax # # --- Tracking-parameter variants only (canonical handles the rest). # NB: do NOT use a blanket "Disallow: /*?" — it also blocks the # paginated sitemap sub-files (sitemap-accounts.xml?p=2). --- Disallow: /*?utm_ Disallow: /*?ref= Disallow: /*?fbclid= Sitemap: https://twitterscore.io/sitemap.xml