dsh-desktop-kit 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -41
- package/client.js +780 -28
- package/docs/ARCHITECTURE.md +114 -0
- package/docs/COMPATIBILITY.md +61 -0
- package/docs/INSTALL.md +84 -0
- package/docs/PRIVACY.md +50 -0
- package/docs/ROADMAP.md +57 -0
- package/docs/TOKENS.md +118 -0
- package/docs/TROUBLESHOOTING.md +68 -0
- package/docs/images/hero.png +0 -0
- package/index.js +4 -0
- package/package.json +15 -5
- package/plugins/dsh-gkb-ru-ui/lib/client.js +276 -28
- package/plugins/dsh-gkb-ru-ui/lib/index.js +45 -1
- package/plugins/dsh-gkb-ru-ui/lib/skills.js +195 -1
- package/plugins/dsh-gkb-ru-ui/package.json +2 -2
- package/plugins/dsh-gkb-ru-ui/screenshots/01-home-tiles-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/06-home-tiles-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/01-real-time-peak-start.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/02-real-time-peak-end.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-768-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/06-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-live-preview-check.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-pre-peak-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/08-peak-start-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/09-peak-end-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/10-pre-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/11-pre-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/12-pre-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/qa-report.json +74 -0
- package/plugins/dsh-profile-transfer/screenshots/01-settings-transfer-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/02-settings-transfer-preview-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/03-settings-transfer-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/04-settings-transfer-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/05-settings-transfer-768-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/06-settings-transfer-390-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/07-settings-transfer-export-result.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/08-settings-transfer-workspaces-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/09-settings-transfer-workspaces-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/10-settings-transfer-workspaces-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/01-row-menu-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/02-dialog-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/03-dialog-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/04-dialog-1440-dark.png +0 -0
- package/plugins/dsh-session-move/screenshots/05-drag-highlight-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/06-drop-ungrouped-highlight.png +0 -0
- package/plugins/dsh-session-move/screenshots/07-after-drop-ungrouped.png +0 -0
- package/plugins/dsh-session-move/screenshots/08-move-dialog.png +0 -0
- package/plugins/dsh-session-move/screenshots/09-moved-to-second-workspace.png +0 -0
- package/plugins/dsh-session-move/screenshots/qa-report.json +62 -0
- package/plugins/dsh-skill-autopilot/cordis.patch.yml +3 -0
- package/plugins/dsh-skill-autopilot/index.js +444 -0
- package/plugins/dsh-skill-autopilot/package.json +19 -0
- package/plugins/dsh-token-lab/cordis.patch.yml +3 -0
- package/plugins/dsh-token-lab/lib/client.js +504 -0
- package/plugins/dsh-token-lab/lib/index.js +275 -0
- package/plugins/dsh-token-lab/package.json +26 -0
- package/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png +0 -0
- package/plugins/dsh-token-lab/screenshots/02-token-lab-1440-dark.png +0 -0
- package/skills/code-review-checklist/SKILL.md +48 -30
- package/skills/content-writing/SKILL.md +64 -327
- package/skills/content-writing/references/process.md +123 -0
- package/skills/content-writing/references/quick-recipes.md +99 -0
- package/skills/content-writing/references/rules.md +85 -0
- package/skills/content-writing/references/sources.md +49 -0
- package/skills/context-economy/SKILL.md +60 -0
- package/skills/context-economy/references/long-session.md +35 -0
- package/skills/context-economy/references/token-math.md +42 -0
- package/skills/context-economy/references/tool-recipes.md +34 -0
- package/skills/database-safety/SKILL.md +40 -24
- package/skills/debugging-playbook/SKILL.md +30 -27
- package/skills/design-critique/SKILL.md +57 -110
- package/skills/design-critique/references/a11y.md +25 -0
- package/skills/design-critique/references/diagnoses.md +33 -0
- package/skills/design-critique/references/quick-tests.md +30 -0
- package/skills/design-critique/references/report-template.md +63 -0
- package/skills/design-critique/references/rubric-fast.md +73 -0
- package/skills/dev-workflow/SKILL.md +41 -34
- package/skills/dev-workflow/references/definition-of-done.md +44 -0
- package/skills/dev-workflow/references/memory-and-boundaries.md +31 -0
- package/skills/dev-workflow/references/stages.md +67 -0
- package/skills/git-and-ci/SKILL.md +46 -26
- package/skills/pg-upgrade-verify/SKILL.md +54 -35
- package/skills/project-deep-dive/SKILL.md +39 -164
- package/skills/project-deep-dive/references/recon-commands.md +12 -0
- package/skills/project-deep-dive/references/section-templates.md +2 -0
- package/skills/project-deep-dive/references/tool-and-process.md +86 -0
- package/skills/project-memory-maintenance/SKILL.md +39 -154
- package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
- package/skills/project-memory-maintenance/references/journal-template.md +2 -0
- package/skills/project-memory-maintenance/references/section-rules.md +2 -0
- package/skills/release-and-deploy/SKILL.md +46 -32
- package/skills/requirements-and-planning/SKILL.md +44 -110
- package/skills/requirements-and-planning/references/antipatterns-and-checklist.md +20 -0
- package/skills/requirements-and-planning/references/process-steps.md +52 -0
- package/skills/requirements-and-planning/references/templates-and-estimates.md +29 -0
- package/skills/security-review/SKILL.md +33 -29
- package/skills/seo/SKILL.md +53 -305
- package/skills/seo/references/antipatterns.md +66 -0
- package/skills/seo/references/audit-checklist.md +14 -0
- package/skills/seo/references/content-seo.md +180 -174
- package/skills/seo/references/eeat-medical.md +2 -0
- package/skills/seo/references/measurement.md +28 -1
- package/skills/seo/references/on-page.md +5 -0
- package/skills/seo/references/page-templates.md +56 -0
- package/skills/seo/references/stack-recipes.md +2 -0
- package/skills/seo/references/structured-data.md +2 -0
- package/skills/seo/references/technical-seo.md +2 -0
- package/skills/service-desk-conventions/SKILL.md +40 -28
- package/skills/service-desk-db-safety/SKILL.md +39 -28
- package/skills/service-desk-release/SKILL.md +40 -22
- package/skills/service-desk-testing/SKILL.md +47 -33
- package/skills/service-desk-ui/SKILL.md +43 -24
- package/skills/skills-router/SKILL.md +44 -82
- package/skills/skills-router/references/applying-skills.md +25 -0
- package/skills/skills-router/references/routing-matrix.md +52 -0
- package/skills/testing-strategy/SKILL.md +47 -32
- package/skills/ui-design-system/SKILL.md +43 -38
- package/skills/ui-design-system/references/accessibility-and-responsive.md +50 -0
- package/skills/ui-design-system/references/tokens-and-components.md +67 -0
- package/skills/ui-design-system/references/visual-qa.md +44 -0
- package/skills/web-research/SKILL.md +40 -33
- package/skills/web-research/references/answer-and-citations.md +60 -0
- package/skills/web-research/references/query-recipes.md +44 -0
- package/skills/wow-design/SKILL.md +82 -161
- package/skills/wow-design/references/anti-patterns.md +3 -0
- package/skills/wow-design/references/critique-rubric.md +3 -0
- package/skills/wow-design/references/design-brief-template.md +2 -0
- package/skills/wow-design/references/inspiration.md +3 -0
- package/skills/wow-design/references/presets.md +3 -0
- package/skills/wow-design/references/principles.md +3 -0
- package/skills/wow-design/references/quick-presets.md +50 -0
- package/skills/wow-design/references/report-template.md +21 -0
- package/skills/wow-design/references/stack-recipes.md +3 -0
- package/skills/wow-design/references/visual-qa.md +3 -0
- package/skills/wow-design/references/wow-levers.md +43 -0
- package/tools/skill-cost.mjs +76 -0
package/skills/seo/SKILL.md
CHANGED
|
@@ -1,329 +1,77 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seo
|
|
3
|
-
description: "SEO
|
|
4
|
-
whenToUse: "
|
|
3
|
+
description: "SEO веб-артефакта по умолчанию: страница, шаблон, URL, мета, JSON-LD, контент, аудит — любой веб"
|
|
4
|
+
whenToUse: "Вёрстка, мета-теги, URL и редиректы, миграции, sitemap/robots, JSON-LD, статьи, аудит — грузить до кода, если задача про веб."
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# SEO —
|
|
8
|
+
# SEO — ядро
|
|
9
9
|
|
|
10
|
-
>
|
|
11
|
-
> Твоя работа — не «вписать ключевики», а сделать так, чтобы страницу **нашли**, **показали**,
|
|
12
|
-
> **процитировали** (в т.ч. в ИИ-ответах) и **конвертировали**. SEO встроено в разработку с первой строки,
|
|
13
|
-
> а не прикручивается после. Русский рынок: **Google + Яндекс** одновременно. Медицина — **YMYL**.
|
|
10
|
+
> ≈2 000 токенов. Детали — по ссылкам, когда нужны.
|
|
14
11
|
|
|
15
|
-
## 0.
|
|
12
|
+
## 0. Когда применять
|
|
16
13
|
|
|
17
|
-
|
|
18
|
-
`title`, `description`, `canonical`, `robots`, Open Graph, ровно **один H1**, семантическую разметку,
|
|
19
|
-
осмысленный `alt` у изображений, внутренние ссылки, JSON-LD, человекочитаемый URL.
|
|
20
|
-
Нет объекта «потом добавим SEO» — если страница без этого, она **не готова**.
|
|
21
|
-
2. **Интент важнее ключевых слов.** Сначала определи, что человек хочет (узнать / выбрать / записаться / сравнить /
|
|
22
|
-
найти адрес), потом строй страницу под этот интент. Ключевик, вставленный без интента, — вред.
|
|
23
|
-
3. **Не выдумывай цифры и факты.** Лимиты, пороги и «правила поисковиков» бери из первоисточников
|
|
24
|
-
(Google Search Central, Яндекс Вебмастер, schema.org, web.dev) — ссылки в `references/`. Где данные спорные
|
|
25
|
-
или могли измениться — пиши «**проверить на актуальной версии**» + дату проверки.
|
|
26
|
-
4. **YMYL-режим для медицины.** Любой медицинский контент: автор-врач с квалификацией, дата публикации и дата
|
|
27
|
-
проверки, источники, дисклеймер, отсутствие обещаний излечения. См. `references/eeat-medical.md`.
|
|
28
|
-
5. **Не ломать существующее SEO.** Перед правкой URL/шаблона/мета — зафиксируй «до» (какие URL, какие title,
|
|
29
|
-
какие редиректы). Любая смена URL = 301 + обновление sitemap + внутренние ссылки. Без этого не менять.
|
|
30
|
-
6. **Проверяемо, а не «на глаз».** Итог работы подтверждается: валидатором rich results, проверкой кода страницы
|
|
31
|
-
(curl/DevTools), `robots.txt`/`sitemap.xml`, скриншотом SERP-сниппета или отчётом Lighthouse/CWV.
|
|
32
|
-
«Я добавил meta» — не доказательство; доказательство — фрагмент HTML и результат валидатора.
|
|
33
|
-
7. **Отчёт с приоритетами.** В отчёте: что сделано, что проверено, какие P0/P1 остались и почему.
|
|
14
|
+
- Страница, шаблон, `<head>`, sitemap, robots, статья, услуга.
|
|
34
15
|
|
|
35
|
-
## 1.
|
|
16
|
+
## 1. Главное
|
|
36
17
|
|
|
37
|
-
|
|
38
|
-
нескольких минут, но **не пропускаются**.
|
|
18
|
+
### 1.1 Контракт
|
|
39
19
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
20
|
+
1. **SEO по умолчанию**: мета, `canonical`, `robots`, OG, один `H1`, семантика, `alt`, ссылки, JSON-LD, читаемый URL — иначе страница не готова.
|
|
21
|
+
2. **Интент важнее ключей**: сначала что человек хочет, потом страница.
|
|
22
|
+
3. **Не выдумывать цифры**: пороги — из первоисточников; спорное — «проверить на актуальной версии» + дата.
|
|
23
|
+
4. **YMYL**: медицина — автор-врач, даты, источники, дисклеймер, без обещаний излечения.
|
|
24
|
+
5. **Не ломать существующее**: фиксируй «до»; смена URL = 301 + sitemap + ссылки.
|
|
25
|
+
6. **Доказывать**: `curl`/`view-source`, Rich Results Test, PSI/CWV, фрагмент HTML.
|
|
26
|
+
7. **Мета и контент — в исходном HTML** (SSR/SSG/prerender), не после JS.
|
|
27
|
+
8. **Google + Яндекс**: так, чтобы работало в обоих (`measurement.md` §10).
|
|
28
|
+
9. **Отчёт**: сделано, проверено (чем), что из P0/P1 осталось и почему.
|
|
49
29
|
|
|
50
|
-
###
|
|
51
|
-
- **Актуальную выдачу/конкурентов/тренды проверяй через `web-research`** (живой поиск, дата, ссылки), а не по памяти модели.
|
|
52
|
-
- Собери ядро: **Яндекс Вордстат** (`wordstat.yandex.ru`), подсказки Яндекс/Google, «Похожие запросы»,
|
|
53
|
-
Google Search Console (Запросы), Яндекс Вебмастер (Поисковые запросы), конкуренты в топе.
|
|
54
|
-
- Раздели на **кластеры = 1 страница**. Правило: один кластер — одна страница, без каннибализации
|
|
55
|
-
(две страницы под один интент конкурируют друг с другом и обе проигрывают).
|
|
56
|
-
- Для каждого кластера: главный запрос (ВЧ/СЧ/НЧ), 5–15 поддерживающих, вопросы (для FAQ-блока и ИИ-ответов).
|
|
57
|
-
- Фиксируй частотность с датой и регионом (Вордстат показывает по региону — для example.org нужен **Москва**).
|
|
58
|
-
- Подробно: `references/content-seo.md`.
|
|
30
|
+
### 1.2 Процесс — 8 шагов (1–3 до кода, 4–7 в коде, 8 после)
|
|
59
31
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- Сирот (страницы без входящих ссылок) — нет. Проверяется краулом.
|
|
32
|
+
1. **Бриф и интент**: кто, что хочет, CTA, тип страницы → `content-seo.md`.
|
|
33
|
+
2. **Семантика**: Вордстат по региону, GSC; 1 кластер = 1 страница; частотность с датой.
|
|
34
|
+
3. **Архитектура**: URL ≤3–4 уровня, ≤3 клика, анкоры 2–6/1000 слов, без сирот → `on-page.md`.
|
|
35
|
+
4. **On-page**: `title` 50–60, `description` 140–160, один `H1`, `alt`, OG → `page-templates.md`.
|
|
36
|
+
5. **Техника**: 200 + indexable, canonical, 301 без цепочек, CWV, миграции → `technical-seo.md`.
|
|
37
|
+
6. **JSON-LD**: типы, FAQ-сниппета нет с 07.05.2026, поля = контент → `structured-data.md`.
|
|
38
|
+
7. **E-E-A-T**: автор-врач, даты, лицензия, источники, дисклеймер, NAP → `eeat-medical.md`.
|
|
39
|
+
8. **Измерение**: GSC + Вебмастер (регион, ИКС), GA4/Метрика, baseline, 2–4/8–12 недель → `measurement.md`.
|
|
69
40
|
|
|
70
|
-
|
|
71
|
-
| Элемент | Правило (RU, 2026) |
|
|
72
|
-
|---|---|
|
|
73
|
-
| `title` | 50–60 символов (~600px), главный запрос ближе к началу, бренд в конце через `|`. Уникальный на каждой странице |
|
|
74
|
-
| `description` | 140–160 символов, польза + факт (врач, цена «от», адрес, срок), не дублируется, не «купить дешево» |
|
|
75
|
-
| `H1` | Ровно один, совпадает по смыслу с интентом, не равен `title` дословно |
|
|
76
|
-
| `H2–H6` | Иерархия без пропусков, заголовки — реальные вопросы/подтемы, не «О нас» |
|
|
77
|
-
| URL | короткий, транслит, смысловой (`/uslugi/mrt/`), без КАПСА и стоп-слов |
|
|
78
|
-
| Контент | отвечает на интент в первых 1–2 абзацах; факты, цифры, имена; без воды и «Инновационных решений» |
|
|
79
|
-
| Изображения | `alt` описательный (не «img1», не спам ключами), `width/height`, `loading="lazy"` ниже первого экрана, WebP/AVIF, `srcset` |
|
|
80
|
-
| Внутренние ссылки | 2–6 в тексте, анкоры описательные, на релевантные страницы (не «на главную» со всех) |
|
|
81
|
-
| OG/Twitter | `og:title`, `og:description`, `og:image` 1200×630, `og:url`, `og:type`, `og:locale=ru_RU` |
|
|
82
|
-
| Хлебные крошки | видимые + разметка `BreadcrumbList` |
|
|
83
|
-
| `robots` | `index,follow` по умолчанию; `noindex` — только осознанно и с причиной |
|
|
41
|
+
**Lite-режим** (шаги сжимаются, но не пропускаются): `title` + `description` + `H1` · `canonical` + `index,follow` + OG · `header/main/article/footer`, `lang="ru"` · `alt`, размеры, lazy ниже фолда · 2–4 ссылки + крошки · JSON-LD минимального типа · гейт §3; аудит — `audit-checklist.md` §15.
|
|
84
42
|
|
|
85
|
-
|
|
43
|
+
### 1.3 YMYL-медицина
|
|
86
44
|
|
|
87
|
-
|
|
88
|
-
Проверяй на каждой задаче (не только «когда просили»):
|
|
89
|
-
- **Индексация:** страница отдаёт 200, нет `noindex`, не закрыта в `robots.txt`, есть в `sitemap.xml`.
|
|
90
|
-
- **Canonical:** абсолютный, self-referencing на канонической версии; один canonical на страницу; пагинация и
|
|
91
|
-
фильтры — canonical на «чистую» версию, не на себя с параметрами.
|
|
92
|
-
- **Редиректы:** 301 для постоянных, 302 — временно, 410 — для удалённого навсегда, **без цепочек** (1 прыжок),
|
|
93
|
-
HTTPS + без/с `www` — одна версия (все остальные 301 на неё).
|
|
94
|
-
- **robots.txt:** не закрывать CSS/JS/картинки, не закрывать то, что нужно в индексе; `Sitemap:` с абсолютным URL;
|
|
95
|
-
лимит Google — 500 КБ. Для Яндекса дополнительно `Clean-param` для UTM/сортировок.
|
|
96
|
-
- **sitemap.xml:** только 200 + indexable URL, `<lastmod>` реальный (не «сегодня» у всех), ≤50 000 URL и ≤50 МБ
|
|
97
|
-
на файл (иначе sitemap-индекс), без 404/редиректов/`noindex`. Ссылка в `robots.txt`, отправка в GSC и Вебмастер.
|
|
98
|
-
- **Пагинация:** `rel=next/prev` Google не использует (но не вредит), главное — canonical на себя у каждой
|
|
99
|
-
страницы пагинации и уникальные title; `noindex` на «глубокие» страницы пагинации — только осознанно.
|
|
100
|
-
- **Фасеты/фильтры:** «ценные» комбинации — индексировать, «мусорные» — `noindex,follow` или запрет в robots +
|
|
101
|
-
`Clean-param` (Яндекс), без блокировки обхода (иначе не увидят canonical).
|
|
102
|
-
- **hreflang:** только если есть реальные языковые/региональные версии, взаимообразные ссылки + `x-default`.
|
|
103
|
-
- **Мобильный:** mobile-first, нет горизонтального скролла, тач-цели ≥44px, шрифт ≥16px в полях.
|
|
104
|
-
- **Скорость/CWV:** LCP ≤2.5 c, INP ≤200 мс, CLS ≤0.1 (75-й перцентиль, мобайл и десктоп отдельно).
|
|
105
|
-
- **JS/SPA:** контент и мета должны быть в **исходном HTML** (SSR/SSG/prerender); не полагайся на клиентский
|
|
106
|
-
рендер для title/canonical/ссылок; проверяй «как видит робот» (`view-source`, `curl`, URL Inspection).
|
|
107
|
-
- **Миграции URL:** карта «старый → новый», 301, обновление sitemap и внутренних ссылок, мониторинг 404 в
|
|
108
|
-
GSC/Вебмастере 2–4 недели.
|
|
45
|
+
Автор-врач, рецензент, даты публикации и проверки, источники, дисклеймер, противопоказания, «когда срочно к врачу»; без обещаний излечения, запугивания, назначений «по интернету», выдуманных отзывов, цены ≠ прайс. Блокеры — `eeat-medical.md` §12.
|
|
109
46
|
|
|
110
|
-
|
|
47
|
+
### 1.4 Антипаттерны
|
|
111
48
|
|
|
112
|
-
|
|
113
|
-
- Формат — **JSON-LD** в `<script type="application/ld+json">`, один блок-граф или несколько блоков.
|
|
114
|
-
- Базовый набор для сайта: `Organization`/`MedicalOrganization` + `WebSite` (главная), `BreadcrumbList` (везде),
|
|
115
|
-
`MedicalWebPage`/`Article` (контент), `Physician` (врачи), `MedicalClinic`/`Hospital` (клиника/филиал),
|
|
116
|
-
`Service`/`MedicalProcedure` (услуги), `FAQPage` (блок вопросов — как контент, не ради сниппета).
|
|
117
|
-
- **Важно (2026):** Google **отключил FAQ rich results с 07.05.2026** и убрал HowTo ещё в 2023 — разметку можно
|
|
118
|
-
оставлять (она помогает ИИ и Яндексу понимать страницу), но **не обещай** сниппет. Обещай то, что реально:
|
|
119
|
-
понимание сущностей, расширенные сниппеты там, где они ещё работают (BreadcrumbList на десктопе, Organization,
|
|
120
|
-
Article, Physician/MedicalClinic — для связывания сущностей), корректные данные для ИИ-ответов.
|
|
121
|
-
- Все поля должны **совпадать с видимым контентом** (name, адрес, телефон, цены, рейтинг). Не размечай невидимое.
|
|
122
|
-
- Валидация: Rich Results Test + Schema Markup Validator + Вебмастер Яндекса.
|
|
49
|
+
keyword stuffing, скрытый текст, doorway, каннибализация, обещания излечения, `noindex` на деньгах, canonical на чужой URL, «мягкие 404», sitemap с 404, одинаковый `title`, lazy на LCP, выдуманные отзывы, миф про `llms.txt`. Разбор — `antipatterns.md`.
|
|
123
50
|
|
|
124
|
-
|
|
51
|
+
## 2. Куда грузить дальше
|
|
125
52
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
53
|
+
| Нужно | Файл | ≈токенов | Когда читать |
|
|
54
|
+
|---|---|---|---|
|
|
55
|
+
| Интент, кластеры | `references/content-seo.md` | 5 850 | новая страница |
|
|
56
|
+
| Мета, матрица страниц | `references/page-templates.md` | 2 250 | title/description |
|
|
57
|
+
| Статусы, robots, sitemap, canonical | `references/technical-seo.md` | 8 050 | техправка |
|
|
58
|
+
| Title/H1–H6, URL, анкоры, OG | `references/on-page.md` | 6 400 | вёрстка |
|
|
59
|
+
| JSON-LD: шаблоны, валидация | `references/structured-data.md` | 8 700 | разметка |
|
|
60
|
+
| Авторство, даты, NAP | `references/eeat-medical.md` | 7 100 | медицина |
|
|
61
|
+
| 107 проверок и отчёты | `references/audit-checklist.md` | 7 900 | аудит |
|
|
62
|
+
| GSC, Вебмастер, KPI, UTM | `references/measurement.md` | 7 250 | замеры |
|
|
63
|
+
| Laravel, Bitrix, React, статика | `references/stack-recipes.md` | 10 100 | код стека |
|
|
64
|
+
| Антипаттерны | `references/antipatterns.md` | 2 050 | сомнение |
|
|
136
65
|
|
|
137
|
-
|
|
66
|
+
Готовое — `assets/snippets/`, `assets/scripts/seo-audit.mjs`.
|
|
138
67
|
|
|
139
|
-
|
|
140
|
-
- **GSC:** индексирование (URL Inspection), «Эффективность» (показы/клики/CTR/позиция), богатые результаты,
|
|
141
|
-
Core Web Vitals, «Покрытие»/«Страницы»; **AI Overviews и AI Mode учитываются в общем трафике** отчёта
|
|
142
|
-
(тип поиска «Веб») — отдельного отчёта нет.
|
|
143
|
-
- **Яндекс Вебмастер:** «Индексирование → Страницы в поиске», «Поисковые запросы», «Диагностика», «Регион»,
|
|
144
|
-
ИКС; следи за исключёнными страницами и ошибками robots/sitemap.
|
|
145
|
-
- **Аналитика:** GA4 + Яндекс Метрика (цели «запись», «звонок», «форма»), UTM для внешних кампаний.
|
|
146
|
-
- **До/после:** зафиксируй baseline (дата, метрики) → изменения → сравнение через 2–4 и 8–12 недель.
|
|
147
|
-
Не обещай рост «за неделю».
|
|
68
|
+
## 3. Гейт перед сдачей
|
|
148
69
|
|
|
149
|
-
|
|
70
|
+
Порог: P0 закрыты; P1 — в отчёт с причиной; 0 ошибок валидаторов.
|
|
150
71
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
| Услуга | `{Услуга} в {Клиника} — цена от {X} ₽, запись онлайн` | MedicalProcedure/Service+FAQ+Breadcrumb | index,follow | да, 0.8 |
|
|
158
|
-
| Врач | `{ФИО} — {специальность}, {Клиника}, {город}` | Physician+Person+Breadcrumb | index,follow | да, 0.7 |
|
|
159
|
-
| Статья/блог | `{Вопрос/тема}: {уточнение} — {Клиника}` | Article/MedicalWebPage+FAQ+Breadcrumb | index,follow | да, 0.6 |
|
|
160
|
-
| Новость | `{Событие} — {дата} | {Клиника}` | NewsArticle/Article | index,follow | да, 0.5 |
|
|
161
|
-
| Цены | `Цены на {раздел} в {Клиника}, {город} — {год}` | MedicalWebPage+Offer (осторожно) | index,follow | да, 0.7 |
|
|
162
|
-
| Контакты | `Контакты {Клиника} — адрес, телефон, схема проезда` | MedicalClinic+Organization | index,follow | да, 0.6 |
|
|
163
|
-
| Страница «спасибо»/личный кабинет | `{...}` | — | `noindex,follow` | нет | — |
|
|
164
|
-
| Поиск/фильтры/мусорные фасеты | — | — | `noindex,follow` или robots+Clean-param | нет | — |
|
|
165
|
-
| 404/410 | `Страница не найдена` | — | `noindex` | нет | — |
|
|
166
|
-
|
|
167
|
-
## 3. ГЕЙТ КАЧЕСТВА (SEO-GATE — не сдавать, пока не всё `[x]`)
|
|
168
|
-
|
|
169
|
-
**Порог:** все P0 закрыты; P1 — закрыты или явно вынесены в отчёт с причиной; 0 ошибок в валидаторах
|
|
170
|
-
структурированных данных; страница отвечает 200 и индексируема.
|
|
171
|
-
|
|
172
|
-
- [ ] **P0** `title` уникальный, 50–60 симв., главный запрос в начале, без «спама» и ALL CAPS.
|
|
173
|
-
- [ ] **P0** `description` уникальный, 140–160 симв., с пользой/фактом.
|
|
174
|
-
- [ ] **P0** ровно один `H1`, совпадает с интентом; иерархия H2–H6 без пропусков.
|
|
175
|
-
- [ ] **P0** `canonical` абсолютный и корректный (self-referencing или на каноническую версию).
|
|
176
|
-
- [ ] **P0** страница индексируема: 200, нет `noindex`, нет запрета в `robots.txt`, есть в `sitemap.xml`.
|
|
177
|
-
- [ ] **P0** JSON-LD валиден, поля совпадают с контентом.
|
|
178
|
-
- [ ] **P0** внутренние ссылки на страницу есть (не сирота), исходящие — 2–6 контекстных.
|
|
179
|
-
- [ ] **P0** для медицины: автор-врач, дата публикации/проверки, источники, дисклеймер, лицензия.
|
|
180
|
-
- [ ] **P1** URL читаемый, латиница/транслит, без параметров; при смене — 301.
|
|
181
|
-
- [ ] **P1** OG/Twitter-теги + `og:image` 1200×630.
|
|
182
|
-
- [ ] **P1** изображения: `alt`, размеры, lazy ниже фолда, WebP/AVIF.
|
|
183
|
-
- [ ] **P1** хлебные крошки (видимые + `BreadcrumbList`).
|
|
184
|
-
- [ ] **P1** CWV: LCP ≤2.5 c, INP ≤200 мс, CLS ≤0.1 (или зафиксированный план).
|
|
185
|
-
- [ ] **P2** микроданные обновлены (`<html lang="ru">`, `<meta charset>`, viewport, favicon).
|
|
186
|
-
- [ ] **P2** нет битых ссылок/404 во внутренних ссылках, нет цепочек редиректов.
|
|
187
|
-
|
|
188
|
-
Полный чек-лист из 60+ проверок с приоритетами: `references/audit-checklist.md`.
|
|
189
|
-
|
|
190
|
-
## 4. АНТИПАТТЕРНЫ (мгновенно убивают позиции и доверие)
|
|
191
|
-
|
|
192
|
-
**Контент и переоптимизация:** keyword stuffing · текст «для роботов», не для людей · скрытый текст/ссылки ·
|
|
193
|
-
двери (doorway pages) · одинаковый текст на N страниц · каннибализация запросов · заголовки-обманки
|
|
194
|
-
(«Вы не поверите») · «гарантируем излечение» и любые обещания результата в медицине · контент без автора и даты ·
|
|
195
|
-
копипаст с других медсайтов без переработки · автогенерация массы однотипных страниц.
|
|
196
|
-
|
|
197
|
-
**Технические:** `noindex` на деньгах/услугах · canonical на чужой URL · редирект-цепочки · 302 вместо 301 ·
|
|
198
|
-
дубли www/без-www и http/https · «мягкие 404» (200 на несуществующей странице) · закрытые в robots CSS/JS/картинки ·
|
|
199
|
-
sitemap с 404/`noindex` · тысячи мусорных URL в индексе (фасеты, сортировки) · title одинаковый на всех страницах ·
|
|
200
|
-
`H1` = логотип или отсутствует · контент только через JS без SSR · блокировка обхода ради «экономии краулинга» ·
|
|
201
|
-
lazy-load на LCP-изображении · CLS из-за шрифтов/баннеров без размеров.
|
|
202
|
-
|
|
203
|
-
**Медицина/доверие:** отзывы-выдумки и накрутка рейтинга · `aggregateRating` на собственные отзывы ·
|
|
204
|
-
фото-стоки врачей вместо реальных · дисклеймер «мы не отвечаем» · противоречивые цены (в тексте ≠ в прайсе) ·
|
|
205
|
-
разные телефоны/адреса на сайте и в Яндекс Бизнесе.
|
|
206
|
-
|
|
207
|
-
**ИИ-эра:** верить в «секретный файл llms.txt» (Google официально: такие файлы ему не нужны и на ранжирование
|
|
208
|
-
не влияют) · генерировать сотни ИИ-статей без редактуры (риск «scaled content abuse») · прятать контент от
|
|
209
|
-
ИИ-сниппетов и ждать трафика из ИИ-ответов одновременно.
|
|
210
|
-
|
|
211
|
-
## 5. ШАБЛОНЫ title / description (RU, медицина)
|
|
212
|
-
|
|
213
|
-
Правило: **что + где + выгода/факт + бренд** (не обязательно все, но первые два — всегда).
|
|
214
|
-
Не ставь `|` и бренд в начало. Не пиши «официальный сайт» там, где это не так.
|
|
215
|
-
|
|
216
|
-
| Тип | title | description |
|
|
217
|
-
|---|---|---|
|
|
218
|
-
| Главная | `организация, Москва — официальный сайт больницы` | `Многопрофильная больница в Москве: консультации врачей, диагностика, стационар. Запись по телефону и онлайн. Адрес и схема проезда.` |
|
|
219
|
-
| Направление | `Кардиология в организация, Москва — врачи, диагностика, запись` | `Кардиологическое отделение: ЭКГ, ЭхоКГ, холтер, консультации кардиолога. Опытные врачи, современное оборудование. Запись онлайн.` |
|
|
220
|
-
| Услуга | `МРТ головного мозга в Москве — цена от 4 500 ₽, запись в организация` | `МРТ головы на аппарате 1.5 Тл: расшифровка врачом, результат в день исследования. Цена от 4 500 ₽, запись онлайн и по телефону.` |
|
|
221
|
-
| Врач | `Иванов Иван Иванович — кардиолог, организация, Москва` | `Кардиолог с 18-летним стажем: диагностика и лечение гипертонии, ИБС, аритмий. Кандидат медицинских наук. Запись на приём.` |
|
|
222
|
-
| Статья | `Высокое давление: причины, симптомы и когда идти к врачу` | `Почему повышается давление, какие симптомы опасны, как измерять дома и когда нужен кардиолог. Разбор врача организация.` |
|
|
223
|
-
| Новость | `День открытых дверей в организация — 12 апреля 2026` | `12 апреля 2026: бесплатная проверка сердца, консультации кардиолога и эндокринолога. Программа, запись, адрес.` |
|
|
224
|
-
|
|
225
|
-
Чего избегать в title/description:
|
|
226
|
-
- `Купить, дёшево, в Москве недорого` для государственной клиники — конфликт с реальностью и YMYL-доверием.
|
|
227
|
-
- Пунктуация-мусор `!!!`, эмодзи, слова «лучший», «№1» без доказательств.
|
|
228
|
-
- Обрезанные фразы и «…» вручную — Google/Яндекс обрежут сами по ширине.
|
|
229
|
-
|
|
230
|
-
## 6. РУССКИЙ РЫНОК: Google + Яндекс (различия, которые важны)
|
|
231
|
-
|
|
232
|
-
| Аспект | Google | Яндекс |
|
|
233
|
-
|---|---|---|
|
|
234
|
-
| Основной инструмент | Google Search Console | Яндекс Вебмастер |
|
|
235
|
-
| Качество сайта | PageRank + тематичность (нет публичной метрики) | **ИКС** (Индекс качества сайта), публичный, обновляется примерно раз в месяц |
|
|
236
|
-
| Регион | Гео по домену/контенту, Google Business Profile | **Регион в Вебмастере** (для «клиника в Москве» — критично) + Яндекс Бизнес |
|
|
237
|
-
| Сниппеты | Rich results (Article, Organization, Breadcrumb на десктопе, Product…) | Сниппеты, быстрые ссылки, «Вопросы и ответы» (разметка + Вебмастер) |
|
|
238
|
-
| Параметры URL | canonical + «Инструмент проверки URL» | `Clean-param` в robots.txt + canonical |
|
|
239
|
-
| Роботы | Googlebot, Google-Extended (обучение ИИ) | YandexBot (+ YandexGPT-обучение не управляется отдельным токеном; следи за изменениями) |
|
|
240
|
-
| ИИ-ответы | AI Overviews, AI Mode (учитываются в GSC, тип «Веб») | Яндекс Нейро (по отраслевым данным — опирается на верхние результаты; **проверить на актуальной версии**) |
|
|
241
|
-
| Аналитика | GA4 | Яндекс Метрика (цели, вебвизор, карты скроллинга) |
|
|
242
|
-
| Локальное SEO | Google Business Profile, отзывы | Яндекс Бизнес, Яндекс Карты, 2ГИС, отзывы с ответами |
|
|
243
|
-
|
|
244
|
-
Правило: **делай так, чтобы работало в обоих**, но не жертвуй одним ради другого. Единая база: семантика,
|
|
245
|
-
полезный контент, скорость, чистые URL, валидная разметка, сильные внутренние ссылки.
|
|
246
|
-
|
|
247
|
-
Детали по инструментам: `references/measurement.md`.
|
|
248
|
-
|
|
249
|
-
## 7. СТЕКИ (не изобретай заново)
|
|
250
|
-
|
|
251
|
-
| Стек | Что делать | Где рецепт |
|
|
252
|
-
|---|---|---|
|
|
253
|
-
| **Laravel/Blade** | отдельный `<x-seo-meta>` + сервис `SeoService`, sitemap/robots роуты, JSON-LD из контроллера, кэш | `references/stack-recipes.md` |
|
|
254
|
-
| **Bitrix/Aspro «Медицинский центр 3.0»** | SEO-поля инфоблоков, `.htaccess`/ЧПУ, `robots.txt` и `sitemap.xml` через настройки, канонические, 301 через `urlrewrite.php`, кэш | `references/stack-recipes.md` |
|
|
255
|
-
| **React/Vite** | SSR/SSG (Astro/Next или prerender), react-helmet-аналог только если SSR, 404, CWV | `references/stack-recipes.md` |
|
|
256
|
-
| **Статический HTML** | прямо в `<head>`, sitemap руками/скриптом, canonical, JSON-LD inline | `references/stack-recipes.md` |
|
|
257
|
-
|
|
258
|
-
Ключевое правило любого стека: **SEO-данные генерируются на сервере и попадают в исходный HTML**. Всё, что
|
|
259
|
-
появляется только после исполнения JS, поисковики видят нестабильно.
|
|
260
|
-
|
|
261
|
-
## 8. ЧТО ЛЕЖИТ В СКИЛЛЕ
|
|
262
|
-
|
|
263
|
-
```
|
|
264
|
-
SKILL.md — этот файл: процесс, гейт, антипаттерны, шаблоны
|
|
265
|
-
references/
|
|
266
|
-
technical-seo.md — краулинг, индексация, canonical, редиректы, robots, sitemap,
|
|
267
|
-
пагинация, фасеты, дубли, hreflang, мобильный, CWV, JS/SPA,
|
|
268
|
-
лог-анализ, миграции URL
|
|
269
|
-
on-page.md — title/description/H1-H6, URL, контент, изображения, ссылки/анкоры,
|
|
270
|
-
OG/Twitter, крошки, микроразметка
|
|
271
|
-
structured-data.md — JSON-LD шаблоны: Organization, WebSite, BreadcrumbList,
|
|
272
|
-
MedicalWebPage, MedicalClinic, Physician, FAQPage, Article,
|
|
273
|
-
LocalBusiness, Product, Service, Event + валидация
|
|
274
|
-
eeat-medical.md — YMYL/медицина: авторство, даты, источники, дисклеймеры, локальная
|
|
275
|
-
клиника (NAP, отзывы, лицензии), требования к контенту example.org
|
|
276
|
-
stack-recipes.md — Laravel/Blade, Bitrix/Aspro, React/Vite, статика
|
|
277
|
-
content-seo.md — интент, кластеры, структура лендинга/статьи, перелинковка, CTA,
|
|
278
|
-
freshness, FAQ, микрокопирайт
|
|
279
|
-
audit-checklist.md — 60+ проверок P0/P1/P2 + шаблон SEO-отчёта
|
|
280
|
-
measurement.md — GSC, Вебмастер, GA4/Метрика, KPI, UTM, мониторинг
|
|
281
|
-
assets/
|
|
282
|
-
snippets/ — готовые фрагменты: meta.blade.php; JSON-LD (организация, клиника,
|
|
283
|
-
MedicalWebPage, врач, FAQ, крошки); robots.txt; sitemap.xml
|
|
284
|
-
(sitemap-индекс) и sitemap-urlset-example.xml
|
|
285
|
-
README.md — как пользоваться сниппетами, статусы разметки в 2026, Битрикс
|
|
286
|
-
scripts/README.md — контракт инструмента seo-audit.mjs (делает qa-toolsmith, task-5):
|
|
287
|
-
`node seo-audit.mjs <file|url> --out dir [--json]`,
|
|
288
|
-
выход seo-audit.json/md, severity critical/serious/minor
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
Инструмент `seo-audit.mjs` автоматизирует проверки из `references/audit-checklist.md` §13
|
|
292
|
-
(«Автоматизируемые проверки»). Пока его нет — проверяй вручную по гейту §3.
|
|
293
|
-
|
|
294
|
-
## 9. ОТЧЁТ (шаблон)
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
## SEO: <страница/задача>
|
|
298
|
-
Интент: <информационный/коммерческий/локальный> · кластер: <главный запрос + 3–5 поддерживающих>
|
|
299
|
-
Что сделано: <5–8 пунктов: title/desc, H1, canonical, JSON-LD, ссылки, alt, редиректы, sitemap>
|
|
300
|
-
Проверено: <валидатор rich results: 0 ошибок; 200 + index; robots/sitemap; CWV; curl/view-source>
|
|
301
|
-
Baseline: <если применимо — показы/клики/позиция/CTR до, дата>
|
|
302
|
-
Риски: <что может просесть и почему; какие P1/P2 отложены>
|
|
303
|
-
Что дальше: <следующие 1–3 шага: контент, перелинковка, ускорение, мониторинг>
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
## 10. ЕСЛИ ЗАДАЧА — «ПРОСТО СВЕРСТАТЬ / ПОПРАВИТЬ» (lite-режим)
|
|
307
|
-
|
|
308
|
-
Не разводи процесс на час. Сделай минимум **SEO-по-умолчанию** за 10 минут:
|
|
309
|
-
1. `title` + `description` + один `H1` по шаблону из §5.
|
|
310
|
-
2. `canonical` + `robots:index,follow` + OG-теги.
|
|
311
|
-
3. Семантика: `header/main/section/article/footer`, `lang="ru"`, заголовки по порядку.
|
|
312
|
-
4. `alt` у всех картинок, `width/height`, lazy ниже фолда.
|
|
313
|
-
5. Внутренние ссылки (2–4, осмысленные анкоры) + крошки, если страница не корневая.
|
|
314
|
-
6. JSON-LD минимального типа (`WebPage`/`Article`/`Physician`/`MedicalClinic`).
|
|
315
|
-
7. Прогнать мысленно гейт §3 и записать в отчёт, что проверено.
|
|
316
|
-
|
|
317
|
-
Если задача — **аудит** существующего сайта: сначала `references/audit-checklist.md`, фиксируй P0/P1/P2,
|
|
318
|
-
чини P0 (индексация, canonical, дубли, шаблоны title), только потом оптимизируй контент.
|
|
319
|
-
|
|
320
|
-
## 11. МЕДИЦИНА = YMYL (краткая памятка)
|
|
321
|
-
|
|
322
|
-
- Контент о здоровье влияет на жизнь человека → поисковики оценивают его строже (E-E-A-T), а ошибки бьют по
|
|
323
|
-
трафику и по репутации учреждения.
|
|
324
|
-
- Каждая медицинская страница: **автор-врач**, **рецензент** (если есть), **дата публикации и обновления**,
|
|
325
|
-
**источники**, **дисклеймер**, **показания/противопоказания**, **когда обращаться к врачу**.
|
|
326
|
-
- Не обещай результат («излечим», «гарантируем»), не запугивай, не подменяй очную консультацию.
|
|
327
|
-
- Локальная клиника: единый NAP, лицензия, Яндекс Бизнес/Карты + 2ГИС + GBP, отзывы с ответами, фото реальных
|
|
328
|
-
мест (не стоки).
|
|
329
|
-
- Подробно, с формулировками для example.org: `references/eeat-medical.md`.
|
|
72
|
+
- [ ] **P0** `title` 50–60 и уникальный; `description` 140–160; один `H1`, H2–H6 по порядку.
|
|
73
|
+
- [ ] **P0** 200, нет `noindex`/robots-запрета, `canonical` абсолютный, URL в `sitemap.xml`.
|
|
74
|
+
- [ ] **P0** JSON-LD валиден и = контент; не сирота, 2–6 контекстных ссылок.
|
|
75
|
+
- [ ] **P0** медицина: автор-врач, даты, источники, дисклеймер, лицензия.
|
|
76
|
+
- [ ] **P1** URL читаемый (смена — 301), OG/`og:image` 1200×630, крошки + `BreadcrumbList`, `alt`/размеры/lazy (LCP — без lazy)/WebP, CWV ≤2,5 с/≤200 мс/≤0,1 или план с датой.
|
|
77
|
+
- [ ] **P2** `lang`/charset/viewport/favicon; нет битых ссылок и цепочек.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
> Часть навыка seo. ≈2 050 токенов. Читать, когда: сомневаешься в приёме («так делают все»), защищаешь решение перед заказчиком или ищешь причину просадки трафика и доверия.
|
|
2
|
+
|
|
3
|
+
# Антипаттерны SEO: что мгновенно убивает позиции и доверие
|
|
4
|
+
|
|
5
|
+
> Эти приёмы не «слабый эффект», а риск фильтра, санкций и репутационной потери — особенно в медицине (YMYL).
|
|
6
|
+
> Нашёл такое в коде или тексте — фиксируй в отчёте как риск и убирай, даже если «работало годами».
|
|
7
|
+
> Детали по разделам: `technical-seo.md` §14, `content-seo.md` §12, `structured-data.md` §11, `eeat-medical.md` §5.
|
|
8
|
+
|
|
9
|
+
## 1. Контент и переоптимизация
|
|
10
|
+
|
|
11
|
+
- keyword stuffing — ключи в текст, alt и заголовки «для плотности».
|
|
12
|
+
- текст «для роботов», а не для людей: перечисление запросов вместо ответа.
|
|
13
|
+
- скрытый текст и скрытые ссылки (`display:none`, белым по белому, `text-indent`) — санкционный риск.
|
|
14
|
+
- двери (doorway pages) — пустые страницы-прокладки под каждый запрос.
|
|
15
|
+
- одинаковый текст на N страниц (шаблонные описания услуг, копии карточек врачей).
|
|
16
|
+
- каннибализация запросов: две страницы под один интент конкурируют и обе проигрывают.
|
|
17
|
+
- заголовки-обманки («Вы не поверите»), кликбейт не по содержанию.
|
|
18
|
+
- «гарантируем излечение» и любые обещания результата в медицине — и юридический, и репутационный риск.
|
|
19
|
+
- контент без автора, без даты публикации и обновления.
|
|
20
|
+
- копипаст с других медсайтов без переработки в факты и местную специфику.
|
|
21
|
+
- автогенерация массы однотипных ИИ-страниц без редактуры (риск «scaled content abuse»).
|
|
22
|
+
|
|
23
|
+
## 2. Технические
|
|
24
|
+
|
|
25
|
+
- `noindex` на деньгах/услугах (часто «после правок безопасности»).
|
|
26
|
+
- `canonical` на чужой URL, на главную со всех страниц или с параметрами (`?utm=`, `?sort=`).
|
|
27
|
+
- редирект-цепочки (`A → B → C`), 302 вместо 301 для постоянных переездов.
|
|
28
|
+
- дубли www/без-www, http/https, слэш/без слэша — без 301.
|
|
29
|
+
- «мягкие 404»: 200 на несуществующей странице, редирект на главную вместо 404.
|
|
30
|
+
- закрытые в `robots.txt` CSS/JS/картинки — робот не отрисует страницу.
|
|
31
|
+
- sitemap с 404, редиректами и `noindex`; `lastmod` = «сегодня» у всех URL.
|
|
32
|
+
- тысячи мусорных URL в индексе (фасеты, сортировки, `print`, поиск по сайту).
|
|
33
|
+
- `title` одинаковый на всех страницах; `H1` = логотип или отсутствует.
|
|
34
|
+
- контент и мета только через JS, без SSR/SSG/prerender.
|
|
35
|
+
- блокировка обхода ради «экономии краулинга» — робот не увидит `noindex` и canonical.
|
|
36
|
+
- lazy-load на LCP-изображении; CLS из-за шрифтов и баннеров без размеров.
|
|
37
|
+
|
|
38
|
+
## 3. Медицина и доверие
|
|
39
|
+
|
|
40
|
+
- отзывы-выдумки, накрутка рейтинга, удаление негатива.
|
|
41
|
+
- `aggregateRating` на собственные отзывы (self-serving reviews в rich results не показываются, накрутка = риск).
|
|
42
|
+
- фото-стоки врачей вместо реальных; выдуманные стаж, награды, публикации.
|
|
43
|
+
- дисклеймер «мы не отвечаем» / его отсутствие; назначения «по интернету».
|
|
44
|
+
- противоречивые цены: в тексте ≠ в прайсе.
|
|
45
|
+
- разные телефоны/адреса на сайте и в Яндекс Бизнесе, 2ГИС, GBP — ломает локальную выдачу и доверие.
|
|
46
|
+
- отсутствие «когда срочно к врачу» на симптомных статьях.
|
|
47
|
+
|
|
48
|
+
## 4. ИИ-эра
|
|
49
|
+
|
|
50
|
+
- верить в «секретный файл `llms.txt`»: Google официально заявил, что такие файлы ему не нужны и на ранжирование
|
|
51
|
+
не влияют (`content-seo.md` §10).
|
|
52
|
+
- генерировать сотни ИИ-статей без редактуры и факт-чека (риск «scaled content abuse»).
|
|
53
|
+
- прятать контент от ИИ-сниппетов (`nosnippet`, блокировка `Google-Extended`) и одновременно ждать трафика
|
|
54
|
+
из ИИ-ответов — это взаимоисключающие решения, выбирай осознанно.
|
|
55
|
+
- «оптимизация под ИИ» вместо базовой индексации, полезного контента и разметки сущностей.
|
|
56
|
+
|
|
57
|
+
## 5. Что делать вместо
|
|
58
|
+
|
|
59
|
+
| Вместо | Делай |
|
|
60
|
+
|---|---|
|
|
61
|
+
| ключи в текст | ответ на интент в первых 100–150 словах + структура H2/списки/таблицы |
|
|
62
|
+
| страница-прокладка под запрос | одна сильная страница под кластер + перелинковка |
|
|
63
|
+
| скрыть от поиска | `noindex,follow` + причина в отчёте |
|
|
64
|
+
| скрыть от ИИ | решить: нужен трафик из ИИ или закрытый контент; не «и то, и то» |
|
|
65
|
+
| накрутить рейтинг | реальные отзывы с площадок + ответы администрации |
|
|
66
|
+
| обещать излечение | «врач подберёт схему по результатам обследования» |
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> Часть навыка seo. ≈7 900 токенов. Читать, когда: аудит сайта или финальная приёмка — 107 проверок P0/P1/P2, шаблоны отчёта, карта автотестов `seo-audit.mjs`.
|
|
2
|
+
|
|
1
3
|
# Чек-лист SEO-аудита (P0/P1/P2) + шаблон отчёта
|
|
2
4
|
|
|
3
5
|
> 107 проверок по 12 областям. Используй для аудита существующего сайта и как «definition of done» для новых
|
|
@@ -284,6 +286,18 @@
|
|
|
284
286
|
<смена URL без редиректов, потеря трафика, YMYL-риски>
|
|
285
287
|
```
|
|
286
288
|
|
|
289
|
+
### Короткий отчёт по странице/задаче (не аудит)
|
|
290
|
+
|
|
291
|
+
```markdown
|
|
292
|
+
## SEO: <страница/задача>
|
|
293
|
+
Интент: <информационный/коммерческий/локальный> · кластер: <главный запрос + 3–5 поддерживающих>
|
|
294
|
+
Что сделано: <5–8 пунктов: title/desc, H1, canonical, JSON-LD, ссылки, alt, редиректы, sitemap>
|
|
295
|
+
Проверено: <валидатор: 0 ошибок; 200 + index; robots/sitemap; CWV; curl/view-source>
|
|
296
|
+
Baseline: <если применимо — показы/клики/позиция/CTR до, дата>
|
|
297
|
+
Риски: <что может просесть и почему; какие P1/P2 отложены>
|
|
298
|
+
Что дальше: <1–3 шага: контент, перелинковка, ускорение, мониторинг>
|
|
299
|
+
```
|
|
300
|
+
|
|
287
301
|
## 15. Как приоритизировать (если P0 много)
|
|
288
302
|
|
|
289
303
|
1. **Индексация** (IDX-01…04, 07) — без неё остальное бессмысленно.
|