Задача: Проработать микроразметку
Проработать микроразметку
Проработать и внедрить корректную Schema.org-разметку Person и связанный граф сущностей сайта с учётом рекомендаций Google Search.
Цель
Проработать микроразметку сайта так, чтобы поисковые системы могли однозначнее понимать, что сайт связан с конкретным человеком, и связывать эту сущность с подтверждёнными внешними профилями и публикациями.
Разметка сама по себе не создаёт авторитет и не гарантирует расширенный результат в Google, но помогает явно описать сущности и отношения между ними и может облегчать сопоставление уже существующих сигналов об одном и том же человеке.
Что проверить и спроектировать
Сейчас на сайте есть разметка WebSite. Нужно спроектировать полноценный граф Schema.org, в котором отдельной сущностью присутствует Person, а при необходимости WebSite, WebPage / ProfilePage, статьи и другие сущности ссылаются на неё через стабильный @id.
Отдельно проверить, подходит ли главная страница под ProfilePage. По документации Google ProfilePage уместен, когда основное содержание страницы посвящено одному человеку или организации. Если главная страница не является профильной по смыслу, Person всё равно можно описывать как отдельную сущность в общем JSON-LD-графе, не выдавая страницу за ProfilePage.
Назначение Person
Person описывает конкретного человека как отдельную сущность, а не просто строку с именем автора. Это позволяет:
- задавать устойчивый идентификатор сущности через
@id; - связывать автора с сайтом, страницами, публикациями и другими сущностями;
- указывать альтернативное имя / псевдоним;
- связывать человека с внешними страницами, которые однозначно идентифицируют ту же персону;
- уменьшать неоднозначность при совпадениях имён;
- формировать согласованный граф JSON-LD вместо набора несвязанных фрагментов разметки.
Поля Person, которые нужно рассмотреть
Базовые
@type: "Person"— тип сущности.@id— стабильный URI-идентификатор внутри графа, например URL сайта с fragment-идентификатором. Нужен для повторных ссылок на одну и ту же сущность из других узлов JSON-LD.name— основное имя человека. Google рекомендует использовать здесь реальное имя, если оно известно.alternateName— альтернативное имя, псевдоним, ник или другое устойчивое обозначение.url— канонический URL страницы/сайта, связанного с этой сущностью.image— изображение человека; может быть URL илиImageObject.description— краткое описание сущности.
Идентификация и устранение неоднозначности
sameAs— официальное свойство Schema.org, ожидающееURL. Используется для ссылок на внешние страницы, которые однозначно указывают на ту же сущность. Google отдельно рекомендует это поле для ссылок на другие внешние профили или домашние страницы профиля.- В
sameAsне следует добавлять любые упоминания, каталоги или тематические страницы. Нужны именно страницы, которые достаточно надёжно идентифицируют того же человека: подтверждённые профили, авторские страницы, Wikidata/Wikipedia и аналогичные источники, если они реально существуют и относятся к той же персоне. identifier— дополнительный идентификатор, если есть действительно устойчивый внешний идентификатор.mainEntityOfPage— можно использовать, когда конкретная страница в первую очередь описывает этого человека.disambiguatingDescription— короткое уточнение, если необходимо отличить человека от одноимённых персон.
Профессиональный контекст — только если данные действительно присутствуют на сайте
jobTitle— должность / профессиональная роль.worksFor— организация, в которой человек работает.affiliation— организация или сообщество, с которым человек связан.knowsAbout— темы компетенции; использовать осторожно и только для реально подтверждаемой информации.
Не нужно заполнять поля только ради полноты Schema.org. Разметка должна соответствовать видимому содержимому страницы и фактическим данным.
Связь с ProfilePage
Google поддерживает структурированные данные ProfilePage. Для такой страницы основной объект задаётся через mainEntity типа Person или Organization.
Если на сайте есть или будет отдельная страница «Обо мне» / профиль автора, рассмотреть структуру:
{
"@context": "https://schema.org",
"@type": "ProfilePage",
"mainEntity": {
"@id": "#person",
"@type": "Person",
"name": "..."
}
}
Если главная страница содержит много информации не только о человеке, не использовать ProfilePage механически только ради SEO.
sameAs: вывод по документации
Поле существует и является штатным свойством Schema.org (Thing.sameAs). Его смысл: URL страницы, которая однозначно указывает на идентичность той же сущности.
Google в документации по ProfilePage также указывает sameAs как рекомендуемое свойство для Person / Organization: URL других внешних профилей или домашних страниц профиля.
То есть использовать sameAs для подтверждённых внешних профилей корректно. Но нужно отдельно проверить каждый URL перед добавлением и не превращать массив в перечень всех внешних ссылок о человеке.
Реализация
- Выбрать стабильный
@idдляPerson. - Связать существующий
WebSiteс сущностьюPersonтам, где это семантически оправдано. - Проверить разметку страниц автора/публикаций и по возможности ссылать их
authorна тот же@id. - Не дублировать одну персону отдельными несвязанными объектами
Personна разных страницах. - Сформировать JSON-LD
@graph, если это упрощает связи междуWebSite,WebPage/ProfilePage,Person,Articleи другими сущностями. - Проверить итоговую разметку Schema Markup Validator и Google Rich Results Test там, где соответствующий тип поддерживается Google.
- Убедиться, что значения структурированных данных соответствуют видимому содержимому страницы и общим требованиям Google к structured data.
Ворклоги
Поискал через своего ИИ агента. Дал запрос:
Найди все ссылки на профиль Nikolay Lanets aka Fi1osof на всех известных ресурсах и дай мне этот список. Мне это надо для составления sameAs в микроразметке Person
Он выдал такую информацию:
Полный список профилей и ссылок для sameAs микроразметки Person
Вот все найденные ссылки на профили Nikolay Lanets (Fi1osof):
Основные профили:
- Личный сайт/портфолио: https://fi1osof.ru/
- Страница "О себе": https://fi1osof.ru/about
Разработка и код:
- GitHub (основной): https://github.com/Fi1osof
- GitHub (альтернативный логин): https://github.com/fi1osof
- GitHub Gists: https://gist.github.com/Fi1osof
- NPM (npmx.dev): https://npmx.dev/~fi1osof
- NPM пакеты: https://www.npmjs.com/package/@fi1osof/react-draft-wysiwyg
Социальные сети и сообщества:
- LinkedIn: https://www.linkedin.com/in/fi1osof
- Habr (русский): https://habr.com/ru/users/Fi1osof/
- Habr (English): https://habr.com/en/users/Fi1osof/
- Pikabu: https://pikabu.ru/@Fi1osof
Специализированные платформы:
- modx.pro (сообщество MODX): https://modx.pro/users/real-fi1osof
- market.dev (Ecosystem Directory): https://explore.market.dev/experts/Fi1osof
Web3 профили:
- Lens Protocol (Web3.bio): https://web3.bio/fi1osof.lens
- Lens.dev: fi1osof.lens
Проекты:
- haih-net на GitHub: https://github.com/haih-net/agent (основной контрибьютор)
- FreeCode.Academy: https://freecode.academy
- haih.net (социальная сеть): https://haih.net
- KMS-Agent: https://kms-agent.ai/
Код для sameAs в JSON-LD:
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Nikolay Lanets",
"alternateName": "Fi1osof",
"url": "https://fi1osof.ru",
"sameAs": [
"https://fi1osof.ru",
"https://fi1osof.ru/about",
"https://github.com/Fi1osof",
"https://github.com/fi1osof",
"https://www.linkedin.com/in/fi1osof",
"https://habr.com/ru/users/Fi1osof/",
"https://habr.com/en/users/Fi1osof/",
"https://pikabu.ru/@Fi1osof",
"https://modx.pro/users/real-fi1osof",
"https://explore.market.dev/experts/Fi1osof",
"https://web3.bio/fi1osof.lens",
"https://gist.github.com/Fi1osof",
"https://npmx.dev/~fi1osof",
"https://freecode.academy",
"https://haih.net"
]
}
Примечание: Telegram и Twitter не найдены напрямую, хотя в профилях есть ссылки на них. Если они есть, их можно добавить отдельно.
Удобненько :-)