Google использует сложный алгоритм для анализа DOM-структуры, чтобы отличить основной контент (статьи, посты) от шаблонных элементов (меню, виджеты). Система генерирует стабильный идентификатор (например, CSS-селектор) для контейнеров основного контента. Это позволяет системам индексирования и размещения рекламы точно находить и взаимодействовать с главным содержимым страницы.
Описание
Какую задачу решает
Патент решает фундаментальную проблему автоматического отделения основного контента (Primary Content), такого как статьи или посты, от шаблонных элементов или «boilerplate» (навигация, футеры, сайдбары, виджеты). Задача состоит в том, чтобы надежно идентифицировать основной контент и создать для него стабильный идентификатор (Stable Identifier). Это необходимо как для точного анализа содержимого страницы, так и для динамической вставки стороннего контента (например, рекламы) без ручной разметки.
Что запатентовано
Запатентована система для анализа структуры Document Object Model (DOM) веб-страницы с целью генерации Stable Identifier (например, CSS-селектора) для основного контента. Система использует набор правил, основанных на HTML-тегах, CSS-классах и характеристиках рендеринга, чтобы найти контейнеры контента, а затем выбирает наиболее надежный способ ссылки на них.
Как это работает
Механизм работает в несколько этапов:
- Обнаружение контента: Система ищет Content-related DOM nodes — узлы с текстом, которые не являются ссылками и соответствуют определенным критериям длины и рендеринга.
- Идентификация контейнеров: Определяются ближайшие родительские Container Nodes. Используются строгие правила, включающие тип тега (например, ARTICLE, DIV) и наличие «стабильных» CSS-классов.
- Генерация идентификаторов: Создаются потенциальные идентификаторы (селекторы) для этих контейнеров.
- Валидация и Скоринг: Идентификаторы проверяются на точность (указывают ли они только на нужные контейнеры). Рассчитывается Content Identification Score, измеряющий полноту охвата основного контента.
- Выбор: Идентификатор с наивысшей оценкой и лучшими характеристиками стабильности выбирается как Stable Identifier.
Актуальность для SEO
Высокая. Изоляция основного контента (boilerplate detection) остается критически важной задачей для поисковых систем на этапе рендеринга и индексирования. Это необходимо для точной оценки релевантности и качества контента (например, алгоритмами Helpful Content). Кроме того, технология актуальна для систем автоматического размещения рекламы (например, Google Auto Ads).
Важность для SEO
Патент имеет высокое значение для технического SEO (7.5/10). Он не описывает факторы ранжирования, но детально раскрывает механизмы, с помощью которых Google идентифицирует основной контент для последующей оценки. Понимание этих механизмов позволяет оптимизировать структуру HTML и CSS так, чтобы гарантировать корректную интерпретацию контента поисковой системой, что является необходимым условием для высокого ранжирования.
Детальный разбор
Термины и определения
- Container Node (Узел-контейнер)
- DOM-узел, оборачивающий основной контент. Определяется по строгим правилам: должен иметь определенный тег (например, ARTICLE или DIV со стабильным классом) И структурные признаки (например, начинаться с заголовка или иметь класс ‘post’).
- Content Identification Score (Оценка идентификации контента)
- Метрика для выбора лучшего идентификатора. Показывает, насколько полно идентификатор охватывает основной контент страницы. Рассчитывается на основе количества символов и параграфов.
- Content-related DOM node (DOM-узел, связанный с контентом)
- Узел, вероятно содержащий основной контент. Определяется по политике: должен быть Effective Text Node, не быть ссылкой, содержать достаточно символов и соответствовать критериям рендеринга.
- Effective Link Node (Эффективный узел-ссылка)
- Текстовый узел, являющийся потомком тега <A>. Система старается исключить такие узлы из основного контента.
- Effective Text Node (Эффективный текстовый узел)
- Текстовый узел, содержащий видимый текст.
- Primary Content (Основной контент)
- Основное содержимое страницы (статьи, посты), которое система стремится идентифицировать.
- Stable Class Name / Stable ID (Стабильное имя класса / Стабильный ID)
- Имя класса или ID, которое считается надежным. В патенте используется правило: идентификатор стабилен, если он НЕ заканчивается на число.
- Stable Identifier (Стабильный идентификатор)
- Конечный результат работы системы. Идентификатор (например, CSS-селектор), который надежно и точно указывает на Container Nodes основного контента.
- Title (Заголовок)
- Эффективный текстовый узел, связанный с тегом заголовка (H1-H6).
Ключевые утверждения (Анализ Claims)
Claim 1 (Независимый пункт): Описывает основной метод генерации стабильного идентификатора.
- Идентификация Content-related DOM nodes на основе политики обнаружения.
- Определение Container Nodes, содержащих эти узлы.
- Генерация идентификаторов для каждого Container Node.
- Определение соответствия: проверка, каким узлам на странице соответствует каждый идентификатор.
- Валидация (Идентификация подмножества): выбор только тех идентификаторов, которые соответствуют ИСКЛЮЧИТЕЛЬНО контейнерам основного контента.
- Расчет Content Identification Score для каждого валидного идентификатора на основе измерения текстовых данных.
- Выбор одного идентификатора как Stable Identifier на основе этой оценки.
- Указана цель: использование для вставки стороннего контента (third-party content, например, рекламы).
Claim 3 (Зависимый от 2): Детализирует строгие критерии для определения Container Node. Это ключевой пункт для SEO.
Узел идентифицируется как контейнер, если он удовлетворяет двум наборам критериев (Критерий А И Критерий Б):
- Критерий А (Структура/Семантика): Узел ЛИБО (i) начинается с заголовка (Title), ЛИБО (ii) является членом CSS-класса, указывающего, что это пост (например, ‘post’).
- Критерий Б (Теги/Атрибуты): Узел ЛИБО (i) имеет тег ARTICLE, ЛИБО (ii) имеет тег DIV, INS или TD И имеет хотя бы одно Stable Class Name.
Claims 5, 6, 7 (Зависимые от 1): Детализируют расчет Content Identification Score.
Оценка основывается на различных соотношениях количества контента (символов или параграфов) внутри контейнеров, соответствующих идентификатору, к общему количеству контента на странице или внутри самих контейнеров.
Где и как применяется
Изобретение применяется на этапе анализа структуры страницы после ее рендеринга.
INDEXING – Индексирование и извлечение признаков
Это основной этап применения. В процессе рендеринга (например, Web Rendering Service) система строит DOM-дерево и анализирует его.
- Анализ структуры (Layout Analysis / Boilerplate Detection): Описанный механизм используется для отделения основного контента от шаблонных элементов.
- Извлечение признаков (Feature Extraction): Изоляция Primary Content позволяет системам индексирования сфокусироваться на нем при оценке качества и релевантности.
Другие системы (AdTech)
Как указано в патенте, сгенерированный Stable Identifier используется для динамической вставки стороннего контента (рекламы) при отображении страницы пользователю.
Входные данные:
- Рендеренное DOM-дерево страницы.
- CSS правила и атрибуты узлов (классы, ID).
- Данные рендеринга (видимость текста, высота узлов, высота строки текста).
Выходные данные:
- Stable Identifier (например, CSS-селектор), указывающий на контейнеры основного контента.
На что влияет
- Конкретные типы контента: Наибольшее влияние на структурированный контент: статьи, блоги (списки постов), новостные ленты.
- Техническая реализация: Подчеркивает важность семантической верстки (HTML5) и использования стабильных, консистентных CSS-селекторов. Влияет на интерпретацию сайтов, использующих сложные DOM-структуры.
Когда применяется
- Триггеры активации: Алгоритм применяется при обработке информационного ресурса (во время индексирования или анализа для вставки рекламы), когда необходимо определить его структуру и выделить основной контент.
Пошаговый алгоритм
Фаза 1: Обнаружение контента и контейнеров
- Идентификация контент-узлов: Анализ DOM для поиска Content-related DOM nodes. Правила: узел должен быть Effective Text Node (видимый текст), не быть Effective Link Node (не ссылка), превышать порог по символам, и соответствовать критериям высоты рендеринга или следовать за заголовком (Title).
- Определение контейнерных узлов: Для каждого контент-узла находится ближайший родительский Container Node. Применяются правила из Claim 3 (Теги: ARTICLE или DIV/INS/TD + Stable Class Name; И Структура: начинается с Title или имеет класс типа ‘post’).
- Составление списка контейнеров: Создание дедуплицированного списка всех идентифицированных контейнеров.
Фаза 2: Генерация и выбор идентификатора
- Генерация кандидатов: Для каждого контейнера генерируются идентификаторы на основе его тега, стабильного ID и стабильных классов.
- Сортировка по предпочтениям (Preference Policy): Идентификаторы сортируются. Приоритет: Только Тег (например, ARTICLE) > Тег+ID > Тег+Класс. Внутри классов приоритет отдается семантическим именам (‘post-container’ > ‘post’) или более длинным именам.
- Валидация идентификаторов (Специфичность): Каждый идентификатор проверяется по всему DOM. Если он указывает на узел, который НЕ находится в списке контейнеров основного контента (Шаг 3), он отбрасывается.
- Расчет Оценки (Покрытие): Для оставшихся идентификаторов рассчитывается Content Identification Score. Оценка измеряет, какую долю всего основного контента страницы покрывает идентификатор.
- Выбор Стабильного Идентификатора: Выбирается идентификатор с максимальным Content Identification Score.
Какие данные и как использует
Данные на входе
Система использует исключительно данные, доступные при анализе структуры и рендеринга страницы.
- Структурные и Технические факторы:
- Структура DOM-дерева.
- HTML-теги. Явно упомянуты: ARTICLE, DIV, INS, TD, H1—H6, A, P.
- Атрибуты узлов: class (CSS-классы) и id.
- Контентные факторы:
- Текст внутри узлов (видимый текст).
- Количество символов.
- Данные Рендеринга (Визуальные факторы):
- Рендеренная высота узла.
- Высота строки текста.
Какие метрики используются и как они считаются
- Stable Class Name / Stable ID (Проверка стабильности): Алгоритмическое определение. Правило: идентификатор стабилен, если он не заканчивается цифрой. В патенте упоминается регулярное выражение: /^.*[0-9]+$/.
- Preference Policy (Политика предпочтений): Иерархия для сортировки идентификаторов (см. Алгоритм, Шаг 5).
- Content Identification Score (S): Ключевая метрика для выбора лучшего идентификатора. В патенте приводится формула (в Description):
S = (C_PARA / C_TOTAL) + k1 * (P_CONTAINED / P_TOTAL) + K2 * (D_CONTAINED / D_TOTAL)
Где учитываются соотношения символов в параграфах (C_PARA, D_CONTAINED) и количества параграфов (P_CONTAINED) внутри контейнеров, покрытых идентификатором, к общим значениям на странице (P_TOTAL, D_TOTAL) или внутри контейнера (C_TOTAL). k1, K2 — весовые коэффициенты.
Выводы
- Google обладает продвинутыми методами анализа DOM: Патент демонстрирует детальный алгоритм изоляции основного контента, основанный на комбинации структурных (теги, иерархия), семантических (классы типа ‘post’, теги ARTICLE) и рендеринговых (высота блока) сигналов.
- Семантическая верстка критически важна: Система явно предпочитает семантические сигналы. Тег ARTICLE является приоритетным способом идентификации контейнера контента.
- Требования к стабильности кода: Система алгоритмически оценивает «стабильность» CSS-классов и ID, отбрасывая те, которые заканчиваются на число. Это важно для надежной идентификации контента и создает проблемы для некоторых динамических фреймворков.
- Структура контента имеет значение: Наличие заголовков (H1-H6) в начале блока контента является важным критерием для его идентификации как Container Node.
- Точность и Полнота (Precision/Recall): Алгоритм включает строгую валидацию (Precision), чтобы идентификатор не захватывал лишнего, и использует Content Identification Score (Recall), чтобы максимизировать охват основного контента.
Практика
Best practices (это мы делаем)
- Использовать семантический HTML5, особенно <ARTICLE>: Оборачивайте посты, статьи и другие самодостаточные блоки контента в тег <ARTICLE>. Это наиболее предпочтительный идентификатор для Container Node согласно патенту.
- Применять стабильные и осмысленные CSS-классы: Используйте консистентные классы для основного контента, которые НЕ заканчиваются числами (например, .post-content, .story-body). Используйте классы типа .post, так как они явно упомянуты в патенте как индикаторы контента.
- Обеспечить логичную структуру заголовков: Убедитесь, что блоки основного контента начинаются с корректного заголовка (H1-H6). Наличие Title является одним из критериев идентификации контейнера.
- Поддерживать чистоту основного контента: Убедитесь, что контейнер основного контента содержит преимущественно текст (Effective Text Nodes), а не смесь контента с навигационными ссылками (Effective Link Nodes) или виджетами. Это повысит Content Identification Score.
Worst practices (это делать не надо)
- Использование динамических или пронумерованных классов для MC: Избегайте классов вида .block-123 или рандомизированных классов (часто в CSS-in-JS) для основного контента. Они будут классифицированы как нестабильные (Unstable) и проигнорированы.
- Использование несемантической верстки («Div-суп») без четких идентификаторов: Построение страницы на <DIV> без стабильных, осмысленных классов усложняет изоляцию основного контента.
- Смешивание основного и дополнительного контента в одном контейнере: Если один и тот же класс используется для основного контента и для сайдбара, система отбросит этот идентификатор на этапе валидации.
- Размещение заголовков вне контейнера контента: Если заголовок H1 находится вне основного DIV или ARTICLE с текстом, система может не распознать этот блок как Container Node.
Стратегическое значение
Патент подтверждает стратегическую важность технического SEO и качественной фронтенд-архитектуры. Способность Google программно отделять сигнал (основной контент) от шума (boilerplate) является фундаментом для всех алгоритмов оценки качества контента. Хорошо структурированный сайт с чистым, семантическим кодом и стабильными селекторами позволяет Google более эффективно и точно изолировать и оценивать основной контент.
Практические примеры
Сценарий 1: Оптимизация структуры блога
- Ситуация (Плохо): Лента блога использует <div class=»item-1″>, <div class=»item-2″>.
- Анализ по патенту: Классы нестабильны (заканчиваются на число). Система не сможет сгенерировать Stable Identifier.
- Действие (Хорошо): Изменить верстку на <article class=»post-excerpt»><h2>Title</h2>…</article>.
- Результат: Используется тег ARTICLE, стабильный класс post-excerpt, и структура начинается с заголовка. Система легко идентифицирует контент.
Сценарий 2: Проблемы с CSS-in-JS фреймворком
- Ситуация (Плохо): Фреймворк генерирует рандомизированные классы для контейнера статьи: <div class=»aB3xZ9″>.
- Анализ по патенту: Класс неинформативен. Система не сможет сгенерировать надежный идентификатор, если не используется <article>.
- Действие (Хорошо): Настроить фреймворк так, чтобы он добавлял стабильный семантический класс: <div class=»story-body aB3xZ9″>.
- Результат: Система может использовать DIV.story-body как Stable Identifier.
Вопросы и ответы
Что такое «стабильное имя класса» (Stable Class Name) или ID согласно патенту?
Это имя класса или ID, которое НЕ заканчивается цифрой. Например, .post-content считается стабильным, а .post-123 — нет. Google считает, что идентификаторы, заканчивающиеся цифрами, часто генерируются динамически и не являются надежными для долгосрочной идентификации структуры контента.
Поможет ли использование HTML5 тега <ARTICLE> улучшить понимание контента Google?
Да, однозначно. Патент явно выделяет тег <ARTICLE> как один из ключевых и предпочтительных критериев для определения контейнера основного контента (Container Node). Использование этого тега значительно упрощает системе задачу идентификации статей или постов.
Как система определяет, что является основным контентом (Primary Content)?
Система ищет текстовые узлы (Effective Text Node), которые удовлетворяют нескольким условиям: содержат видимый текст, не являются ссылками (Effective Link Node), имеют достаточную длину и часто следуют за заголовками (H1-H6). По сути, система ищет содержательные абзацы текста.
Как наличие заголовков (H1-H6) влияет на идентификацию контента?
Наличие заголовков критически важно. Одно из обязательных условий для идентификации блока как Container Node — это то, что он должен начинаться с заголовка (Title) ИЛИ принадлежать к специфическому классу (например, ‘post’). Использование корректной иерархии заголовков напрямую помогает системе определить структуру контента.
Влияет ли этот патент на ранжирование напрямую?
Патент не описывает алгоритм ранжирования. Он описывает механизм идентификации и извлечения основного контента на этапе индексирования. Однако точное определение основного контента является необходимым условием для его последующей оценки алгоритмами качества. Если система не может идентифицировать основной контент, она не сможет его корректно оценить.
Как этот патент влияет на сайты, использующие JavaScript-фреймворки и CSS-in-JS?
Влияние значительно. Если фреймворк генерирует несемантическую структуру или использует автосгенерированные/обфусцированные CSS-классы для контейнеров основного контента, системе будет сложно сгенерировать Stable Identifier. Необходимо обеспечить наличие семантических тегов (ARTICLE) или стабильных классов для основного контента.
Что система предпочитает для идентификации: ID или класс?
Система имеет политику предпочтений (Preference Policy). Наиболее предпочтителен простой тег (например, ARTICLE). Далее идет комбинация Тег + ID (если ID стабилен). Комбинация Тег + Класс используется, если первые два варианта недоступны или неточны.
Учитывает ли система визуальное расположение элементов (layout)?
Да. Патент явно упоминает использование данных рендеринга. Для идентификации узлов контента проверяется видимость текста (visible text) и рендеренная высота узла (rendered height) по отношению к высоте строки текста. Это указывает на то, что анализ происходит после рендеринга.
Какова основная цель этой технологии, согласно патенту?
Хотя технология критична для индексирования, в самом патенте (в частности, в Claim 1) явно указано, что идентификация основного контента используется для вставки стороннего контента (third-party content), например, рекламы. Это подтверждает ее применение в системах типа Google Auto Ads.
Как рассчитывается Content Identification Score?
Это метрика, показывающая, насколько хорошо идентификатор выделяет контент. Она рассчитывается по формуле, которая учитывает долю основного контента страницы (в символах и параграфах), которую покрывают контейнеры, найденные этим идентификатором. Чем выше оценка, тем лучше идентификатор.