<?xml version="1.0" encoding="UTF-8"?>
<!--
  ПРАВИЛО: правишь страницу — правишь её lastmod здесь же, в том же коммите.
  Протухший lastmod не нейтрален, он активно вредит: краулер читает его как
  «с тех пор ничего не менялось» и откладывает переобход. Так и вышло — до
  2026-08-02 тут стояло 2026-07-15, хотя главная и гайд переписаны 2026-07-28,
  а юридические страницы 2026-07-29.

  Адреса — БЕЗ слэша на конце (кроме корня): так стоит в <link rel=canonical>,
  и Caddy 301-ит вариант со слэшем на этот. Дата берётся из git log по файлу,
  а не из mtime — mtime врёт после любого cp/checkout.

  И обратное правило, не менее важное: lastmod нельзя двигать туда, где страница
  сама себя датирует иначе. У статей в разметке есть собственная dateModified и
  видимая строка «Обновлено: месяц год» — если sitemap обещает август, а страница
  говорит июль, краулер приходит за обновлением, не находит его и перестаёт
  доверять lastmod ПО ВСЕМУ САЙТУ, то есть ровно тому сигналу, ради которого этот
  файл и ведут. Поэтому дату статьи поднимают только вместе с её собственной
  разметкой и только когда действительно поменялся текст, а не href или ссылка в
  подвале. У главной своей даты в разметке нет — там противоречить нечему.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://getmira.ru/</loc>
    <lastmod>2026-09-23</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://getmira.ru/kak-brat-predoplatu-i-chto-delat-s-neyavkami</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <!--
    Страница-сравнение датирует себя сама: «Проверено 5 сентября 2026» стоит в
    лиде и в dateModified разметки. Двигать lastmod здесь можно только вместе
    с этой датой и с перепроверкой цен на страницах сервисов — иначе краулер
    придёт за обновлением, не найдёт его и перестанет доверять lastmod по
    всему сайту (правило в шапке файла). changefreq monthly: условия
    конкурентов меняются, но не еженедельно.
  -->
  <url>
    <loc>https://getmira.ru/servisy-onlayn-zapisi-dlya-byuti-masterov</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://getmira.ru/kak-sdelat-telegram-bota-dlya-zapisi</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://getmira.ru/kak-sdelat-telegram-mini-app</loc>
    <lastmod>2026-09-03</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <!--
    Хаб статей. changefreq monthly, а не weekly: страница меняется ровно тогда,
    когда выходит статья, и завышать частоту тут значит врать краулеру о том
    же, о чём врал протухший lastmod, только в другую сторону.
  -->
  <url>
    <loc>https://getmira.ru/stati</loc>
    <lastmod>2026-09-05</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <!--
    Юридических страниц здесь БОЛЬШЕ НЕТ — и это не забывчивость, а решение от
    20.09.2026. Пять адресов /legal стояли в карте по рассуждению «сайтмап,
    не перечисляющий живые краулящиеся страницы, — неполный сигнал». Замер Bing
    показал, во что это обошлось: домен проиндексирован ровно пятью адресами,
    ТРИ из них юридические, и 18 показов из 21 за полгода пришлись на папку
    /legal — для движка наш сайт стал сборником юридических документов, пока
    статья про предоплату и страница сравнения висели в «Discovered but not
    crawled». Внешняя ссылка на домен одна, обходов дают считаные единицы, и
    карта обязана тратить их на шесть контентных адресов.
    Сам запрет на индексацию даёт заголовок X-Robots-Tag: noindex на /legal и
    /legal/* (блок getmira.ru в infra/Caddyfile) — карта лишь перестаёт звать.
    Обход при этом РАЗРЕШЁН: в robots.txt /legal закрывать нельзя, иначе
    краулер не прочитает noindex и уже проиндексированные страницы останутся
    в индексе навсегда. Ссылки в подвале и в llms.txt тоже остаются: страницы
    обязаны быть доступны человеку и отдают 200.
    Гейт (scripts/tests/test-landing-dist.sh §9) это учитывает: он требует в
    карте каждую страницу КОРНЯ сборки, а адреса /legal из проверки «лишних»
    исключены явно.
  -->
</urlset>
