SEO-оптимизация сайта: чек-лист на 60 пунктов
Пять блоков проверок с нормами и способом проверить каждый пункт самому. Порядок не случайный: первые двенадцать пунктов обнуляют все остальные, если не выполнены.
Коротко. SEO-оптимизация сайта проверяется пятью блоками: доступность и индексация (12 пунктов), структура и адреса (10), содержание (14), техника и скорость (12), коммерческие сигналы и разметка (12). Порядок обязателен: пока страница недоступна роботу или отсутствует в карте сайта, остальные сорок восемь пунктов не имеют значения. Полная проверка небольшого сайта занимает 4–6 часов и не требует платных сервисов.
Списков проверок в интернете много, и большинство из них бесполезны по одной причине: пункты в них равнозначны. «Проверьте заголовок» стоит рядом с «проверьте, доступен ли сайт роботу», хотя второе отменяет первое.
Здесь порядок имеет значение. Блоки идут от того, что обнуляет всё остальное, к тому, что даёт прирост на полпроцента. Если времени мало, делайте первые два блока и останавливайтесь — они дают около 70 процентов эффекта.
Как пользоваться этим списком
В каждой таблице три колонки: что проверяем, как проверить и какая норма. Проверки подобраны так, чтобы обходиться штатными средствами — панелью вебмастера, счётчиком, исходным кодом страницы и браузером. Платные сервисы ускоряют работу, но ни один пункт без них не становится непроверяемым.
Полный проход по сайту на 20–50 страниц занимает 4–6 часов у человека, который делает это впервые, и около полутора часов у того, кто делал раньше. Разумно проходить список раз в квартал и обязательно — после любых работ с шаблоном сайта.
Пометка «критично» в норме означает, что невыполнение пункта не ухудшает результат, а обнуляет его для конкретной страницы. Таких пунктов в списке одиннадцать, и все они в первых двух блоках.
Доступность и индексация — 12 пунктов
| № | Что проверяем | Как проверить | Норма |
|---|---|---|---|
| 1 | Сайт отдаёт код 200 | открыть 10 случайных адресов | критично, 200 у всех |
| 2 | Нужные разделы не закрыты в robots.txt | сайт.ру/robots.txt | критично |
| 3 | Нет запрета индексации в коде | поиск «noindex» в исходном коде | критично |
| 4 | Карта сайта существует и открывается | сайт.ру/sitemap.xml | критично |
| 5 | Все нужные страницы есть в карте | сверить число адресов с числом страниц | расхождение 0 |
| 6 | Карта обновляется после публикации | дата файла и новая страница в нём | обновление за сутки |
| 7 | Страницы в индексе обеих систем | панели вебмастера | от 90% нужных |
| 8 | Нет дублей по адресам с www и без | открыть оба варианта | 301 на один |
| 9 | Нет дублей со слешем и без | открыть оба варианта | 301 на один |
| 10 | HTTPS работает и не смешан с HTTP | замок в адресной строке | критично |
| 11 | Служебные страницы закрыты от обхода | корзина, поиск, фильтры | закрыты |
| 12 | Роботы ИИ-ассистентов не заблокированы | robots.txt на запреты по имени | открыты |
Пункты 4–6 выглядят формальными и таковыми не являются. На нашем собственном сайте карта сайта отдавалась из файлового кэша, который перестал обновляться первого сентября: двадцать статей блога и коммерческая страница в неё не попали вовсе. Для одной из двух крупных поисковых систем их просто не существовало, при том что все они были опубликованы и открыты.
Пункт 11 про служебные страницы важен для сайтов с каталогом: если фильтры порождают тысячи адресов, робот тратит на них своё ограниченное время и до полезных страниц может не дойти.
Структура и адреса — 10 пунктов
| № | Что проверяем | Как проверить | Норма |
|---|---|---|---|
| 13 | Под каждый частотный запрос есть страница | сопоставить список запросов и страниц | критично |
| 14 | Тип страницы совпадает с намерением | купить → услуга, узнать → статья | критично |
| 15 | Две страницы не борются за один запрос | поиск по сайту с этой фразой | 1 страница на запрос |
| 16 | Адреса читаемые и на латинице | посмотреть строку браузера | без цифр и мусора |
| 17 | Вложенность не глубже трёх уровней | посчитать слеши в адресе | до 3 |
| 18 | С главной можно дойти до любой страницы | кликами, за 3 шага | до 3 кликов |
| 19 | Есть хлебные крошки | визуально на внутренней странице | на всех, кроме главной |
| 20 | Внутренние ссылки между близкими страницами | 2–5 ссылок в теле текста | от 2 |
| 21 | Нет битых ссылок и якорей | пройти по меню и оглавлениям | 0 битых |
| 22 | Нет страниц-сирот без входящих ссылок | сверить карту сайта и меню | 0 сирот |
Пункт 13 — самый результативный во всём списке. Отсутствие подходящей страницы объясняет большинство случаев «мы всё оптимизировали, а роста нет»: оптимизировать нечего, если под запрос на сайте нет ничего подходящего.
Пункт 21 стоит проверять руками, а не сервисом. Битые якори внутри страницы — ссылки из оглавления на разделы, которых больше нет, — сервисы часто не ловят: формально ссылка ведёт на существующую страницу. Мы нашли у себя три таких: два появились после того, как разделы статьи слили в один, а оглавление поправить забыли, третий — из-за якоря, где половина слова осталась кириллицей.
Содержание страницы — 14 пунктов
| № | Что проверяем | Как проверить | Норма |
|---|---|---|---|
| 23 | Заголовок окна уникален на сайте | сравнить у 10 страниц | все разные |
| 24 | Длина заголовка окна | посчитать знаки | 50–65 знаков |
| 25 | Описание страницы заполнено | исходный код, тег description | 120–160 знаков |
| 26 | Один H1 на страницу | поиск «<h1» в коде | ровно 1 |
| 27 | Заголовки идут по уровням без пропусков | H2 после H1, H3 после H2 | без разрывов |
| 28 | Объём текста достаточен для темы | посчитать знаки | от 3 000 на статью |
| 29 | Нет переспама ключевой фразой | посчитать вхождения | до 3% от слов |
| 30 | Есть конкретика: цифры, сроки, суммы | доля абзацев с числами | от 25% |
| 31 | Абзацы читаются отдельно от текста | прочесть случайный абзац | 200–500 знаков |
| 32 | Есть блок вопросов и ответов | визуально внизу страницы | от 6 вопросов |
| 33 | Текст не дублирует другие страницы | поиск куска фразы в кавычках | уникален |
| 34 | У картинок заполнен alt | исходный код | у всех смысловых |
| 35 | Дата публикации совпадает с реальной | сверить с датой в системе | без расхождений |
| 36 | Текст в коде, а не рисуется скриптом | поиск фразы в исходном коде | критично |
Пункт 35 кажется мелочью до тех пор, пока не выяснится, что подпись под статьёй показывает завтрашнее число. У нас так получилось на четырнадцати материалах: график публикаций был расписан на день вперёд относительно реального выхода. Разметка при этом отдавала верную дату, а человек видел расхождение.
Пункты 30–32 работают не только на поиск, но и на попадание в ответы нейросетей: ассистент оценивает отдельный фрагмент вне контекста страницы, и абзац с конкретной цифрой выигрывает у абзаца с общими словами. Подробнее — в статье про продвижение в ИИ-поиске.
Техника и скорость — 12 пунктов
| № | Что проверяем | Как проверить | Норма |
|---|---|---|---|
| 37 | Скорость отдачи на телефоне | открыть на мобильной сети | до 3 секунд |
| 38 | Вёрстка не прыгает при загрузке | смотреть на первый экран | без сдвигов |
| 39 | Картинки сжаты | вес файла в панели браузера | до 400 КБ |
| 40 | У картинок заданы размеры | атрибуты width и height | у всех |
| 41 | Отложенная загрузка нижних картинок | атрибут loading | lazy ниже экрана |
| 42 | Нет горизонтальной прокрутки | ширина экрана 360 пикселей | отсутствует |
| 43 | Шрифт читается на телефоне | измерить кегль | от 16 пикселей |
| 44 | Кнопки нажимаются пальцем | размер области нажатия | от 44 пикселей |
| 45 | Нет ошибок в консоли браузера | панель разработчика | 0 красных |
| 46 | Формы работают на телефоне | отправить заявку с телефона | доходит |
| 47 | Кэш чистится после правок | открыть в режиме инкогнито | видны свежие правки |
| 48 | Счётчик стоит на всех страницах | исходный код 5 страниц | на всех |
Пункт 46 стоит проверять лично и с реального телефона, а не с эмулятора. Неработающая форма — самая дорогая поломка на сайте: трафик идёт, деньги за него уплачены, а обращений нет, и обнаруживается это обычно через неделю.
Коммерческие сигналы и разметка — 12 пунктов
| № | Что проверяем | Как проверить | Норма |
|---|---|---|---|
| 49 | Цены или вилка указаны | визуально на странице услуги | есть |
| 50 | Телефон виден на первом экране | открыть страницу | без прокрутки |
| 51 | Адрес и режим работы указаны | подвал или контакты | есть |
| 52 | Реквизиты юрлица опубликованы | страница контактов | ИНН и ОГРН |
| 53 | Есть страница о компании | меню сайта | от 2 000 знаков |
| 54 | Политика обработки данных опубликована | ссылка в подвале | критично |
| 55 | Согласия в формах не отмечены заранее | открыть форму | пустые галочки |
| 56 | Разметка организации на сайте | исходный код, JSON-LD | есть |
| 57 | Разметка статьи на материалах блога | исходный код | есть |
| 58 | Разметка вопросов и ответов | исходный код | на страницах с FAQ |
| 59 | Карточка в справочниках заполнена | найти компанию в картах | с фото и часами |
| 60 | Данные совпадают везде | сверить телефон и адрес | совпадают |
Пункт 55 — не про поиск, а про закон: заранее отмеченная галочка согласия не считается надлежащим согласием ни по закону о персональных данных, ни по закону о рекламе. Штраф здесь дороже любой потери позиций.
Пункты 59–60 обычно делают в последнюю очередь, а стоило бы в первую: карточка в справочниках с совпадающими данными даёт видимость в местном поиске быстрее, чем месяцы работы над сайтом. Что из перечисленного даёт наибольший вес — в статье про факторы, влияющие на позиции, а наш подход к работам — на странице SEO и GEO-продвижения.