Технический SEO-аудит: что проверять
Системный чек-лист: как за один проход найти технические проблемы, которые мешают сайту в поиске.
Технический аудит — проверка сайта по уровням «доступность → индексируемость → разметка → производительность». Идём сверху вниз: бессмысленно чинить разметку у недоступной страницы.
Уровень 1: доступность
Может ли бот вообще получить страницу?
- Код ответа
200для рабочих страниц,404для несуществующих,301для переездов. Опасный антипаттерн — «soft 404»: страница ошибки отдаётся с кодом200. - Сайт работает по HTTPS, нет смешанного контента.
robots.txtне закрывает лишнего; нужные разделы доступны.- Нет длинных цепочек редиректов (A → B → C → D).
Уровень 2: индексируемость
- На индексируемых страницах нет случайного
<meta name="robots" content="noindex">. - У каждой страницы корректный
<link rel="canonical">, дубли схлопнуты. - Есть актуальный
sitemap.xmlбез 404 и редиректов внутри. - Важный контент присутствует в сыром HTML (или быстро рендерится).
Уровень 3: разметка и контент
- Уникальный осмысленный
<title>иmeta descriptionна каждой странице. - Ровно один
<h1>, логичная иерархияh2/h3. - У значимых картинок есть
alt. - Структурированные данные (JSON-LD) валидны.
Уровень 4: производительность и мобильность
- Core Web Vitals в зелёной зоне (LCP, CLS, INP).
- Адаптивная вёрстка, наличие
<meta name="viewport">.
Как работает под капотом: быстрый автоаудит
Часть проверок легко автоматизировать. Вот учебная функция, которая по «карте» страницы оценивает базовую SEO-гигиену — наглядно показывает, какие сигналы вообще проверяются:
def audit(page):
issues = []
if page["status"] != 200:
issues.append(f"код ответа {page['status']} (ожидался 200)")
if not page.get("title"):
issues.append("нет <title>")
elif len(page["title"]) > 60:
issues.append("title длиннее 60 символов")
if not page.get("description"):
issues.append("нет meta description")
if page.get("noindex"):
issues.append("страница закрыта noindex")
if page.get("h1_count", 0) != 1:
issues.append(f"h1 на странице: {page.get('h1_count', 0)} (нужен ровно 1)")
if not page.get("canonical"):
issues.append("нет canonical")
return issues
good = {"status": 200, "title": "Гайд по SEO", "description": "Описание...",
"noindex": False, "h1_count": 1, "canonical": "/seo"}
bad = {"status": 200, "title": "", "description": "",
"noindex": True, "h1_count": 3, "canonical": ""}
print("Хорошая страница:", audit(good) or "проблем нет")
print("Плохая страница:")
for i in audit(bad):
print(" -", i)
Вывод:
Хорошая страница: проблем нет Плохая страница: - нет <title> - нет meta description - страница закрыта noindex - h1 на странице: 3 (нужен ровно 1) - нет canonical
Частые ошибки
- Soft 404. Несуществующая страница отдаёт код 200 — бот считает её рабочей и засоряет индекс.
- Начинать с мелочей. Тюнинг alt-ов у картинок на странице, закрытой noindex, — пустая трата времени. Идите по уровням сверху вниз.
- Аудит одной страницы. Проблемы часто системные (шаблон, фреймворк). Проверяйте типовые шаблоны, а не один URL.
Итог
- Аудит идёт по уровням: доступность → индексируемость → разметка → производительность.
- Сначала чините блокеры (коды ответа, robots, noindex), потом разметку и скорость.
- Большинство проблем — в шаблонах; проверяйте типовые страницы, а не единичные URL.
Проверьте себя
1. Что такое «soft 404» и почему это плохо?
AСтраница 404 с красивым дизайном
BНесуществующая страница, отдающая код 200 — бот считает её рабочей и засоряет индекс
CРедирект с 404 на главную
DСтраница, которая грузится дольше 4 секунд
2. С чего начинать технический SEO-аудит?
AС тонкой настройки alt-атрибутов у картинок
BС проверки доступности: коды ответов, HTTPS, robots.txt, редиректы
CС анализа внешних ссылок
DС переписывания текстов под ключевые слова
3. Почему стоит проверять типовые шаблоны, а не единичные URL?
AЕдиничные URL нельзя открыть в браузере
BТехнические проблемы обычно системные — заложены в шаблоне или фреймворке
CGoogle индексирует только шаблоны
DТак быстрее заполнить sitemap