{
  "exported_at": "2026-08-17T12:18:44.860997+00:00",
  "site": "quickex_io",
  "report": {
    "error": null,
    "base": "https://quickex.io",
    "pages_scanned": 6,
    "bot_matrix": {
      "ai": {
        "PerplexityBot": "allowed",
        "PerplexityBot__desc": "Perplexity citations",
        "ClaudeBot": "allowed",
        "ClaudeBot__desc": "Anthropic Claude",
        "Anthropic-AI": "allowed",
        "Anthropic-AI__desc": "Anthropic training",
        "GPTBot": "allowed",
        "GPTBot__desc": "OpenAI training",
        "ChatGPT-User": "allowed",
        "ChatGPT-User__desc": "ChatGPT browsing",
        "Google-Extended": "allowed",
        "Google-Extended__desc": "Google AI training",
        "GoogleOther": "allowed",
        "GoogleOther__desc": "Google auxiliary",
        "Applebot-Extended": "allowed",
        "Applebot-Extended__desc": "Apple Intelligence"
      },
      "search": {
        "Googlebot": "allowed",
        "Googlebot__desc": "Google Search",
        "Bingbot": "allowed",
        "Bingbot__desc": "Bing Search"
      }
    },
    "bot_reality": {
      "error": null,
      "url": "https://quickex.io/",
      "robots_text_len": 0,
      "summary": {
        "total_bots": 10,
        "ok": 10,
        "mismatch": 0,
        "has_critical_mismatch": false
      },
      "results": [
        {
          "bot": "PerplexityBot",
          "description": "Perplexity citations",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20002.7,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "ClaudeBot",
          "description": "Anthropic Claude",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20002.1,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "Anthropic-AI",
          "description": "Anthropic training",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20002.4,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "GPTBot",
          "description": "OpenAI training",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20003.3,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "ChatGPT-User",
          "description": "ChatGPT browsing",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20000.4,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "Google-Extended",
          "description": "Google AI training",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20002.1,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "GoogleOther",
          "description": "Google auxiliary",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20001.6,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "Applebot-Extended",
          "description": "Apple Intelligence",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20003.4,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "Googlebot",
          "description": "Google Search",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20003.3,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        },
        {
          "bot": "Bingbot",
          "description": "Bing Search",
          "robots": "allowed",
          "http_status": 0,
          "body_len": 0,
          "latency_ms": 20003.0,
          "challenge": false,
          "error": "",
          "verdict": "ok",
          "final_url": "https://quickex.io/"
        }
      ],
      "chrome_baseline": {
        "status": 0,
        "latency_ms": 20001.6,
        "body_len": 0,
        "final_url": "https://quickex.io/",
        "challenge": false,
        "error": "",
        "user_agent": "Chrome (baseline)"
      }
    },
    "security_headers": {
      "strict-transport-security": "—",
      "x-content-type-options": "—",
      "x-frame-options": "—",
      "content-security-policy": "—"
    },
    "llms_txt": {
      "ok": false,
      "preview": ""
    },
    "sitemap": {
      "ok": false,
      "in_robots": false
    },
    "duplicate_titles": [],
    "duplicate_descriptions": [],
    "redirect_chains": {
      "https://quickex.io/": [
        {
          "url": "https://quickex.io/",
          "status": "error",
          "location": ""
        }
      ],
      "https://quickex.io/exchange-btc-xmr": [
        {
          "url": "https://quickex.io/exchange-btc-xmr",
          "status": "error",
          "location": ""
        }
      ],
      "https://quickex.io/ru/exchange-btc-xmr": [
        {
          "url": "https://quickex.io/ru/exchange-btc-xmr",
          "status": "error",
          "location": ""
        }
      ],
      "https://quickex.io/exchange-btc-eth": [
        {
          "url": "https://quickex.io/exchange-btc-eth",
          "status": "error",
          "location": ""
        }
      ],
      "https://quickex.io/exchange-xmr-btc": [
        {
          "url": "https://quickex.io/exchange-xmr-btc",
          "status": "error",
          "location": ""
        }
      ],
      "https://quickex.io/premium": [
        {
          "url": "https://quickex.io/premium",
          "status": "error",
          "location": ""
        }
      ]
    },
    "page_snapshots": [
      {
        "url": "https://quickex.io/",
        "error": ""
      },
      {
        "url": "https://quickex.io/exchange-btc-xmr",
        "error": ""
      },
      {
        "url": "https://quickex.io/ru/exchange-btc-xmr",
        "error": ""
      },
      {
        "url": "https://quickex.io/exchange-btc-eth",
        "error": ""
      },
      {
        "url": "https://quickex.io/exchange-xmr-btc",
        "error": ""
      },
      {
        "url": "https://quickex.io/premium",
        "error": ""
      }
    ],
    "bot_access_flat": {
      "PerplexityBot": "allowed",
      "ClaudeBot": "allowed",
      "Anthropic-AI": "allowed",
      "GPTBot": "allowed",
      "ChatGPT-User": "allowed",
      "Google-Extended": "allowed",
      "GoogleOther": "allowed",
      "Applebot-Extended": "allowed",
      "Googlebot": "allowed",
      "Bingbot": "allowed"
    }
  },
  "roadmap": [
    {
      "id": "001",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Целевой URL отдаёт HTTP 200 (не 404/410/5xx)",
      "block": "A",
      "evidence": "HTTP 403"
    },
    {
      "id": "005",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Canonical указывает на ту же пару и язык (не другую пару)",
      "block": "A",
      "evidence": "Нет canonical"
    },
    {
      "id": "013",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Контент SSR/пререндер — в HTML есть H1 и основной текст (не пустой shell)",
      "block": "A",
      "evidence": "H1 отсутствует — возможен пустой shell"
    },
    {
      "id": "021",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "meta title [`meta_title`] не пустой на indexable URL",
      "block": "B",
      "evidence": "Title пустой"
    },
    {
      "id": "028",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Description не содержит body-copy (>300 символов = fail)",
      "block": "B",
      "evidence": "Нет description"
    },
    {
      "id": "036",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "H1 [`title`] присутствует (ровно один видимый H1)",
      "block": "C",
      "evidence": "Найдено H1: 0"
    },
    {
      "id": "037",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "H1 содержит полные имена монет: `Bitcoin (BTC) to Monero (XMR)`",
      "block": "C",
      "evidence": "Нет H1"
    },
    {
      "id": "101",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "SSR/SSG: в view-source есть осмысленный текст (>150 символов), не пустой shell",
      "block": "N",
      "evidence": "Мало текста: 0 chars — возможен CSR shell"
    },
    {
      "id": "103",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "H1 в исходном HTML — не только после гидрации JS",
      "block": "N",
      "evidence": "H1 отсутствует в исходном HTML"
    },
    {
      "id": "104",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "`<title>` в исходном HTML — useHead/useSeoMeta отработал на сервере",
      "block": "N",
      "evidence": "Title отсутствует в SSR HTML"
    },
    {
      "id": "109",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Нет паттерна пустого `#__nuxt`/`#app` (<200 символов видимого текста)",
      "block": "N",
      "evidence": "Пустой #__nuxt shell: 0 chars"
    },
    {
      "id": "119",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Нет `data-server-rendered=\"true\"` missing + empty body (CSR-only mode)",
      "block": "N",
      "evidence": "Признаки CSR-only: пустой body без SSR marker"
    },
    {
      "id": "129",
      "priority": "P0",
      "severity": "critical",
      "status": "fail",
      "title": "Strict-Transport-Security (HSTS) в ответе сервера",
      "block": "J",
      "evidence": "Нет Strict-Transport-Security"
    },
    {
      "id": "002",
      "priority": "P2",
      "severity": "critical",
      "status": "warn",
      "title": "Final URL после редиректов совпадает с canonical (нет лишних hop)",
      "block": "A",
      "evidence": "Canonical отсутствует — нельзя сверить final URL"
    },
    {
      "id": "064",
      "priority": "P2",
      "severity": "critical",
      "status": "warn",
      "title": "Комиссии в тексте: Fixed 1% / Floating 0.5% — без выдуманных цифр",
      "block": "D",
      "evidence": "Fee не найдены в тексте"
    },
    {
      "id": "102",
      "priority": "P2",
      "severity": "critical",
      "status": "warn",
      "title": "Payload __NUXT__ / __NUXT_DATA__ / `window.__NUXT__` в HTML (Nuxt 3)",
      "block": "N",
      "evidence": "Payload __NUXT__ не найден — возможен static generate или CSR"
    },
    {
      "id": "004",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "Canonical присутствует и self-referencing",
      "block": "A",
      "evidence": "Canonical не найден"
    },
    {
      "id": "009",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "robots.txt доступен (200) и не содержит `Disallow: /`",
      "block": "A",
      "evidence": "robots.txt недоступен"
    },
    {
      "id": "010",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "Sitemap указан в robots.txt (`Sitemap:` directive)",
      "block": "A",
      "evidence": "Нет Sitemap: в robots.txt"
    },
    {
      "id": "011",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "sitemap.xml доступен (200), валидный XML",
      "block": "A",
      "evidence": "sitemap недоступен"
    },
    {
      "id": "014",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "Viewport meta для mobile (`width=device-width`)",
      "block": "A",
      "evidence": "Нет viewport meta"
    },
    {
      "id": "022",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "Длина meta title 45–65 символов (warn вне диапазона)",
      "block": "B",
      "evidence": "Нет title"
    },
    {
      "id": "026",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "meta description присутствует",
      "block": "B",
      "evidence": "meta description отсутствует"
    },
    {
      "id": "027",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "Длина description 120–170 символов",
      "block": "B",
      "evidence": "Нет description"
    },
    {
      "id": "091",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "hreflang теги присутствуют для языковых версий",
      "block": "G",
      "evidence": "hreflang отсутствует"
    },
    {
      "id": "105",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "meta description в исходном HTML (не client-only)",
      "block": "N",
      "evidence": "meta description только client-side?"
    },
    {
      "id": "107",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "`/_nuxt/` assets — главный JS-бандл отдаёт 200 (не 404)",
      "block": "N",
      "evidence": "Не найден /_nuxt/*.js в HTML"
    },
    {
      "id": "130",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "X-Content-Type-Options: nosniff",
      "block": "J",
      "evidence": "Нет X-Content-Type-Options: nosniff"
    },
    {
      "id": "144",
      "priority": "P1",
      "severity": "high",
      "status": "fail",
      "title": "Self-referencing canonical (не chain на другой URL)",
      "block": "K",
      "evidence": "Нет canonical"
    },
    {
      "id": "041",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "Блок How-to (`exchange_pair_section1_title`) — заголовок есть",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "042",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "how_step1–4 — все 4 шага заполнены, без template leak",
      "block": "C",
      "evidence": "Мало how-step контента"
    },
    {
      "id": "049",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "FAQ — минимум 3–5 вопросов видимы",
      "block": "C",
      "evidence": "FAQ блок слабо выражен"
    },
    {
      "id": "051",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "about_section — заголовок + subtitle про обе монеты",
      "block": "C",
      "evidence": "About block не найден"
    },
    {
      "id": "092",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "x-default hreflang задан",
      "block": "G",
      "evidence": "Нет x-default"
    },
    {
      "id": "106",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "canonical в исходном HTML",
      "block": "N",
      "evidence": "canonical не в initial HTML"
    },
    {
      "id": "110",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "OG-теги в исходном HTML (не только после Vue mount)",
      "block": "N",
      "evidence": "OG только после гидрации"
    },
    {
      "id": "117",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "preload критичных шрифтов или CSS (не всё через JS)",
      "block": "N",
      "evidence": "Нет preload критичных ресурсов"
    },
    {
      "id": "125",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "Google-Extended / GoogleOther — training vs search разделены",
      "block": "I",
      "evidence": "Google-Extended=allowed, GoogleOther=allowed — проверь training policy"
    },
    {
      "id": "127",
      "priority": "P2",
      "severity": "high",
      "status": "warn",
      "title": "FAQPage schema на money/pillar страницах",
      "block": "I",
      "evidence": "Нет FAQPage schema — AI engines хуже извлекают Q&A"
    },
    {
      "id": "108",
      "priority": "P2",
      "severity": "medium",
      "status": "fail",
      "title": "`html lang=\"...\"` задан и соответствует локали URL",
      "block": "N",
      "evidence": "html lang не задан"
    },
    {
      "id": "142",
      "priority": "P2",
      "severity": "medium",
      "status": "fail",
      "title": "Internal links ≥3 на странице (same-domain)",
      "block": "K",
      "evidence": "Нет internal links на странице"
    },
    {
      "id": "143",
      "priority": "P2",
      "severity": "medium",
      "status": "fail",
      "title": "Sitemap в robots.txt и sitemap.xml → 200",
      "block": "K",
      "evidence": "sitemap.xml недоступен"
    },
    {
      "id": "012",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "URL страницы присутствует в sitemap (или child sitemap)",
      "block": "A",
      "evidence": "URL не найден в sitemap: /exchange-zec-xmr"
    },
    {
      "id": "015",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Charset UTF-8 задан",
      "block": "A",
      "evidence": "Charset не явно задан"
    },
    {
      "id": "017",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Slug URL `/exchange-{from}-{to}` соответствует монетам на странице",
      "block": "A",
      "evidence": "H1 может не соответствовать slug zec-xmr"
    },
    {
      "id": "024",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Бренд Quickex в title (",
      "block": "B",
      "evidence": "Quickex не в title"
    },
    {
      "id": "031",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "og:title заполнен и согласован с meta title",
      "block": "B",
      "evidence": "og:title пуст"
    },
    {
      "id": "032",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "og:description заполнен",
      "block": "B",
      "evidence": "og:description пуст"
    },
    {
      "id": "033",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "og:image присутствует, абсолютный URL, ≥200px",
      "block": "B",
      "evidence": "og:image отсутствует или относительный URL"
    },
    {
      "id": "040",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "subtitle / main_subtitle заполнен, поддерживает intent",
      "block": "C",
      "evidence": "Subtitle не найден в HTML"
    },
    {
      "id": "045",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Блок Exchange rate today — title + description",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "046",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "section_pairs_pair_from (TOP links) — title + описание",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "047",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "section_pairs_pair_to (BOTTOM links) — title + описание",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "053",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "section_why (benefits) — блок присутствует",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "054",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "KYC / anonymous блок (`section3_*`) — честная формулировка",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "055",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Transparent rate (`section4_*`) — без ложных claim",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "056",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Instant swap (`section5_*`) — без overclaim speed",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "057",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Reviews / trust блок виден на странице",
      "block": "C",
      "evidence": "Блок не обнаружен по тексту"
    },
    {
      "id": "080",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Privacy intent: anonymous / no KYC / fast — уместно для xmr-пар",
      "block": "E",
      "evidence": "Privacy KW слабо выражены"
    },
    {
      "id": "086",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "JSON-LD присутствует (`application/ld+json`)",
      "block": "F",
      "evidence": "JSON-LD отсутствует"
    },
    {
      "id": "090",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "JSON-LD валидный JSON (нет syntax error)",
      "block": "F",
      "evidence": "Нет JSON-LD"
    },
    {
      "id": "096",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Favicon и app icons присутствуют",
      "block": "H",
      "evidence": "Favicon не найден"
    },
    {
      "id": "098",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Exchange widget загружается и показывает пару",
      "block": "H",
      "evidence": "Widget не найден в DOM"
    },
    {
      "id": "111",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "JSON-LD в исходном HTML для SEO-страниц",
      "block": "N",
      "evidence": "JSON-LD не в initial HTML"
    },
    {
      "id": "118",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "`modulepreload` / prefetch для route chunks — признак нормального Nuxt build",
      "block": "N",
      "evidence": "Нет modulepreload/prefetch"
    },
    {
      "id": "128",
      "priority": "P3",
      "severity": "medium",
      "status": "warn",
      "title": "Data tables — HTML `<table>` для AI citability",
      "block": "I",
      "evidence": "Нет data tables — ниже AI citability (forum: 4x citations с таблицами)"
    },
    {
      "id": "034",
      "priority": "P3",
      "severity": "low",
      "status": "warn",
      "title": "twitter:card (summary/summary_large_image) задан",
      "block": "B",
      "evidence": "twitter:card не задан"
    },
    {
      "id": "035",
      "priority": "P3",
      "severity": "low",
      "status": "warn",
      "title": "twitter:title / description не пустые",
      "block": "B",
      "evidence": "Twitter meta неполный"
    }
  ]
}