Что может пойти не так
Заголовки страниц формируются шаблонами: подставляется название товара, категории, города. При изменении шаблона или данных в них появляются пустые значения, повторы и служебные остатки вроде «{name}». Каждая такая ошибка повторяется на сотнях страниц, поэтому проверять нужно автоматически.
Правила проверки
| Правило | Что ловит | Действие |
|---|---|---|
| Пустой заголовок или описание | Ошибка шаблона или данных | Исправить немедленно |
| Дубль заголовка | Одинаковые title у разных страниц | Массовое исправление |
| Слишком короткий или длинный | Заголовок вне разумных пределов | Пересмотреть шаблон |
| Остатки шаблона | Символы фигурных скобок, слова вроде «null» | Исправить подстановку |
| Совпадение title и H1 дословно | Возможно, поле не заполнено отдельно | Оценить, нужно ли различие |
| Несколько тегов title | Ошибка вёрстки | Оставить один |
| Одинаковое описание у многих страниц | Общее описание на весь раздел | Сделать уникальным или убрать |
Скрипт проверки
import csv
from collections import Counter
rows = list(csv.DictReader(open("crawl.csv", newline="", encoding="utf-8")))
titles = Counter(r["title"].strip().lower() for r in rows if r["title"].strip())
for r in rows:
title = r["title"].strip()
problems = []
if not title:
problems.append("empty title")
elif len(title) < 20 or len(title) > 90:
problems.append("length %d" % len(title))
if "{" in title or "null" in title.lower():
problems.append("template leftovers")
if title and titles[title.lower()] > 1:
problems.append("duplicate")
if problems:
print(r["url"], problems)
Скрипт читает выгрузку краулера и печатает страницы с проблемными заголовками. Границы длины условные: подберите их по своему сайту. Те же проверки применяются к описаниям.
Как встроить в процесс
- Запускайте проверку после каждого обхода и сохраняйте число проблем по типам.
- Группируйте проблемы по шаблонам страниц: исправлять нужно шаблон, а не отдельные страницы.
- Договоритесь с разработчиками, что новые шаблоны проходят проверку до публикации.
- Добавьте число проблем на дашборд: дашборд технического состояния.
Качество важнее формальных правил. Скрипт находит ошибки, но не оценивает, привлекателен ли заголовок. Как писать заголовки — в статьях про заголовок под запрос и описание для статьи, а как формировать шаблоны для подборок — в статье про заголовки автоматических подборок.
Пример отчёта по шаблонам
| Шаблон | Проблема | Страниц | Исправление |
|---|---|---|---|
| Карточка товара | Остаток шаблона в заголовке | Много | Исправить подстановку |
| Категория | Одинаковое описание | Десятки | Сформировать описание из данных |
| Статья блога | Пустое описание | Единицы | Заполнить вручную |
| Страница фильтра | Заголовок слишком длинный | Много | Сократить шаблон |
Частые вопросы
Какие ошибки чаще всего находит автоматический контроль заголовков?
Пустые значения, дубли, слишком короткие или длинные заголовки и остатки шаблонов вроде фигурных скобок.
Почему исправлять нужно шаблоны, а не отдельные страницы?
Ошибка шаблона повторяется на сотнях страниц; исправив шаблон один раз, вы устраняете её везде.
Как часто запускать проверку?
После каждого обхода, обычно раз в неделю, и обязательно после изменений шаблонов.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.