Structured Data и машиночитаемость «Матчасти»
Как превратить внутренний Entity Graph в понятные поисковикам и внешним системам страницы: JSON-LD, Organization, Person, Article, NewsArticle, Dataset, BreadcrumbList, WebSite, mainEntity, sameAs, идентификаторы, авторство и provenance. Документ отделяет внутреннюю модель данных от экспортной Schema.org-проекции и фиксирует правила, при которых разметка остаётся честной и поддерживаемой.
1. Главное решение
2. Structured data не является SEO-магией
Google прямо указывает: structured data помогает понять содержание страницы и может сделать страницу eligible для расширенного отображения, но даже корректная разметка не гарантирует rich result. Яндекс также сообщает, что Schema.org может использоваться полностью или частично и не гарантирует показ размеченной информации в выдаче.
3. Формат: JSON-LD
Google поддерживает JSON-LD, Microdata и RDFa и рекомендует JSON-LD. Яндекс также умеет обрабатывать JSON-LD для ряда сценариев и предоставляет валидатор. Для «Матчасти» выбираем JSON-LD как единственный основной формат, чтобы не размазывать semantic logic по HTML-шаблонам.
| Формат | Решение | Почему |
|---|---|---|
| JSON-LD | Основной | Отделяется от presentation layer, удобно генерировать из Entity Graph, хорошо тестируется. |
| Microdata | Не основной | Слишком тесно связывает данные с HTML-разметкой. |
| RDFa | Не основной | Нет отдельной пользы для нашего MVP. |
4. Главный quality rule: видимый контент и JSON-LD совпадают
Google запрещает misleading structured data и разметку контента, скрытого от пользователя. Если в JSON-LD указано «500 сотрудников», но на странице этого факта нет или он не подтверждён, мы создаём ненужный риск.
5. Один reusable semantic graph на странице
Это проектная архитектура JSON-LD. Она упрощает consistency и повторное использование объектов.
6. Стабильные @id
| Entity | @id pattern |
|---|---|
| Mathchast publisher | https://mathchast.com/#publisher |
| WebSite | https://mathchast.com/#website |
| Company entity | https://mathchast.com/companies/acme#entity |
| Person | https://mathchast.com/experts/ivan#person |
| Article | https://mathchast.com/articles/x#article |
| WebPage | https://mathchast.com/articles/x#webpage |
7. Главная страница: WebSite
Google использует WebSite structured data на главной странице как главный сигнал предпочтительного site name. Для mathchast.com:
Google отдельно отмечает, что WebSite site-name markup размещается на доменной главной странице, а не на каждом внутреннем URL.
8. Издатель «Матчасть»: Organization
Google рекомендует Organization markup на home/about page самой организации, чтобы лучше понять административные данные и disambiguate организацию. Это подходящий use case для самой «Матчасти» как издателя.
9. Company pages: важный нюанс
Для внешней company page базовая схема:
10. Company page example
Это проектный пример «Матчасти», не готовая универсальная рекомендация Google для любого каталога.
11. Brand и Legal Entity не смешивать
Schema.org имеет отдельный тип Brand. Если публичная страница описывает бренд, а не конкретное юрлицо, structured data должно следовать смыслу внутренней entity.
12. sameAs: только идентичность
Schema.org определяет sameAs как URL страницы, которая однозначно указывает на тот же объект. Это не «любая ссылка, где нас упомянули».
| URL | sameAs? |
|---|---|
| Официальный verified профиль компании в авторитетном сервисе | Да |
| Wikidata entity той же компании | Да |
| Официальная социальная страница | Да |
| Статья в СМИ о компании | Нет |
| Кейс партнёра с упоминанием компании | Нет |
| Случайный каталог с похожим названием | Нет |
13. identifier
Schema.org поддерживает общий identifier, а Google Organization documentation также распознаёт конкретные administrative identifiers вроде taxID и iso6523Code. Внутренняя таблица identifiers документа 19 должна маппиться только в соответствующие публичные свойства.
14. Экспертные страницы: ProfilePage только для подходящего use case
Google говорит, что ProfilePage предназначен для сайтов, где creator — человек или организация — публикует first-hand perspectives. В качестве неподходящего примера Google прямо приводит review site с организацией, не связанной с сайтом.
| Страница | Markup |
|---|---|
| Эксперт публикует колонки на «Матчасти», есть author activity | ProfilePage + mainEntity: Person |
| Эксперт только упомянут в базе, не создаёт контент на площадке | WebPage + mainEntity: Person |
| Обычная внешняя company-directory page | Не использовать Google ProfilePage автоматически |
15. Person
Исторические employment relations во внутреннем graph богаче, чем Schema.org markup. В JSON-LD выводим только корректное и понятное текущему page context представление.
16. Article family
Google поддерживает Article, NewsArticle и BlogPosting. Разметка может помочь Google понять заголовок, изображения, даты и автора.
| Mathchast type | Schema |
|---|---|
| Обычный разбор / экспертная статья | Article |
| Новость | NewsArticle |
| Кейс | Article + structured internal case relations |
| Интервью | Article |
| Research article без downloadable dataset | Article |
| Research page с реальным dataset | Article + Dataset object |
17. CaseStudy как внутренний тип, а не выдуманная Google-схема
@type: "CaseStudy", если такого типа нет в используемом словаре/поддерживаемой модели. Внутри CMS кейс остаётся отдельным content type, а наружу маппится на валидный Article и связанные Organization entities.18. Article core fields
19. Авторство
Google рекомендует включать всех видимых авторов, каждого отдельно; указывать корректный type Person/Organization и по возможности URL или sameAs. В author.name должно быть именно имя автора, а не должность, издатель или «написано экспертом».
20. Publisher
Коммерческий advertiser/sponsor не должен подменять publisher. Он хранится отдельной relation и раскрывается visible disclosure.
21. datePublished / dateModified
| Поле | Правило |
|---|---|
| datePublished | Дата первой публичной публикации |
| dateModified | Только при реальном содержательном обновлении |
| Background analytics update | Не менять dateModified |
| Correction | Менять при существенной правке + visible correction/update context |
Это синхронизируется с lastmod из документа 18 и versioning из документа 16.
22. Image markup
Google для Article рекомендует несколько high-resolution изображений, в частности с пропорциями 16:9, 4:3 и 1:1; image URLs должны быть crawlable/indexable и соответствовать размеченному контенту.
23. Dataset для собственных исследований
Google поддерживает Dataset, DataCatalog и DataDownload для описания настоящих наборов данных. Dataset markup должен описывать dataset metadata, а не просто любую статью с цифрами.
| Research output | Dataset? |
|---|---|
| CSV/JSON/XLSX с результатами исследования | Да |
| Публичная таблица данных с определённой структурой | Да |
| Статья «мы опросили 100 компаний», но data не опубликованы | Article; Dataset только если есть реально описываемый dataset |
| Обычная новость с одной цифрой | Нет |
24. Dataset core
Для «Матчасти» это сильная будущая возможность: собственные исследования становятся не только статьями, но и реально обнаруживаемыми data assets.
25. Provenance для research
26. BreadcrumbList
Google и Яндекс используют BreadcrumbList. Яндекс отдельно поддерживает BreadcrumbList в JSON-LD для навигационных цепочек.
Breadcrumb должен соответствовать видимой навигационной логике сайта.
27. Topic pages
Для curated topic hub базовый semantic type может быть CollectionPage или WebPage с about/mainEntity на Topic-like concept. Не нужно пытаться создать fake Google rich-result type, которого нет.
28. ItemList для списков
ItemList можно использовать для машинного описания curated lists, когда порядок имеет смысл. Но это не означает, что Google покажет специальный rich result.
29. about vs mainEntity
Schema.org data model различает:
| Property | Смысл | Пример |
|---|---|---|
| mainEntity | Главный объект, который описывает страница | Company page → Organization |
| about | О чём CreativeWork; объектов может быть несколько | Article → Company X, AI Visibility, SaaS |
| mainEntityOfPage | Обратная связь entity/creative work с основной страницей | Article → canonical WebPage |
| sameAs | Другой URL того же самого объекта | Organization → verified Wikidata/profile |
sameAs вместо about.30. mentions
Для публикаций можно проецировать approved entity mentions в mentions / about. Но не нужно экспортировать каждый автоматически распознанный AI candidate.
31. citations
Schema.org CreativeWork поддерживает citation relationships. Это подходит для research-heavy материалов, но Google Article rich-result docs не делают citation обязательным полем.
32. publishingPrinciples
Schema.org Organization поддерживает publishingPrinciples — URL документа с принципами издателя. Для «Матчасти» это хороший semantic bridge к Mathchast_14.
33. Рекламный статус в schema
Коммерческий статус должен:
- быть видим в HTML;
- храниться в data model;
- влиять на ссылки;
- попадать в compliance workflow.
Schema.org можно использовать для publisher/sponsor/author relations там, где это семантически корректно, но правовая маркировка живёт отдельно.
34. sponsor
35. author, contributor и sponsor не смешивать
| Роль | Property |
|---|---|
| Человек написал материал | author |
| Организация издала материал | publisher |
| Компания профинансировала исследование | sponsor |
| Компания является темой статьи | about |
| Компания просто упомянута | mentions |
36. Case relationships
Schema.org не передаёт всю нашу case semantics. Поэтому:
37. Verification badges и structured data
"verified": true внутри Schema.org object, если это не определено словарём.Verification живёт:
- в visible UI;
- во внутренней data model;
- в properties, которые реально отражают подтверждённые facts;
- в публичной methodology page.
Позже можно предоставить отдельный public API/provenance endpoint, но не загрязнять стандартный Schema.org несуществующими полями.
38. Claim provenance не помещается полностью в Schema.org
39. Structured data generator как отдельный backend module
40. Schema versioning
Schema.org и поисковые требования меняются. Значит mapper должен иметь версию.
41. Server-side generation
42. SSR + visible data consistency
43. Cache invalidation
| Event | Нужно перестроить JSON-LD? |
|---|---|
| PublicationUpdated | Да |
| Author relation changed | Да |
| Company legalName verified | Да на company page / related where rendered |
| View counter +1 | Нет |
| Internal AI embedding refresh | Нет |
44. Rich Results Test vs Schema Markup Validator
| Tool | Что проверяет |
|---|---|
| Google Rich Results Test | Google-specific supported rich-result types и ошибки |
| Schema Markup Validator | Общую корректность Schema.org vocab |
| Yandex structured data validator | Распознавание разметки и требования Яндекс-сервисов |
| URL Inspection | Что Google реально видит на deployed URL |
45. CI validation
46. Internal semantic linter
47. Public content should remain understandable without JSON-LD
Если удалить script JSON-LD, пользователь и crawler всё равно должны видеть:
- заголовок;
- автора;
- дату;
- компанию;
- источники;
- disclosure;
- основной текст;
- связанные сущности.
48. Open Graph и social metadata
Open Graph не заменяет Schema.org, но нужен как отдельная presentation metadata layer для социальных превью.
Все слои должны брать название/URL/изображение из одного PageViewModel.
49. Duplicate metadata
50. Site name consistency
Google учитывает WebSite structured data, og:site_name, title/headings и visible homepage content. Поэтому публично везде используем одно основное имя: «Матчасть», с Mathchast как альтернативным латинским вариантом при необходимости.
51. Company name consistency
52. Topic vocabulary
Schema.org не решит за нас ontology topics. Topic node и aliases остаются внутренними, а наружу мы можем использовать:
- about;
- keywords;
- DefinedTerm / DefinedTermSet там, где это оправдано;
- topic URLs как нормальные HTML links.
53. keywords
Если используем keywords в Article, они генерируются из утверждённых topic relations, а не из списка коммерческих запросов клиента.
54. Language
55. Research methodology as machine-readable relation
У каждого исследования может быть:
Даже если конкретное свойство не влияет на Google rich result, оно может быть полезно generic consumers и нашей собственной consistency.
56. External API vs JSON-LD
API появится, когда будет реальный consumer use case: агентства, analytics, партнёры, research exports.
57. Не публиковать private internal graph
| Internal data | JSON-LD? |
|---|---|
| Verified public legalName | Да при уместности |
| Public official domain | Да |
| Fraud risk score | Нет |
| Verification document metadata private | Нет |
| Unpublished claim candidate | Нет |
| Private agency/client contract | Нет |
| Public sponsor relation | Может быть |
58. Structured data и AI systems
AI machine-readability строится шире:
- ясный HTML;
- stable URLs;
- explicit entities;
- sources;
- structured data;
- sitemaps;
- crawler accessibility;
- consistent naming;
- original information.
Crawler rules и AI bots будут разобраны в Mathchast_22.
59. Почему Entity Graph важнее «schema plugin»
60. Company page machine-readable contract
61. Expert page contract
62. Article page contract
63. News page contract
64. Case page contract
65. Research page contract
66. Topic page contract
67. Homepage contract
68. Validation pipeline
69. Error severity
| Error | Severity |
|---|---|
| Invalid JSON-LD syntax | Critical |
| Author missing from Article markup | High |
| Marked-up fact hidden from visible page | Critical quality |
| Wrong canonical URL | Critical |
| sameAs points to media mention | High semantic error |
| Non-Google schema property ignored by Google | Not necessarily error if valid Schema.org |
| Missing optional field | Low |
70. «Больше разметки» не всегда лучше
71. Structured data spam
Google general guidelines предупреждают, что spammy/misleading markup может привести к manual action по structured data и потере eligibility для rich results.
72. Commercial client permissions
| Клиент может | Клиент не может |
|---|---|
| предложить official sameAs URL | самостоятельно редактировать JSON-LD |
| подтвердить legalName/domain | вставить fake award |
| добавить source к claim | сделать «№1» скрытым Schema property |
| исправить факт | назначить чужого эксперта author |
73. Schema admin preview
74. Open Graph и visual consistency
Один approved image asset может использоваться для:
- Article.image;
- og:image;
- social preview;
- internal feed card.
Но система может генерировать разные crops, сохраняя связь с master asset.
75. Schema migration
76. Что не строить в MVP
| Не строить | Почему |
|---|---|
| RDF endpoint / SPARQL | Нет потребности |
| Собственную ontology на 500 терминов | Рано |
| Полный open knowledge API | Позже |
| Автоматический schema generation LLM без rules | Слишком высокий semantic drift |
| Все Schema.org types сразу | Поддержка станет хрупкой |
| ProfilePage для всех карточек | Неверный use case |
77. MVP structured data set
78. Event-driven regeneration
79. Machine readability score
Не делать публичный «AI-ready score», но внутри можно проверять:
80. Structured data и Publication Health
Если после deploy Article schema исчезла на 500 публикациях, это production incident.
81. Самая важная связь с будущим AI Visibility
82. Решение документа
83. Что этот документ разблокирует
Источники исследования
- Google Search Central — Introduction to structured data: vocabulary, supported formats and purpose
- Google Search Central — General structured data guidelines: JSON-LD recommended, visible/representative content, no rich-result guarantee
- Google Search Central — Organization structured data, administrative identifiers, legalName, sameAs, url, logo
- Google Search Central — Article / NewsArticle / BlogPosting structured data and author best practices
- Google Search Central — ProfilePage use case, creator profiles and examples of invalid profile-page scenarios
- Google Search Central — Dataset / DataCatalog / DataDownload structured data and provenance guidance
- Google Search Central — WebSite structured data for site name on domain homepage
- Schema.org — Data model: mainEntity, mainEntityOfPage, about, sameAs and identifier semantics
- Schema.org — Organization and publishingPrinciples
- Schema.org — Brand and owner/sameAs relations
- Schema.org — Article
- Яндекс Вебмастер — Schema.org и использование семантической разметки
- Яндекс Вебмастер — JSON-LD
- Яндекс Вебмастер — BreadcrumbList в JSON-LD
- Яндекс Вебмастер — markup does not directly guarantee ranking; not all Schema.org types are supported
Конкретные @id patterns, mapper architecture, page contracts, semantic linter, CI pipeline и MVP schema set являются проектными решениями «Матчасти». Для поведения Google определяющим источником считается Google Search Central, поскольку Schema.org описывает словарь шире, чем конкретные Google features. Все machine-readable данные должны синхронизироваться с видимым содержанием, verification state и canonical URL.