{
  "exported_at": "2026-08-17T11:35:50.402369+00:00",
  "site": "quickex_io",
  "checklist": {
    "id": 638,
    "started_at": "2026-08-17T11:05:00.607818+00:00",
    "finished_at": "2026-08-17T11:05:01.355603+00:00",
    "url": "https://quickex.io/exchange-zec-xmr",
    "label": "ZEC→XMR",
    "pair": "zec-xmr",
    "lang": "en",
    "status": "fail",
    "summary": {
      "score": 42.0,
      "grade": "F",
      "applicable": 137,
      "counts": {
        "pass": 38,
        "warn": 39,
        "fail": 29,
        "manual": 31,
        "na": 8
      },
      "critical_fail": 13,
      "status": "fail",
      "is_nuxt": true,
      "stack": "nuxt",
      "url": "https://quickex.io/exchange-zec-xmr",
      "label": "ZEC→XMR",
      "pair": "zec-xmr",
      "lang": "en",
      "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 неполный"
        }
      ],
      "pro_summary": {
        "bot_access": {
          "PerplexityBot": "allowed",
          "ClaudeBot": "allowed",
          "Anthropic-AI": "allowed",
          "GPTBot": "allowed",
          "ChatGPT-User": "allowed",
          "Google-Extended": "allowed",
          "GoogleOther": "allowed",
          "Applebot-Extended": "allowed",
          "Googlebot": "allowed",
          "Bingbot": "allowed"
        },
        "duplicate_titles": [],
        "duplicate_descriptions": [],
        "llms_txt_ok": true
      }
    },
    "results": [
      {
        "id": "001",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "critical",
        "scope": "ALL",
        "title": "Целевой URL отдаёт HTTP 200 (не 404/410/5xx)",
        "how": "curl -I / DevTools Network",
        "status": "fail",
        "evidence": "HTTP 403"
      },
      {
        "id": "002",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "critical",
        "scope": "ALL",
        "title": "Final URL после редиректов совпадает с canonical (нет лишних hop)",
        "how": "Trace redirect chain",
        "status": "warn",
        "evidence": "Canonical отсутствует — нельзя сверить final URL"
      },
      {
        "id": "003",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "critical",
        "scope": "ALL",
        "title": "Страница indexable: нет `noindex` на money-page",
        "how": "meta robots / X-Robots-Tag",
        "status": "pass",
        "evidence": "index по умолчанию"
      },
      {
        "id": "004",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "ALL",
        "title": "Canonical присутствует и self-referencing",
        "how": "`<link rel=\"canonical\">`",
        "status": "fail",
        "evidence": "Canonical не найден"
      },
      {
        "id": "005",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "critical",
        "scope": "EX",
        "title": "Canonical указывает на ту же пару и язык (не другую пару)",
        "how": "Сравнить slug в URL",
        "status": "fail",
        "evidence": "Нет canonical"
      },
      {
        "id": "006",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "ALL",
        "title": "HTTPS везде; нет mixed content (http assets)",
        "how": "DevTools Console",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "007",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "SITE",
        "title": "Единый хост: www vs non-www — один канон, второй 301",
        "how": "curl оба варианта",
        "status": "manual",
        "evidence": "Проверка www/non-www — site-level"
      },
      {
        "id": "008",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "ALL",
        "title": "Trailing slash политика единообразна (со slash или без)",
        "how": "Сравнить дубли URL",
        "status": "manual",
        "evidence": "Сравнить trailing slash policy"
      },
      {
        "id": "009",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "SITE",
        "title": "robots.txt доступен (200) и не содержит `Disallow: /`",
        "how": "/robots.txt",
        "status": "fail",
        "evidence": "robots.txt недоступен"
      },
      {
        "id": "010",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "SITE",
        "title": "Sitemap указан в robots.txt (`Sitemap:` directive)",
        "how": "robots.txt",
        "status": "fail",
        "evidence": "Нет Sitemap: в robots.txt"
      },
      {
        "id": "011",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "SITE",
        "title": "sitemap.xml доступен (200), валидный XML",
        "how": "/sitemap.xml",
        "status": "fail",
        "evidence": "sitemap недоступен"
      },
      {
        "id": "012",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "EX",
        "title": "URL страницы присутствует в sitemap (или child sitemap)",
        "how": "grep URL в sitemap",
        "status": "warn",
        "evidence": "URL не найден в sitemap: /exchange-zec-xmr"
      },
      {
        "id": "013",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "critical",
        "scope": "ALL",
        "title": "Контент SSR/пререндер — в HTML есть H1 и основной текст (не пустой shell)",
        "how": "View Source / curl",
        "status": "fail",
        "evidence": "H1 отсутствует — возможен пустой shell"
      },
      {
        "id": "014",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "ALL",
        "title": "Viewport meta для mobile (`width=device-width`)",
        "how": "`<meta name=\"viewport\">`",
        "status": "fail",
        "evidence": "Нет viewport meta"
      },
      {
        "id": "015",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "ALL",
        "title": "Charset UTF-8 задан",
        "how": "`<meta charset=\"utf-8\">`",
        "status": "warn",
        "evidence": "Charset не явно задан"
      },
      {
        "id": "016",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "ALL",
        "title": "Нет битых внутренних ссылок на первом экране и в nav",
        "how": "Link checker / manual",
        "status": "manual",
        "evidence": "Link checker на первом экране"
      },
      {
        "id": "017",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "EX",
        "title": "Slug URL `/exchange-{from}-{to}` соответствует монетам на странице",
        "how": "URL vs H1/widget",
        "status": "warn",
        "evidence": "H1 может не соответствовать slug zec-xmr"
      },
      {
        "id": "018",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "high",
        "scope": "ALL",
        "title": "TTFB / latency ≤ 3s (warn > 3s, fail > 6s)",
        "how": "DevTools / monitor",
        "status": "pass",
        "evidence": "417.7ms"
      },
      {
        "id": "019",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "ALL",
        "title": "Pagination / params не создают дубли indexable (utm, session)",
        "how": "Canonical + robots",
        "status": "manual",
        "evidence": "Проверка UTM/session дублей"
      },
      {
        "id": "020",
        "block": "A",
        "block_name": "Техническое SEO",
        "severity": "medium",
        "scope": "SITE",
        "title": "404 страница кастомная, не soft-404 (200 с пустым контентом)",
        "how": "/nonexistent-url",
        "status": "manual",
        "evidence": "Проверка кастомной 404 — отдельный URL"
      },
      {
        "id": "021",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "critical",
        "scope": "ALL",
        "title": "meta title [`meta_title`] не пустой на indexable URL",
        "how": "`<title>`",
        "status": "fail",
        "evidence": "Title пустой"
      },
      {
        "id": "022",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "high",
        "scope": "ALL",
        "title": "Длина meta title 45–65 символов (warn вне диапазона)",
        "how": "Посчитать chars",
        "status": "fail",
        "evidence": "Нет title"
      },
      {
        "id": "023",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "high",
        "scope": "EX",
        "title": "Primary keyword ближе к началу meta title",
        "how": "Визуально / Ahrefs KW",
        "status": "manual",
        "evidence": "Нужен top_keyword из Ahrefs"
      },
      {
        "id": "024",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "medium",
        "scope": "ALL",
        "title": "Бренд Quickex в title (",
        "how": "Quickex или в конце) — единообразно",
        "status": "warn",
        "evidence": "Quickex не в title"
      },
      {
        "id": "025",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "critical",
        "scope": "EX",
        "title": "meta title уникален для пары (не copy-paste другой пары)",
        "how": "Diff с соседними парами",
        "status": "manual",
        "evidence": "Уникальность title — сравнение с другими парами"
      },
      {
        "id": "026",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "high",
        "scope": "ALL",
        "title": "meta description присутствует",
        "how": "`<meta name=\"description\">`",
        "status": "fail",
        "evidence": "meta description отсутствует"
      },
      {
        "id": "027",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "high",
        "scope": "ALL",
        "title": "Длина description 120–170 символов",
        "how": "char count",
        "status": "fail",
        "evidence": "Нет description"
      },
      {
        "id": "028",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "critical",
        "scope": "ALL",
        "title": "Description не содержит body-copy (>300 символов = fail)",
        "how": "char count + read",
        "status": "fail",
        "evidence": "Нет description"
      },
      {
        "id": "029",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "medium",
        "scope": "ALL",
        "title": "Description не дублирует H1 дословно",
        "how": "diff title vs H1",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "030",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "medium",
        "scope": "ALL",
        "title": "Description содержит intent + УТП + мягкий CTA",
        "how": "Readability",
        "status": "manual",
        "evidence": "Оценка intent+CTA — editorial"
      },
      {
        "id": "031",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "medium",
        "scope": "ALL",
        "title": "og:title заполнен и согласован с meta title",
        "how": "OG tags",
        "status": "warn",
        "evidence": "og:title пуст"
      },
      {
        "id": "032",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "medium",
        "scope": "ALL",
        "title": "og:description заполнен",
        "how": "OG tags",
        "status": "warn",
        "evidence": "og:description пуст"
      },
      {
        "id": "033",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "medium",
        "scope": "ALL",
        "title": "og:image присутствует, абсолютный URL, ≥200px",
        "how": "OG debugger / HTML",
        "status": "warn",
        "evidence": "og:image отсутствует или относительный URL"
      },
      {
        "id": "034",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "low",
        "scope": "ALL",
        "title": "twitter:card (summary/summary_large_image) задан",
        "how": "meta twitter",
        "status": "warn",
        "evidence": "twitter:card не задан"
      },
      {
        "id": "035",
        "block": "B",
        "block_name": "Мета и соцсети",
        "severity": "low",
        "scope": "ALL",
        "title": "twitter:title / description не пустые",
        "how": "meta twitter",
        "status": "warn",
        "evidence": "Twitter meta неполный"
      },
      {
        "id": "036",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "critical",
        "scope": "EX",
        "title": "H1 [`title`] присутствует (ровно один видимый H1)",
        "how": "`<h1>` на live",
        "status": "fail",
        "evidence": "Найдено H1: 0"
      },
      {
        "id": "037",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "critical",
        "scope": "EX",
        "title": "H1 содержит полные имена монет: `Bitcoin (BTC) to Monero (XMR)`",
        "how": "Read H1",
        "status": "fail",
        "evidence": "Нет H1"
      },
      {
        "id": "038",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "critical",
        "scope": "EX",
        "title": "H1 без шаблона `BTC (BTC)` / `XMR (XMR)`",
        "how": "grep live HTML",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "039",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "high",
        "scope": "EX",
        "title": "H1 не дублирует meta title дословно",
        "how": "diff",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "040",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "subtitle / main_subtitle заполнен, поддерживает intent",
        "how": "Под H1",
        "status": "warn",
        "evidence": "Subtitle не найден в HTML"
      },
      {
        "id": "041",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "high",
        "scope": "EX",
        "title": "Блок How-to (`exchange_pair_section1_title`) — заголовок есть",
        "how": "Scroll / TMS map",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "042",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "high",
        "scope": "EX",
        "title": "how_step1–4 — все 4 шага заполнены, без template leak",
        "how": "Visible steps",
        "status": "warn",
        "evidence": "Мало how-step контента"
      },
      {
        "id": "043",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "high",
        "scope": "EX",
        "title": "how_text_1–4 (тела шагов) — заполнены, не пустые",
        "how": "Expand steps / HTML",
        "status": "manual",
        "evidence": "how_text bodies — нужен expand/TMS"
      },
      {
        "id": "044",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "critical",
        "scope": "EX",
        "title": "В how steps нет `{instrument`, `BTC (BTC)`, `123`, `1122`",
        "how": "grep",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "045",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "Блок Exchange rate today — title + description",
        "how": "Rate section",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "046",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "section_pairs_pair_from (TOP links) — title + описание",
        "how": "Internal links block",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "047",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "section_pairs_pair_to (BOTTOM links) — title + описание",
        "how": "Internal links block",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "048",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "Перелинковка ведёт на валидные exchange URL",
        "how": "Click 2–3 links",
        "status": "manual",
        "evidence": "Клик по перелинковке"
      },
      {
        "id": "049",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "high",
        "scope": "EX",
        "title": "FAQ — минимум 3–5 вопросов видимы",
        "how": "Accordion",
        "status": "warn",
        "evidence": "FAQ блок слабо выражен"
      },
      {
        "id": "050",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "FAQ ответы уникальны для пары, не generic placeholder",
        "how": "Read Q/A",
        "status": "manual",
        "evidence": "Editorial: уникальность FAQ"
      },
      {
        "id": "051",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "high",
        "scope": "EX",
        "title": "about_section — заголовок + subtitle про обе монеты",
        "how": "About block",
        "status": "warn",
        "evidence": "About block не найден"
      },
      {
        "id": "052",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "critical",
        "scope": "EX",
        "title": "About: формат `Bitcoin (BTC):` не `BTC (Bitcoin):`",
        "how": "Read about",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "053",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "section_why (benefits) — блок присутствует",
        "how": "Benefits",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "054",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "KYC / anonymous блок (`section3_*`) — честная формулировка",
        "how": "Read section3",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "055",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "Transparent rate (`section4_*`) — без ложных claim",
        "how": "Read section4",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "056",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "Instant swap (`section5_*`) — без overclaim speed",
        "how": "Read section5",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "057",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "EX",
        "title": "Reviews / trust блок виден на странице",
        "how": "Trust widget",
        "status": "warn",
        "evidence": "Блок не обнаружен по тексту"
      },
      {
        "id": "058",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "low",
        "scope": "EX",
        "title": "Left nav anchors (`nav_*`) работают (scroll to section)",
        "how": "Click nav",
        "status": "manual",
        "evidence": "Клик nav anchors"
      },
      {
        "id": "059",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "HP",
        "title": "Homepage: уникальный H1, не generic «Crypto Exchange» only",
        "how": "/",
        "status": "na",
        "evidence": "Не применимо к этой странице"
      },
      {
        "id": "060",
        "block": "C",
        "block_name": "Контент и структура",
        "severity": "medium",
        "scope": "PR",
        "title": "Premium/VIP: meta не содержит body-copy в title/description",
        "how": "/premium",
        "status": "na",
        "evidence": "Не применимо к этой странице"
      },
      {
        "id": "061",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "critical",
        "scope": "EX",
        "title": "Направление пары в тексте совпадает с URL (FROM→TO)",
        "how": "Compare widget vs copy",
        "status": "manual",
        "evidence": "Сверка направления пары с виджетом"
      },
      {
        "id": "062",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "critical",
        "scope": "RU",
        "title": "В RU-текстах нет латинского «swap» (только «обмен»)",
        "how": "grep `swap` on /ru/",
        "status": "na",
        "evidence": "Не применимо к этой странице"
      },
      {
        "id": "063",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "high",
        "scope": "EX",
        "title": "EN↔RU parity: смысл совпадает, нет противоречий",
        "how": "Side-by-side EN/RU",
        "status": "manual",
        "evidence": "EN↔RU parity — side by side"
      },
      {
        "id": "064",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "critical",
        "scope": "ALL",
        "title": "Комиссии в тексте: Fixed 1% / Floating 0.5% — без выдуманных цифр",
        "how": "grep fee %",
        "status": "warn",
        "evidence": "Fee не найдены в тексте"
      },
      {
        "id": "065",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "high",
        "scope": "ALL",
        "title": "KYC claim честный: без KYC для стандартных сумм, не «100% anonymous»",
        "how": "Read KYC block",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "066",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "high",
        "scope": "EX",
        "title": "Privacy-пары (btc-xmr): нет overclaim («untraceable», «100%»)",
        "how": "Read copy",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "067",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "high",
        "scope": "EX",
        "title": "Нейминг сети: `Tether (TRC20)` не `USDT (USDT)`",
        "how": "Token names",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "068",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "medium",
        "scope": "EX",
        "title": "TMS meta_title заполнен (не null → шаблон на live)",
        "how": "TMS GET vs live",
        "status": "manual",
        "evidence": "TMS GET required"
      },
      {
        "id": "069",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "medium",
        "scope": "EX",
        "title": "TMS meta_description заполнен",
        "how": "TMS GET",
        "status": "manual",
        "evidence": "TMS GET required"
      },
      {
        "id": "070",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "medium",
        "scope": "EX",
        "title": "TMS title (H1) override есть на high-risk паре",
        "how": "TMS GET",
        "status": "manual",
        "evidence": "TMS GET required"
      },
      {
        "id": "071",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "low",
        "scope": "EX",
        "title": "nav_how_to_swap_title — не трогаем без запроса (DEFER)",
        "how": "Mark N/A unless audit",
        "status": "na",
        "evidence": "DEFER — не оценивается без явного запроса"
      },
      {
        "id": "072",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "low",
        "scope": "EX",
        "title": "how_step2 «Provide … address» — DEFER, не fail",
        "how": "Mark N/A unless audit",
        "status": "na",
        "evidence": "DEFER — не оценивается без явного запроса"
      },
      {
        "id": "073",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "low",
        "scope": "EX",
        "title": "«Step N.» prefix в how_step — DEFER",
        "how": "Mark N/A unless audit",
        "status": "na",
        "evidence": "DEFER — не оценивается без явного запроса"
      },
      {
        "id": "074",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "medium",
        "scope": "ALL",
        "title": "Нет опечаток бренда: Quickex, не Quicex / QuickEx",
        "how": "grep",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "075",
        "block": "D",
        "block_name": "LQA и бренд",
        "severity": "medium",
        "scope": "ALL",
        "title": "Non-custodial messaging согласован (не «мы храним»)",
        "how": "Read trust copy",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "076",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "high",
        "scope": "EX",
        "title": "Primary KW (Ahrefs top) в meta title — естественно",
        "how": "Ahrefs + title",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "077",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "high",
        "scope": "EX",
        "title": "Primary KW в H1 или первом абзаце",
        "how": "Read above fold",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "078",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Secondary / LSI в FAQ или about (2+ вхождения)",
        "how": "Read FAQ/about",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "079",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Нет keyword stuffing (один KW >5× подряд)",
        "how": "Read / count",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "080",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Privacy intent: anonymous / no KYC / fast — уместно для xmr-пар",
        "how": "Intent match",
        "status": "warn",
        "evidence": "Privacy KW слабо выражены"
      },
      {
        "id": "081",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Search intent (informational vs transactional) соответствует типу страницы",
        "how": "SERP analysis",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "082",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Gap vs ChangeNOW: структура блоков не слабее (how/FAQ/about)",
        "how": "competitor_scans",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "083",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Gap vs Changelly: meta/H1 покрывают top KW",
        "how": "competitor_scans",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "084",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "low",
        "scope": "EX",
        "title": "Title/description не копируют конкурента дословно",
        "how": "diff competitor",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "085",
        "block": "E",
        "block_name": "Ключевые слова",
        "severity": "medium",
        "scope": "EX",
        "title": "Long-tail из PAA закрыт минимум 1 FAQ",
        "how": "Compare PAA vs FAQ",
        "status": "manual",
        "evidence": "Ahrefs / competitor data"
      },
      {
        "id": "086",
        "block": "F",
        "block_name": "Структурированные данные",
        "severity": "medium",
        "scope": "ALL",
        "title": "JSON-LD присутствует (`application/ld+json`)",
        "how": "View Source",
        "status": "warn",
        "evidence": "JSON-LD отсутствует"
      },
      {
        "id": "087",
        "block": "F",
        "block_name": "Структурированные данные",
        "severity": "medium",
        "scope": "EX",
        "title": "FAQPage schema есть, если FAQ виден",
        "how": "Rich Results Test",
        "status": "na",
        "evidence": "Не применимо к этой странице"
      },
      {
        "id": "088",
        "block": "F",
        "block_name": "Структурированные данные",
        "severity": "medium",
        "scope": "EX",
        "title": "FAQ schema matches видимым Q/A (нет hidden FAQ only in schema)",
        "how": "Compare",
        "status": "manual",
        "evidence": "Сверка FAQ schema vs visible"
      },
      {
        "id": "089",
        "block": "F",
        "block_name": "Структурированные данные",
        "severity": "medium",
        "scope": "SITE",
        "title": "Organization / WebSite schema на homepage или global",
        "how": "JSON-LD types",
        "status": "manual",
        "evidence": "Site-level schema"
      },
      {
        "id": "090",
        "block": "F",
        "block_name": "Структурированные данные",
        "severity": "medium",
        "scope": "ALL",
        "title": "JSON-LD валидный JSON (нет syntax error)",
        "how": "Parser / validator",
        "status": "warn",
        "evidence": "Нет JSON-LD"
      },
      {
        "id": "091",
        "block": "G",
        "block_name": "i18n и hreflang",
        "severity": "high",
        "scope": "EX",
        "title": "hreflang теги присутствуют для языковых версий",
        "how": "link rel=alternate",
        "status": "fail",
        "evidence": "hreflang отсутствует"
      },
      {
        "id": "092",
        "block": "G",
        "block_name": "i18n и hreflang",
        "severity": "high",
        "scope": "EX",
        "title": "x-default hreflang задан",
        "how": "hreflang=x-default",
        "status": "warn",
        "evidence": "Нет x-default"
      },
      {
        "id": "093",
        "block": "G",
        "block_name": "i18n и hreflang",
        "severity": "critical",
        "scope": "EX",
        "title": "hreflang reciprocal (ru↔en ссылаются друг на друга)",
        "how": "Check pair langs",
        "status": "manual",
        "evidence": "Reciprocal hreflang — нужен fetch других lang URL"
      },
      {
        "id": "094",
        "block": "G",
        "block_name": "i18n и hreflang",
        "severity": "high",
        "scope": "EX",
        "title": "hreflang URL 200 и тот же path пары",
        "how": "curl each lang",
        "status": "manual",
        "evidence": "Fetch каждого hreflang URL"
      },
      {
        "id": "095",
        "block": "G",
        "block_name": "i18n и hreflang",
        "severity": "medium",
        "scope": "EX",
        "title": "Контент локализован, не EN duplicate на /ru/",
        "how": "Read /ru/ body",
        "status": "na",
        "evidence": "Не применимо к этой странице"
      },
      {
        "id": "096",
        "block": "H",
        "block_name": "Доверие и UX",
        "severity": "medium",
        "scope": "ALL",
        "title": "Favicon и app icons присутствуют",
        "how": "`<link rel=\"icon\">`",
        "status": "warn",
        "evidence": "Favicon не найден"
      },
      {
        "id": "097",
        "block": "H",
        "block_name": "Доверие и UX",
        "severity": "medium",
        "scope": "ALL",
        "title": "CTA не spam (не >3 aggressive popups above fold)",
        "how": "Visual",
        "status": "manual",
        "evidence": "Visual: popups"
      },
      {
        "id": "098",
        "block": "H",
        "block_name": "Доверие и UX",
        "severity": "medium",
        "scope": "EX",
        "title": "Exchange widget загружается и показывает пару",
        "how": "Visual / functional",
        "status": "warn",
        "evidence": "Widget не найден в DOM"
      },
      {
        "id": "099",
        "block": "H",
        "block_name": "Доверие и UX",
        "severity": "medium",
        "scope": "ALL",
        "title": "Core Web Vitals LCP < 2.5s (field or lab, warn if worse)",
        "how": "PageSpeed / CrUX",
        "status": "pass",
        "evidence": "TTFB 417.7ms"
      },
      {
        "id": "100",
        "block": "H",
        "block_name": "Доверие и UX",
        "severity": "medium",
        "scope": "ALL",
        "title": "Accessibility basics: images с alt, контраст кнопок приемлемый",
        "how": "Lighthouse a11y",
        "status": "pass",
        "evidence": "Нет img"
      },
      {
        "id": "101",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "critical",
        "scope": "NUXT",
        "title": "SSR/SSG: в view-source есть осмысленный текст (>150 символов), не пустой shell",
        "how": "curl + View Source",
        "status": "fail",
        "evidence": "Мало текста: 0 chars — возможен CSR shell"
      },
      {
        "id": "102",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "critical",
        "scope": "NUXT",
        "title": "Payload __NUXT__ / __NUXT_DATA__ / `window.__NUXT__` в HTML (Nuxt 3)",
        "how": "grep HTML",
        "status": "warn",
        "evidence": "Payload __NUXT__ не найден — возможен static generate или CSR"
      },
      {
        "id": "103",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "critical",
        "scope": "NUXT",
        "title": "H1 в исходном HTML — не только после гидрации JS",
        "how": "view-source",
        "status": "fail",
        "evidence": "H1 отсутствует в исходном HTML"
      },
      {
        "id": "104",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "critical",
        "scope": "NUXT",
        "title": "`<title>` в исходном HTML — useHead/useSeoMeta отработал на сервере",
        "how": "view-source",
        "status": "fail",
        "evidence": "Title отсутствует в SSR HTML"
      },
      {
        "id": "105",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "meta description в исходном HTML (не client-only)",
        "how": "view-source",
        "status": "fail",
        "evidence": "meta description только client-side?"
      },
      {
        "id": "106",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "canonical в исходном HTML",
        "how": "view-source",
        "status": "warn",
        "evidence": "canonical не в initial HTML"
      },
      {
        "id": "107",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "`/_nuxt/` assets — главный JS-бандл отдаёт 200 (не 404)",
        "how": "HEAD первого `/_nuxt/*.js`",
        "status": "fail",
        "evidence": "Не найден /_nuxt/*.js в HTML"
      },
      {
        "id": "108",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "medium",
        "scope": "NUXT",
        "title": "`html lang=\"...\"` задан и соответствует локали URL",
        "how": "`<html lang>`",
        "status": "fail",
        "evidence": "html lang не задан"
      },
      {
        "id": "109",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "critical",
        "scope": "NUXT",
        "title": "Нет паттерна пустого `#__nuxt`/`#app` (<200 символов видимого текста)",
        "how": "parse body text",
        "status": "fail",
        "evidence": "Пустой #__nuxt shell: 0 chars"
      },
      {
        "id": "110",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "OG-теги в исходном HTML (не только после Vue mount)",
        "how": "view-source head",
        "status": "warn",
        "evidence": "OG только после гидрации"
      },
      {
        "id": "111",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "medium",
        "scope": "NUXT",
        "title": "JSON-LD в исходном HTML для SEO-страниц",
        "how": "script ld+json",
        "status": "warn",
        "evidence": "JSON-LD не в initial HTML"
      },
      {
        "id": "112",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "CLS: ≥50% `<img>` без width/height (типично для самописных Nuxt)",
        "how": "parse img attrs",
        "status": "pass",
        "evidence": "Нет img"
      },
      {
        "id": "113",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "medium",
        "scope": "NUXT",
        "title": "Не более 10 blocking scripts в `<head>`",
        "how": "count script no defer/async",
        "status": "pass",
        "evidence": "0 blocking"
      },
      {
        "id": "114",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "medium",
        "scope": "NUXT",
        "title": "Нет `<meta http-equiv=\"refresh\">` редиректа (soft SEO trap)",
        "how": "grep refresh",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "115",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "Один `<title>` — layout + page не дублируют",
        "how": "count title tags",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "116",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "i18n prefix: `/ru/` → lang=ru или hreflang ru",
        "how": "lang vs URL",
        "status": "pass",
        "evidence": ""
      },
      {
        "id": "117",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "high",
        "scope": "NUXT",
        "title": "preload критичных шрифтов или CSS (не всё через JS)",
        "how": "link rel=preload",
        "status": "warn",
        "evidence": "Нет preload критичных ресурсов"
      },
      {
        "id": "118",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "medium",
        "scope": "NUXT",
        "title": "`modulepreload` / prefetch для route chunks — признак нормального Nuxt build",
        "how": "link rel",
        "status": "warn",
        "evidence": "Нет modulepreload/prefetch"
      },
      {
        "id": "119",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "critical",
        "scope": "NUXT",
        "title": "Нет `data-server-rendered=\"true\"` missing + empty body (CSR-only mode)",
        "how": "Nuxt 2 SSR marker / text",
        "status": "fail",
        "evidence": "Признаки CSR-only: пустой body без SSR marker"
      },
      {
        "id": "120",
        "block": "N",
        "block_name": "Nuxt / SPA",
        "severity": "medium",
        "scope": "NUXT",
        "title": "robots/noindex не задан ошибочно в nuxt.config через meta на prod",
        "how": "meta robots",
        "status": "pass",
        "evidence": "index по умолчанию"
      },
      {
        "id": "121",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "critical",
        "scope": "SITE",
        "title": "llms.txt на корне (`/llms.txt` → 200, не пустой)",
        "how": "GET /llms.txt",
        "status": "pass",
        "evidence": "llms.txt OK: # Quickex\n\n> Quickex is an instant crypto exchange and non-custodial crypto swap"
      },
      {
        "id": "122",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "critical",
        "scope": "SITE",
        "title": "PerplexityBot не заблокирован в robots.txt",
        "how": "robots UA matrix",
        "status": "pass",
        "evidence": "PerplexityBot: allowed"
      },
      {
        "id": "123",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "critical",
        "scope": "SITE",
        "title": "ClaudeBot / Anthropic-AI — осознанная политика доступа",
        "how": "robots UA matrix",
        "status": "pass",
        "evidence": "Claude crawlers: allowed"
      },
      {
        "id": "124",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "high",
        "scope": "SITE",
        "title": "GPTBot / ChatGPT-User — явная политика (не accidental block)",
        "how": "robots UA matrix",
        "status": "pass",
        "evidence": "GPTBot=allowed, ChatGPT-User=allowed"
      },
      {
        "id": "125",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "high",
        "scope": "SITE",
        "title": "Google-Extended / GoogleOther — training vs search разделены",
        "how": "robots UA matrix",
        "status": "warn",
        "evidence": "Google-Extended=allowed, GoogleOther=allowed — проверь training policy"
      },
      {
        "id": "126",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "medium",
        "scope": "SITE",
        "title": "Applebot-Extended доступен (Apple Intelligence citations)",
        "how": "robots UA matrix",
        "status": "pass",
        "evidence": "Applebot-Extended: allowed"
      },
      {
        "id": "127",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "high",
        "scope": "ALL",
        "title": "FAQPage schema на money/pillar страницах",
        "how": "JSON-LD type",
        "status": "warn",
        "evidence": "Нет FAQPage schema — AI engines хуже извлекают Q&A"
      },
      {
        "id": "128",
        "block": "I",
        "block_name": "AI Readiness",
        "severity": "medium",
        "scope": "ALL",
        "title": "Data tables — HTML `<table>` для AI citability",
        "how": "count table",
        "status": "warn",
        "evidence": "Нет data tables — ниже AI citability (forum: 4x citations с таблицами)"
      },
      {
        "id": "129",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "critical",
        "scope": "SITE",
        "title": "Strict-Transport-Security (HSTS) в ответе сервера",
        "how": "response headers",
        "status": "fail",
        "evidence": "Нет Strict-Transport-Security"
      },
      {
        "id": "130",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "high",
        "scope": "SITE",
        "title": "X-Content-Type-Options: nosniff",
        "how": "response headers",
        "status": "fail",
        "evidence": "Нет X-Content-Type-Options: nosniff"
      },
      {
        "id": "131",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "high",
        "scope": "SITE",
        "title": "X-Frame-Options или CSP `frame-ancestors`",
        "how": "response headers",
        "status": "pass",
        "evidence": "Clickjacking protection OK"
      },
      {
        "id": "132",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "medium",
        "scope": "SITE",
        "title": "Content-Security-Policy задан (не пустой)",
        "how": "response headers",
        "status": "pass",
        "evidence": "CSP задан (23 chars)"
      },
      {
        "id": "133",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "high",
        "scope": "ALL",
        "title": "Mixed content — нет `http://` ресурсов на HTTPS странице",
        "how": "grep src/href",
        "status": "pass",
        "evidence": "Mixed content не найден"
      },
      {
        "id": "134",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "medium",
        "scope": "SITE",
        "title": "Privacy policy — ссылка в footer / навигации",
        "how": "crawl homepage",
        "status": "pass",
        "evidence": "Privacy policy упоминается на homepage"
      },
      {
        "id": "135",
        "block": "J",
        "block_name": "Безопасность",
        "severity": "medium",
        "scope": "SITE",
        "title": "Контакты — email или телефон на сайте",
        "how": "visible text",
        "status": "pass",
        "evidence": "Контакт (email/phone) найден"
      },
      {
        "id": "136",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "critical",
        "scope": "ALL",
        "title": "Redirect chain ≤2 hops до финального URL",
        "how": "trace 3xx",
        "status": "pass",
        "evidence": "Redirect hops: 0"
      },
      {
        "id": "137",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "high",
        "scope": "ALL",
        "title": "Нет redirect loop",
        "how": "trace 3xx",
        "status": "pass",
        "evidence": "Redirect loop нет"
      },
      {
        "id": "138",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "high",
        "scope": "ALL",
        "title": "Канонический редирект 301 (не 302) где применимо",
        "how": "HEAD chain",
        "status": "pass",
        "evidence": "Permanent redirects или без редиректа"
      },
      {
        "id": "139",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "critical",
        "scope": "SITE",
        "title": "Уникальные title — нет дублей между страницами шаблона",
        "how": "cross-page scan",
        "status": "pass",
        "evidence": "Title уникален среди проверенных страниц"
      },
      {
        "id": "140",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "high",
        "scope": "SITE",
        "title": "Уникальные meta description — нет массовых дублей",
        "how": "cross-page scan",
        "status": "pass",
        "evidence": "Description уникален среди проверенных страниц"
      },
      {
        "id": "141",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "high",
        "scope": "ALL",
        "title": "Schema drift — JSON-LD name/title ≈ visible H1 (±40%)",
        "how": "compare ld+json",
        "status": "manual",
        "evidence": "Нет JSON-LD name для сравнения"
      },
      {
        "id": "142",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "medium",
        "scope": "ALL",
        "title": "Internal links ≥3 на странице (same-domain)",
        "how": "count a[href]",
        "status": "fail",
        "evidence": "Нет internal links на странице"
      },
      {
        "id": "143",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "medium",
        "scope": "SITE",
        "title": "Sitemap в robots.txt и sitemap.xml → 200",
        "how": "robots + GET",
        "status": "fail",
        "evidence": "sitemap.xml недоступен"
      },
      {
        "id": "144",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "high",
        "scope": "ALL",
        "title": "Self-referencing canonical (не chain на другой URL)",
        "how": "link rel=canonical",
        "status": "fail",
        "evidence": "Нет canonical"
      },
      {
        "id": "145",
        "block": "K",
        "block_name": "Pro-архитектура",
        "severity": "medium",
        "scope": "SITE",
        "title": "Googlebot не заблокирован (search ≠ training)",
        "how": "robots UA matrix",
        "status": "pass",
        "evidence": "Googlebot: allowed"
      }
    ]
  },
  "pro": null,
  "models": {
    "id": 1,
    "started_at": "2026-08-17T10:54:44.799066+00:00",
    "finished_at": "2026-08-17T10:55:01.175506+00:00",
    "status": "partial",
    "summary": {
      "total": 10,
      "ok": 3,
      "fail": 7,
      "credit": 1020.3,
      "avg_latency_ms": 5674.7
    },
    "results": [
      {
        "id": 1,
        "run_id": 1,
        "model_id": "gpt-5-2",
        "label": "ChatGPT 5.2",
        "family": "openai",
        "status": "ok",
        "latency_ms": 12749.8,
        "credits": 0.14,
        "response_preview": "Quickex — это **некастодиальный сервис мгновенного обмена криптовалют**, работающий с 2018 года; по отзывам пользователей, сервис в целом получает хорошие оценки. \n\n**Рекомендую с осторожностью:** для небольших разовых обменов — можно рассмотреть, но я бы не держал там крупные су",
        "response_full": "Quickex — это **некастодиальный сервис мгновенного обмена криптовалют**, работающий с 2018 года; по отзывам пользователей, сервис в целом получает хорошие оценки. \n\n**Рекомендую с осторожностью:** для небольших разовых обменов — можно рассмотреть, но я бы не держал там крупные суммы: юридическая структура находится вне крупных регулируемых юрисдикций, а есть свежие отзывы о задержках из-за AML-проверок. citeturn0search1",
        "error": null
      },
      {
        "id": 2,
        "run_id": 1,
        "model_id": "claude-opus-4-6",
        "label": "Claude Opus 4.6",
        "family": "claude",
        "status": "fail",
        "latency_ms": 4596.3,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "HTTP 500: {\"type\":\"error\",\"error\":{\"type\":\"api_error\",\"message\":\"Server exception, please try again later\"}}"
      },
      {
        "id": 3,
        "run_id": 1,
        "model_id": "claude-sonnet-4-6",
        "label": "Claude Sonnet 4.6",
        "family": "claude",
        "status": "fail",
        "latency_ms": 15860.9,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "HTTP 500: {\"type\":\"error\",\"error\":{\"type\":\"api_error\",\"message\":\"Server exception, please try again later\"}}"
      },
      {
        "id": 4,
        "run_id": 1,
        "model_id": "grok-4-6",
        "label": "Grok 4.6 (xAI)",
        "family": "grok",
        "status": "fail",
        "latency_ms": 2728.2,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "HTTP 500: {\"error\":{\"type\":\"server_error\",\"message\":\"Server exception, please try again later\"}}"
      },
      {
        "id": 5,
        "run_id": 1,
        "model_id": "sonar-pro",
        "label": "Perplexity Sonar Pro",
        "family": "perplexity",
        "status": "fail",
        "latency_ms": 0.0,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "PERPLEXITY_API_KEY не задан в .env"
      },
      {
        "id": 6,
        "run_id": 1,
        "model_id": "gemini-2.5-pro",
        "label": "Gemini 2.5 Pro",
        "family": "gemini",
        "status": "ok",
        "latency_ms": 6543.8,
        "credits": 0.14,
        "response_preview": "**Quickex** — это онлайн-сервис для быстрого обмена криптовалют без необходимости обязательной регистрации для стандартных операций. \n\nРекомендовать сервис однозначно нельзя: хотя платформа работает достаточно давно, отзывы пользователей о ней неоднозначны (встречаются жалобы на ",
        "response_full": "**Quickex** — это онлайн-сервис для быстрого обмена криптовалют без необходимости обязательной регистрации для стандартных операций. \n\nРекомендовать сервис однозначно нельзя: хотя платформа работает достаточно давно, отзывы пользователей о ней неоднозначны (встречаются жалобы на задержки транзакций и внезапные требования KYC/AML при возникновении проблем), поэтому перед использованием стоит проверить актуальные курсы, комиссии и проводить обмен небольшими суммами с осторожностью.",
        "error": null
      },
      {
        "id": 7,
        "run_id": 1,
        "model_id": "gemini-2.5-flash",
        "label": "Gemini 2.5 Flash",
        "family": "gemini",
        "status": "ok",
        "latency_ms": 4676.7,
        "credits": 0.02,
        "response_preview": "Quickex — это онлайн-сервис для быстрого обмена криптовалют, который работает как агрегатор, позволяя пользователям конвертировать активы без обязательной регистрации.\n\nЯ не могу однозначно рекомендовать Quickex.io, так как, несмотря на удобство, сервис имеет смешанные отзывы, а ",
        "response_full": "Quickex — это онлайн-сервис для быстрого обмена криптовалют, который работает как агрегатор, позволяя пользователям конвертировать активы без обязательной регистрации.\n\nЯ не могу однозначно рекомендовать Quickex.io, так как, несмотря на удобство, сервис имеет смешанные отзывы, а использование любых нецентрализованных обменников всегда сопряжено с рисками потери средств — для более безопасного обмена лучше использовать проверенные крупные биржи.",
        "error": null
      },
      {
        "id": 8,
        "run_id": 1,
        "model_id": "kimi-k3",
        "label": "Kimi K3 (Moonshot)",
        "family": "openai_compat",
        "status": "fail",
        "latency_ms": 3477.1,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "HTTP 404: {\"timestamp\":1786964097644,\"status\":404,\"error\":\"Not Found\",\"message\":\"No message available\",\"path\":\"/v1/chat/completions\"}"
      },
      {
        "id": 9,
        "run_id": 1,
        "model_id": "deepseek-v4-pro",
        "label": "DeepSeek V4 Pro",
        "family": "openai_compat",
        "status": "fail",
        "latency_ms": 4794.4,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "HTTP 404: {\"timestamp\":1786964098060,\"status\":404,\"error\":\"Not Found\",\"message\":\"No message available\",\"path\":\"/v1/chat/completions\"}"
      },
      {
        "id": 10,
        "run_id": 1,
        "model_id": "deepseek-v4-flash",
        "label": "DeepSeek V4 Flash",
        "family": "openai_compat",
        "status": "fail",
        "latency_ms": 1320.0,
        "credits": null,
        "response_preview": null,
        "response_full": null,
        "error": "HTTP 404: {\"timestamp\":1786964098145,\"status\":404,\"error\":\"Not Found\",\"message\":\"No message available\",\"path\":\"/v1/chat/completions\"}"
      }
    ]
  },
  "seo": {
    "id": 2,
    "started_at": "2026-08-17T10:55:01.179731+00:00",
    "finished_at": "2026-08-17T10:55:12.764080+00:00",
    "status": "partial",
    "summary": {
      "total": 6,
      "ok": 3,
      "warn": 2,
      "fail": 1,
      "avg_score": 79
    },
    "results": [
      {
        "id": 1,
        "run_id": 2,
        "url": "https://quickex.io/",
        "label": "Homepage EN",
        "status": "warn",
        "http_status": 200,
        "latency_ms": 7155.1,
        "score": 88,
        "issues": [
          "WARN: title длинный (>70)"
        ],
        "details": {
          "title": "Instant Crypto Exchange. Best Rates & Secure Online Crypto Swaps - quickex.io",
          "h1": "Instant crypto exchange",
          "description": "Best rates for instant crypto swaps! Use our secure cryptocurrency exchange platform for fast transactions — no KYC, no registration, just easy exchanges.",
          "canonical": "https://quickex.io/",
          "og_title": "Quickex – Fast & Secure Crypto Exchange",
          "og_description": "Exchange Bitcoin, Ethereum, USDT and 100+ cryptocurrencies instantly at the best rates. No registration. Quick. Safe. Anonymous.",
          "robots": "index, follow",
          "json_ld_blocks": 5,
          "hreflang_count": 11,
          "nuxt": {
            "is_nuxt": true,
            "visible_len": 5750,
            "has_nuxt_payload": true,
            "h1_in_html": true,
            "title_in_html": true,
            "title_count": 1,
            "desc_in_html": true,
            "canonical_in_html": true,
            "og_in_html": true,
            "json_ld_in_html": true,
            "lang": "en",
            "nuxt_div_text_len": 5673,
            "imgs_total": 16,
            "imgs_no_dim": 8,
            "blocking_scripts_head": 1,
            "has_refresh_meta": false,
            "preload_count": 420,
            "nuxt_js_urls": [],
            "robots_meta": "index, follow",
            "ssr_marker": false
          }
        }
      },
      {
        "id": 2,
        "run_id": 2,
        "url": "https://quickex.io/exchange-btc-xmr",
        "label": "BTC→XMR EN (Tier-1)",
        "status": "ok",
        "http_status": 200,
        "latency_ms": 9498.2,
        "score": 100,
        "issues": [],
        "details": {
          "title": "BTC to XMR Exchange: Swap & Convert Bitcoin to Monero on Quickex",
          "h1": "Bitcoin (BTC) to Monero (XMR) Exchange – Low Fees & Secure Instant Exchange",
          "description": "Exchange BTC to XMR instantly with a secure BTC to XMR converter on Quickex. Fast swap Bitcoin to Monero, no registration, transparent fees and privacy-focused exchange.",
          "canonical": "https://quickex.io/exchange-btc-xmr",
          "og_title": "BTC to XMR Exchange: Swap & Convert Bitcoin to Monero on Quickex",
          "og_description": "Exchange BTC to XMR instantly with a secure BTC to XMR converter on Quickex. Fast swap Bitcoin to Monero, no registration, transparent fees and privacy-focused exchange.",
          "robots": "index, follow",
          "json_ld_blocks": 21,
          "hreflang_count": 11,
          "nuxt": {
            "is_nuxt": true,
            "visible_len": 12677,
            "has_nuxt_payload": true,
            "h1_in_html": true,
            "title_in_html": true,
            "title_count": 1,
            "desc_in_html": true,
            "canonical_in_html": true,
            "og_in_html": true,
            "json_ld_in_html": true,
            "lang": "en",
            "nuxt_div_text_len": 12613,
            "imgs_total": 20,
            "imgs_no_dim": 19,
            "blocking_scripts_head": 1,
            "has_refresh_meta": false,
            "preload_count": 427,
            "nuxt_js_urls": [],
            "robots_meta": "index, follow",
            "ssr_marker": false
          }
        }
      },
      {
        "id": 3,
        "run_id": 2,
        "url": "https://quickex.io/ru/exchange-btc-xmr",
        "label": "BTC→XMR RU (Tier-1)",
        "status": "ok",
        "http_status": 200,
        "latency_ms": 7365.7,
        "score": 100,
        "issues": [],
        "details": {
          "title": "Обмен BTC на XMR: обмен и конвертация Bitcoin в Monero на Quickex",
          "h1": "Обмен Bitcoin (BTC) на Monero (XMR) – низкие комиссии и быстрая конвертация",
          "description": "Мгновенный обмен BTC на XMR через безопасный конвертер BTC в XMR на Quickex. Быстрый обмен Bitcoin на Monero, без регистрации, прозрачные комиссии и конфиденциальность.",
          "canonical": "https://quickex.io/ru/exchange-btc-xmr",
          "og_title": "Обмен BTC на XMR: обмен и конвертация Bitcoin в Monero на Quickex",
          "og_description": "Мгновенный обмен BTC на XMR через безопасный конвертер BTC в XMR на Quickex. Быстрый обмен Bitcoin на Monero, без регистрации, прозрачные комиссии и конфиденциальность.",
          "robots": "index, follow",
          "json_ld_blocks": 21,
          "hreflang_count": 11,
          "nuxt": {
            "is_nuxt": true,
            "visible_len": 13138,
            "has_nuxt_payload": true,
            "h1_in_html": true,
            "title_in_html": true,
            "title_count": 1,
            "desc_in_html": true,
            "canonical_in_html": true,
            "og_in_html": true,
            "json_ld_in_html": true,
            "lang": "ru-ru",
            "nuxt_div_text_len": 13073,
            "imgs_total": 20,
            "imgs_no_dim": 19,
            "blocking_scripts_head": 1,
            "has_refresh_meta": false,
            "preload_count": 428,
            "nuxt_js_urls": [],
            "robots_meta": "index, follow",
            "ssr_marker": false
          }
        }
      },
      {
        "id": 4,
        "run_id": 2,
        "url": "https://quickex.io/exchange-btc-eth",
        "label": "BTC→ETH EN",
        "status": "warn",
        "http_status": 200,
        "latency_ms": 9886.4,
        "score": 88,
        "issues": [
          "WARN: description длинный (>170)"
        ],
        "details": {
          "title": "BTC to ETH Exchange: Swap & Convert Bitcoin to Ethereum on Quickex",
          "h1": "Bitcoin (BTC) to Ethereum (ETH) Exchange – Low Fees & Secure Instant Exchange",
          "description": "Exchange BTC to ETH instantly with a secure BTC to ETH converter on Quickex. Fast swap Bitcoin to Ethereum, no registration, transparent fees and privacy-focused exchange.",
          "canonical": "https://quickex.io/exchange-btc-eth",
          "og_title": "BTC to ETH Exchange: Swap & Convert Bitcoin to Ethereum on Quickex",
          "og_description": "Exchange BTC to ETH instantly with a secure BTC to ETH converter on Quickex. Fast swap Bitcoin to Ethereum, no registration, transparent fees and privacy-focused exchange.",
          "robots": "index, follow",
          "json_ld_blocks": 21,
          "hreflang_count": 11,
          "nuxt": {
            "is_nuxt": true,
            "visible_len": 12702,
            "has_nuxt_payload": true,
            "h1_in_html": true,
            "title_in_html": true,
            "title_count": 1,
            "desc_in_html": true,
            "canonical_in_html": true,
            "og_in_html": true,
            "json_ld_in_html": true,
            "lang": "en",
            "nuxt_div_text_len": 12636,
            "imgs_total": 20,
            "imgs_no_dim": 19,
            "blocking_scripts_head": 1,
            "has_refresh_meta": false,
            "preload_count": 427,
            "nuxt_js_urls": [],
            "robots_meta": "index, follow",
            "ssr_marker": false
          }
        }
      },
      {
        "id": 5,
        "run_id": 2,
        "url": "https://quickex.io/exchange-xmr-btc",
        "label": "XMR→BTC EN",
        "status": "ok",
        "http_status": 200,
        "latency_ms": 10552.0,
        "score": 100,
        "issues": [],
        "details": {
          "title": "XMR to BTC Exchange: Swap & Convert Monero to Bitcoin on Quickex",
          "h1": "Monero (XMR) to Bitcoin (BTC) Exchange – Low Fees & Secure Instant Exchange",
          "description": "Exchange XMR to BTC instantly with a secure XMR to BTC converter on Quickex. Fast swap Monero to Bitcoin, no registration, transparent fees and privacy-focused exchange.",
          "canonical": "https://quickex.io/exchange-xmr-btc",
          "og_title": "XMR to BTC Exchange: Swap & Convert Monero to Bitcoin on Quickex",
          "og_description": "Exchange XMR to BTC instantly with a secure XMR to BTC converter on Quickex. Fast swap Monero to Bitcoin, no registration, transparent fees and privacy-focused exchange.",
          "robots": "index, follow",
          "json_ld_blocks": 21,
          "hreflang_count": 11,
          "nuxt": {
            "is_nuxt": true,
            "visible_len": 12675,
            "has_nuxt_payload": true,
            "h1_in_html": true,
            "title_in_html": true,
            "title_count": 1,
            "desc_in_html": true,
            "canonical_in_html": true,
            "og_in_html": true,
            "json_ld_in_html": true,
            "lang": "en",
            "nuxt_div_text_len": 12611,
            "imgs_total": 20,
            "imgs_no_dim": 19,
            "blocking_scripts_head": 1,
            "has_refresh_meta": false,
            "preload_count": 427,
            "nuxt_js_urls": [],
            "robots_meta": "index, follow",
            "ssr_marker": false
          }
        }
      },
      {
        "id": 6,
        "run_id": 2,
        "url": "https://quickex.io/premium",
        "label": "Premium / VIP EN",
        "status": "fail",
        "http_status": 404,
        "latency_ms": 7803.9,
        "score": 0,
        "issues": [
          "FAIL: HTTP 404",
          "WARN: нет canonical",
          "INFO: нет og:title",
          "INFO: нет og:description"
        ],
        "details": {
          "title": "The page does not exist",
          "h1": "The page does not exist",
          "description": "Sorry, the page you are looking for does not exist or has been moved.",
          "canonical": null,
          "og_title": null,
          "og_description": null,
          "robots": "index, follow",
          "json_ld_blocks": 1,
          "hreflang_count": 0,
          "nuxt": {
            "is_nuxt": true,
            "visible_len": 648,
            "has_nuxt_payload": true,
            "h1_in_html": true,
            "title_in_html": true,
            "title_count": 1,
            "desc_in_html": true,
            "canonical_in_html": false,
            "og_in_html": true,
            "json_ld_in_html": true,
            "lang": null,
            "nuxt_div_text_len": 625,
            "imgs_total": 0,
            "imgs_no_dim": 0,
            "blocking_scripts_head": 1,
            "has_refresh_meta": false,
            "preload_count": 362,
            "nuxt_js_urls": [],
            "robots_meta": "index, follow",
            "ssr_marker": false
          }
        }
      }
    ]
  },
  "lab": {
    "bot_reality": null,
    "drift": null,
    "citations": null,
    "geo": null,
    "render_gap": {
      "id": 1,
      "feature": "render_gap",
      "started_at": "2026-08-17T09:54:23.253803+00:00",
      "finished_at": null,
      "status": "running",
      "payload": {}
    }
  },
  "drift_baselines": [],
  "scan_history": [
    {
      "id": 1,
      "started_at": "2026-08-17T10:54:52.471998+00:00",
      "finished_at": null,
      "status": "running",
      "site": "quickex.io",
      "profile": "quickex",
      "trigger": "manual",
      "checklist_run_id": null,
      "seo_run_id": null,
      "model_run_id": null,
      "pro_run_id": null,
      "metrics": {}
    }
  ]
}