logo

Зачем это надо было Link to heading

Блог — это не только для людей. Всё больше контента потребляют нейросети, поисковые боты и автономные агенты. Обычный блог им “читаем”, но без структуры теряется контекст: кто автор, когда опубликовано, о чём пост, есть ли превью-картинка да и для SEO говорят в наше время полезно.

Раньше у меня в большинстве постов поле description было пустым, не было машинно-читаемой разметки. Агент, открывший страницу, видел кашу из заголовка и куска текста без понимания что это вообще статья.

Что сделано Link to heading

1. JSON-LD разметка (schema.org) Link to heading

Добавил структурированные данные прямо в <head> каждой страницы. Для постов — тип BlogPosting (через layouts/posts/single.html, блок head), для страниц типа «О себе» и «CV» — WebPage (через layouts/partials/head/custom-icons.html).

Что внутри:

  • headline — заголовок
  • description — описание (берётся из фронтматтера или автогенерится из текста)
  • datePublished / dateModified — даты
  • author / publisher — кто написал, кто публикует
  • image — логотип поста
  • url — каноническая ссылка

Пример для поста:

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "YouTube MCP: скачиваем видео и вшиваем субтитры",
  "description": "Я запилил эмсипи-сервер для оупенкода...",
  "datePublished": "2026-07-01T18:00:00+05:00",
  "author": [{ "@type": "Person", "name": "Maxim S. Tatarinov" }]
}

2. Open Graph и Twitter Cards Link to heading

Раньше тема (hugo-coder) генерила базовые OG-теги, но с пустыми описаниями они были бесполезны. Теперь:

  • og:title, og:description, og:type, og:image — заполняются автоматически
  • article:published_time, article:author, article:tag — для статей
  • twitter:card = summary_large_image с логотипом поста (крупная картинка-превью)

Логотип поста (/images/posts/<slug>/logo.webp) подхватывается из контента автоматически через регулярку — руками ничего прописывать не надо.

3. Чистка дублей Link to heading

Тема дёргала внутренние шаблоны Hugo (_internal/opengraph.html, _internal/twitter_cards.html), которые дублировали мои OG-теги. Отключил их в override layouts/partials/head/meta-tags.html для постов (чтобы не было двух og:* подряд), а custom-icons.html генерирует OG/Twitter для всех страниц. JSON-LD для постов живёт в layouts/posts/single.html (блок head), для about/cv — в custom-icons.html.

4. Архетип и контент Link to heading

  • Обновил archetypes/default.md — новые посты сразу получают description, tags, categories по умолчанию
  • Прогнал все ~70 старых постов и заполнил им description из первых абзацев
  • Добавил описания на страницы about и cv

Какие преимущества Link to heading

  1. Лучшее понимание агентами. Языковая модель, получившая ссылку на пост, видит чёткую структуру: что это статья, кто автор, о чём, когда вышла. Меньше галлюцинаций при пересказе.
  2. Красивые превью при шаринге. В чатах, соцсетях и MCP-инструментах посты теперь показывают картинку и описание, а не пустоту.
  3. SEO. JSON-LD — стандарт для поисковиков. Google и Bing лучше индексируют структурированный контент.
  4. Будущее-proof. Если завтра появится новый агент или протокол, читающий schema.org — блог уже готов.
  5. Единообразие. Все посты теперь имеют описания, картинки и метаданные по одному шаблону.

Как проверить Link to heading

Собрать и глянуть исходники:

hugo --minify
grep -A 20 'ld+json' public/posts/<slug>/index.html

Или открыть любой пост и найти в <head> блок <script type="application/ld+json">.

Итог Link to heading

Блог стал не просто «сайтом для людей», а машинно-читаемым ресурсом. Агенты, боты и нейросети теперь получают контекст сразу.