dsh-desktop-kit 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +152 -2
- package/client.js +4101 -0
- package/cordis.patch.yml +5 -0
- 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 +84 -0
- package/package.json +70 -4
- package/plugins/dsh-gkb-ru-ui/cordis.patch.yml +6 -0
- package/plugins/dsh-gkb-ru-ui/lib/client.js +1331 -0
- package/plugins/dsh-gkb-ru-ui/lib/index.js +186 -0
- package/plugins/dsh-gkb-ru-ui/lib/skills.js +570 -0
- package/plugins/dsh-gkb-ru-ui/package.json +28 -0
- 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/README.md +70 -0
- package/plugins/dsh-peak-guard/client.js +741 -0
- package/plugins/dsh-peak-guard/cordis.patch.yml +5 -0
- package/plugins/dsh-peak-guard/icon.svg +12 -0
- package/plugins/dsh-peak-guard/index.js +2 -0
- package/plugins/dsh-peak-guard/locale/en.json +6 -0
- package/plugins/dsh-peak-guard/locale/ru.json +6 -0
- package/plugins/dsh-peak-guard/locale/zh.json +6 -0
- package/plugins/dsh-peak-guard/package.json +33 -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/README.md +62 -0
- package/plugins/dsh-profile-transfer/bootstrap/01-INSTALL.cmd +7 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-ARCHIVE.md +54 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-/320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/232/320/220.md +42 -0
- package/plugins/dsh-profile-transfer/bootstrap/install-on-clean-machine.ps1 +119 -0
- package/plugins/dsh-profile-transfer/bootstrap//320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/230/320/242/320/254.cmd +5 -0
- package/plugins/dsh-profile-transfer/client.js +806 -0
- package/plugins/dsh-profile-transfer/cordis.patch.yml +3 -0
- package/plugins/dsh-profile-transfer/icon.svg +13 -0
- package/plugins/dsh-profile-transfer/index.js +375 -0
- package/plugins/dsh-profile-transfer/locale/en.json +6 -0
- package/plugins/dsh-profile-transfer/locale/ru.json +6 -0
- package/plugins/dsh-profile-transfer/locale/zh.json +6 -0
- package/plugins/dsh-profile-transfer/package.json +36 -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-profile-transfer/transfer.js +1004 -0
- package/plugins/dsh-project-memory/README.md +71 -0
- package/plugins/dsh-project-memory/cordis.patch.yml +4 -0
- package/plugins/dsh-project-memory/icon.svg +12 -0
- package/plugins/dsh-project-memory/index.js +1240 -0
- package/plugins/dsh-project-memory/locale/en.json +6 -0
- package/plugins/dsh-project-memory/locale/ru.json +6 -0
- package/plugins/dsh-project-memory/locale/zh.json +6 -0
- package/plugins/dsh-project-memory/package.json +26 -0
- package/plugins/dsh-session-move/README.md +67 -0
- package/plugins/dsh-session-move/client.js +719 -0
- package/plugins/dsh-session-move/cordis.patch.yml +5 -0
- package/plugins/dsh-session-move/icon.svg +14 -0
- package/plugins/dsh-session-move/index.js +497 -0
- package/plugins/dsh-session-move/locale/en.json +6 -0
- package/plugins/dsh-session-move/locale/ru.json +6 -0
- package/plugins/dsh-session-move/locale/zh.json +6 -0
- package/plugins/dsh-session-move/package.json +31 -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 +55 -0
- package/skills/content-writing/README.md +87 -0
- package/skills/content-writing/SKILL.md +85 -0
- package/skills/content-writing/assets/checklists/fact-check.md +53 -0
- package/skills/content-writing/assets/checklists/publish.md +65 -0
- package/skills/content-writing/assets/checklists/social.md +40 -0
- package/skills/content-writing/assets/templates/article.md +47 -0
- package/skills/content-writing/assets/templates/brief.md +44 -0
- package/skills/content-writing/assets/templates/doctor-card.md +41 -0
- package/skills/content-writing/assets/templates/image-prompts.md +128 -0
- package/skills/content-writing/assets/templates/post-telegram.md +36 -0
- package/skills/content-writing/assets/templates/post-vk.md +42 -0
- package/skills/content-writing/assets/templates/press-release.md +56 -0
- package/skills/content-writing/assets/templates/science-pop-note.md +55 -0
- package/skills/content-writing/assets/templates/service-card.md +46 -0
- package/skills/content-writing/references/anti-ai-style.md +248 -0
- package/skills/content-writing/references/editing.md +185 -0
- package/skills/content-writing/references/fact-checking.md +205 -0
- package/skills/content-writing/references/government-medical.md +246 -0
- package/skills/content-writing/references/images.md +212 -0
- package/skills/content-writing/references/journalism.md +252 -0
- 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/science-popular.md +218 -0
- package/skills/content-writing/references/seo-content.md +172 -0
- package/skills/content-writing/references/social-media.md +253 -0
- package/skills/content-writing/references/sources.md +49 -0
- package/skills/content-writing/references/templates.md +291 -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 +47 -0
- package/skills/debugging-playbook/SKILL.md +42 -0
- package/skills/design-critique/SKILL.md +65 -0
- 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 +48 -0
- 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 +60 -0
- package/skills/pg-upgrade-verify/SKILL.md +67 -0
- package/skills/project-deep-dive/SKILL.md +45 -0
- package/skills/project-deep-dive/references/recon-commands.md +90 -0
- package/skills/project-deep-dive/references/section-templates.md +104 -0
- package/skills/project-deep-dive/references/tool-and-process.md +86 -0
- package/skills/project-memory-maintenance/SKILL.md +55 -0
- package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
- package/skills/project-memory-maintenance/references/journal-template.md +50 -0
- package/skills/project-memory-maintenance/references/section-rules.md +59 -0
- package/skills/release-and-deploy/SKILL.md +53 -0
- package/skills/requirements-and-planning/SKILL.md +49 -0
- 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 +40 -0
- package/skills/seo/README.md +60 -0
- package/skills/seo/SKILL.md +77 -0
- package/skills/seo/assets/README.md +66 -0
- package/skills/seo/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/seo/assets/scripts/README.md +179 -0
- package/skills/seo/assets/scripts/lib/args.mjs +105 -0
- package/skills/seo/assets/scripts/lib/browser.mjs +620 -0
- package/skills/seo/assets/scripts/lib/zip.mjs +191 -0
- package/skills/seo/assets/scripts/seo-audit.mjs +1675 -0
- package/skills/seo/assets/snippets/jsonld-breadcrumb.json +30 -0
- package/skills/seo/assets/snippets/jsonld-faq.json +39 -0
- package/skills/seo/assets/snippets/jsonld-medical-clinic.json +49 -0
- package/skills/seo/assets/snippets/jsonld-medical-webpage.json +33 -0
- package/skills/seo/assets/snippets/jsonld-organization.json +74 -0
- package/skills/seo/assets/snippets/jsonld-physician.json +46 -0
- package/skills/seo/assets/snippets/meta.blade.php +61 -0
- package/skills/seo/assets/snippets/robots.txt +61 -0
- package/skills/seo/assets/snippets/sitemap-urlset-example.xml +72 -0
- package/skills/seo/assets/snippets/sitemap.xml +36 -0
- package/skills/seo/references/antipatterns.md +66 -0
- package/skills/seo/references/audit-checklist.md +319 -0
- package/skills/seo/references/content-seo.md +204 -0
- package/skills/seo/references/eeat-medical.md +219 -0
- package/skills/seo/references/measurement.md +250 -0
- package/skills/seo/references/on-page.md +214 -0
- package/skills/seo/references/page-templates.md +56 -0
- package/skills/seo/references/stack-recipes.md +695 -0
- package/skills/seo/references/structured-data.md +487 -0
- package/skills/seo/references/technical-seo.md +296 -0
- package/skills/service-desk-conventions/SKILL.md +52 -0
- package/skills/service-desk-db-safety/SKILL.md +63 -0
- package/skills/service-desk-release/SKILL.md +61 -0
- package/skills/service-desk-testing/SKILL.md +61 -0
- package/skills/service-desk-ui/SKILL.md +52 -0
- package/skills/skills-router/SKILL.md +53 -0
- 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 +52 -0
- package/skills/ui-design-system/SKILL.md +50 -0
- 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 +47 -0
- 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 +89 -0
- package/skills/wow-design/assets/kit/README.md +195 -0
- package/skills/wow-design/assets/kit/assets/css/base.css +158 -0
- package/skills/wow-design/assets/kit/assets/css/components.css +1001 -0
- package/skills/wow-design/assets/kit/assets/css/fonts.css +73 -0
- package/skills/wow-design/assets/kit/assets/css/pages.css +737 -0
- package/skills/wow-design/assets/kit/assets/css/tokens.css +218 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-golos-text.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-lora.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-unbounded.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-italic.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/js/kit.js +550 -0
- package/skills/wow-design/assets/kit/pages/dashboard.html +539 -0
- package/skills/wow-design/assets/kit/pages/hospital.html +430 -0
- package/skills/wow-design/assets/kit/showcase.html +1164 -0
- package/skills/wow-design/assets/scripts/LICENSE-axe-core.txt +362 -0
- package/skills/wow-design/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/wow-design/assets/scripts/README.md +312 -0
- package/skills/wow-design/assets/scripts/audit.mjs +1200 -0
- package/skills/wow-design/assets/scripts/capture.mjs +337 -0
- package/skills/wow-design/assets/scripts/package.json +30 -0
- package/skills/wow-design/references/anti-patterns.md +252 -0
- package/skills/wow-design/references/critique-rubric.md +262 -0
- package/skills/wow-design/references/design-brief-template.md +48 -0
- package/skills/wow-design/references/inspiration.md +203 -0
- package/skills/wow-design/references/presets.md +99 -0
- package/skills/wow-design/references/principles.md +371 -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 +96 -0
- package/skills/wow-design/references/visual-qa.md +82 -0
- package/skills/wow-design/references/wow-levers.md +43 -0
- package/tools/skill-cost.mjs +76 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
> Часть навыка seo. ≈7 900 токенов. Читать, когда: аудит сайта или финальная приёмка — 107 проверок P0/P1/P2, шаблоны отчёта, карта автотестов `seo-audit.mjs`.
|
|
2
|
+
|
|
3
|
+
# Чек-лист SEO-аудита (P0/P1/P2) + шаблон отчёта
|
|
4
|
+
|
|
5
|
+
> 107 проверок по 12 областям. Используй для аудита существующего сайта и как «definition of done» для новых
|
|
6
|
+
> страниц. Приоритеты: **P0** — блокирует индексацию/трафик/доверие (чинить сразу), **P1** — заметно влияет
|
|
7
|
+
> (чинить в текущей итерации), **P2** — улучшение (в бэклог). Проверено 04.11.2026.
|
|
8
|
+
|
|
9
|
+
## 0. Порог сдачи
|
|
10
|
+
|
|
11
|
+
- Аудит: все P0 закрыты или явно вынесены в отчёт с причиной и владельцем; P1 — закрыты или запланированы.
|
|
12
|
+
- Новая страница: 0 P0, 0 P1 в блоках «Мета», «Контент», «Индексация», «YMYL»; JSON-LD валиден; CWV в норме
|
|
13
|
+
(или есть план с датой).
|
|
14
|
+
- `seo-audit.mjs`: `critical = 0`, `serious = 0` (для страницы); для сайта — `critical = 0` и план по `serious`.
|
|
15
|
+
|
|
16
|
+
## 1. Индексация и обход
|
|
17
|
+
|
|
18
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
19
|
+
|---|---|---|---|---|
|
|
20
|
+
| IDX-01 | Страница отдаёт HTTP 200 | P0 | `curl -I URL` | исправить статус/404/500, убрать «мягкий 404» |
|
|
21
|
+
| IDX-02 | Нет `<meta name="robots" content="noindex">` на деньгах/услугах | P0 | view-source / GSC URL Inspection | убрать `noindex`, проверить шаблон |
|
|
22
|
+
| IDX-03 | Страница не закрыта в robots.txt | P0 | `curl /robots.txt`, GSC тест robots | открыть Allow/убрать Disallow |
|
|
23
|
+
| IDX-04 | Страница есть в sitemap.xml и sitemap валиден | P0 | открыть `/sitemap.xml`, Вебмастер/GSC | добавить URL, перегенерировать |
|
|
24
|
+
| IDX-05 | В sitemap нет 404/301/`noindex` | P1 | сверка sitemap с ответами (скрипт/краул) | фильтровать выборку URL |
|
|
25
|
+
| IDX-06 | `lastmod` реальный (не «сегодня» у всех) | P2 | сравнить даты с изменениями | брать `updated_at` сущностей |
|
|
26
|
+
| IDX-07 | Нет «мягких 404» (200 на пустых страницах) | P0 | краул/выборка URL-ов, GSC «Страницы» | отдавать 404/410, `SET_STATUS_404=Y` (Bitrix) |
|
|
27
|
+
| IDX-08 | Нет лишних URL в индексе (фасеты, сортировки, поиск) | P1 | GSC «Страницы → Проиндексировано», `site:` | `noindex,follow`, canonical, Clean-param |
|
|
28
|
+
| IDX-09 | Служебные зоны (админка, кабинет, «спасибо») закрыты/`noindex` | P1 | view-source | `noindex`/robots |
|
|
29
|
+
| IDX-10 | Тестовые/стейдж-домены закрыты | P0 | GSC/Вебмастер, поиск по домену | Basic Auth/`noindex`/удалить |
|
|
30
|
+
|
|
31
|
+
## 2. URL и редиректы
|
|
32
|
+
|
|
33
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
34
|
+
|---|---|---|---|---|
|
|
35
|
+
| URL-01 | Одна версия сайта: https + без www (+ без/со слэшем) | P0 | `curl -I` на 4 варианта | 301 на каноническую версию |
|
|
36
|
+
| URL-02 | Нет цепочек редиректов (1 прыжок) | P1 | краул/ручная проверка | прямые 301 |
|
|
37
|
+
| URL-03 | 301, а не 302, для постоянных переездов | P1 | `curl -I` | сменить код |
|
|
38
|
+
| URL-04 | URL читаемые: латиница, дефисы, без параметров | P1 | глазами/краул | переименовать + 301 |
|
|
39
|
+
| URL-05 | Нет `index.php`, `?id=`, КАПС, подчёркиваний | P2 | краул | ЧПУ + 301 |
|
|
40
|
+
| URL-06 | Смена URL сопровождается 301 + обновлением sitemap/ссылок | P0 | git-диff, GSC | карта редиректов |
|
|
41
|
+
| URL-07 | Удалённые страницы: 410 или 301 на релевантную | P1 | GSC 404-отчёт | решить судьбу каждой |
|
|
42
|
+
| URL-08 | Относительный/абсолютный URL в canonical корректен | P0 | view-source | абсолютный URL |
|
|
43
|
+
| URL-09 | Пагинация: canonical на себя, уникальные title | P1 | view-source `?page=2` | поправить шаблон |
|
|
44
|
+
| URL-10 | 404-страница отдаёт 404 и содержит навигацию/поиск | P2 | открыть несуществующий URL | настроить 404-шаблон |
|
|
45
|
+
|
|
46
|
+
## 3. Мета и сниппет
|
|
47
|
+
|
|
48
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
49
|
+
|---|---|---|---|---|
|
|
50
|
+
| META-01 | `<title>` есть, уникальный, 50–60 симв. | P0 | `seo-audit.mjs`, сверка по сайту | шаблоны + свойства |
|
|
51
|
+
| META-02 | `title` описывает страницу, запрос в начале, бренд в конце | P1 | глазами | переписать |
|
|
52
|
+
| META-03 | `description` есть, уникальный, 140–160 симв. | P1 | `seo-audit.mjs` | SEO-шаблоны/поля |
|
|
53
|
+
| META-04 | Один `H1`, совпадает с интентом | P0 | `seo-audit.mjs` | убрать лишние H1 |
|
|
54
|
+
| META-05 | Иерархия H2–H6 без пропусков | P2 | `seo-audit.mjs` | поправить уровни |
|
|
55
|
+
| META-06 | OG-теги + `og:image` 1200×630 | P1 | view-source/отладчик соцсетей | шаблон OG |
|
|
56
|
+
| META-07 | `canonical` есть и корректен | P0 | `seo-audit.mjs` | см. URL-08 |
|
|
57
|
+
| META-08 | `lang="ru"`, `charset`, `viewport` | P1 | view-source | поправить head |
|
|
58
|
+
| META-09 | Нет дублей мета-тегов (два title/canonical) | P1 | `seo-audit.mjs` | убрать дубли в шаблоне |
|
|
59
|
+
| META-10 | Сниппет выглядит осмысленно (title+desc+путь) | P2 | «как в поиске» / GSC | переписать title/desc |
|
|
60
|
+
|
|
61
|
+
## 4. Контент и структура
|
|
62
|
+
|
|
63
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
64
|
+
|---|---|---|---|---|
|
|
65
|
+
| CNT-01 | Ответ на интент в первых 100–150 словах | P0 | прочитать | переписать лид |
|
|
66
|
+
| CNT-02 | Контент уникален (не копипаст) | P0 | поиск фразы в кавычках | переработать |
|
|
67
|
+
| CNT-03 | Нет каннибализации (2 страницы под 1 интент) | P1 | GSC «Страницы» по запросу | склеить/развести интенты |
|
|
68
|
+
| CNT-04 | Структура: H2-подтемы, списки, таблицы | P1 | прочитать | переверстать |
|
|
69
|
+
| CNT-05 | Есть блок «Кому показано/Показания» (услуга) | P0 | прочитать | добавить |
|
|
70
|
+
| CNT-06 | Есть «Как проходит» и «Подготовка» | P0 | прочитать | добавить |
|
|
71
|
+
| CNT-07 | Есть «Противопоказания/ограничения» | P0 | прочитать | добавить |
|
|
72
|
+
| CNT-08 | Есть FAQ 5–8 реальных вопросов | P1 | прочитать | собрать из спроса |
|
|
73
|
+
| CNT-09 | Есть цены/сроки/что входит | P1 | прочитать | добавить таблицу цен |
|
|
74
|
+
| CNT-10 | Есть CTA (запись/звонок) | P1 | прочитать | добавить блок |
|
|
75
|
+
| CNT-11 | Нет воды и «инновационных решений» | P2 | прочитать | вычистить |
|
|
76
|
+
| CNT-12 | Свежесть: дата обновления актуальна | P1 | view-source/текст | обновить при изменениях |
|
|
77
|
+
|
|
78
|
+
## 5. Изображения
|
|
79
|
+
|
|
80
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
81
|
+
|---|---|---|---|---|
|
|
82
|
+
| IMG-01 | У всех контентных изображений `alt` | P1 | `seo-audit.mjs` | добавить описательный alt |
|
|
83
|
+
| IMG-02 | `alt` не спам ключами/не «img1» | P2 | глазами | переписать |
|
|
84
|
+
| IMG-03 | Есть `width`/`height` (или `aspect-ratio`) | P1 | `seo-audit.mjs`/DevTools | добавить размеры |
|
|
85
|
+
| IMG-04 | Форматы WebP/AVIF, вес ≤200 КБ | P2 | DevTools Network | конвертировать/сжать |
|
|
86
|
+
| IMG-05 | LCP-изображение без `loading="lazy"` | P0 | Lighthouse/DevTools | `fetchpriority="high"` |
|
|
87
|
+
| IMG-06 | Осмысленные имена файлов, нет пробелов/кириллицы | P2 | краул | переименовать |
|
|
88
|
+
| IMG-07 | Реальные фото, не стоки (доверие) | P1 | глазами | заменить |
|
|
89
|
+
|
|
90
|
+
## 6. Ссылки (внутренние/внешние)
|
|
91
|
+
|
|
92
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
93
|
+
|---|---|---|---|---|
|
|
94
|
+
| LNK-01 | Нет битых внутренних ссылок (404) | P0 | краул/`seo-audit.mjs` | исправить/редирект |
|
|
95
|
+
| LNK-02 | Страница не «сирота» (есть входящие) | P1 | краул | добавить ссылки с хаба/статей |
|
|
96
|
+
| LNK-03 | 2–6 контекстных ссылок в тексте | P1 | `seo-audit.mjs` | добавить по смыслу |
|
|
97
|
+
| LNK-04 | Анкоры описательные, не «здесь/подробнее» | P1 | `seo-audit.mjs` | переписать анкоры |
|
|
98
|
+
| LNK-05 | Ссылки на важные страницы с главной/хаба | P1 | глазами/краул | добавить в меню/хаб |
|
|
99
|
+
| LNK-06 | Внешние ссылки: живые, на авторитетные источники | P2 | `seo-audit.mjs` | обновить/убрать битые |
|
|
100
|
+
| LNK-07 | Абсолютные URL в canonical/OG/sitemap | P0 | view-source | исправить |
|
|
101
|
+
|
|
102
|
+
## 7. Структурированные данные
|
|
103
|
+
|
|
104
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
105
|
+
|---|---|---|---|---|
|
|
106
|
+
| SD-01 | JSON-LD присутствует на значимых страницах | P1 | `seo-audit.mjs` | добавить из `structured-data.md` |
|
|
107
|
+
| SD-02 | JSON валиден (нет ошибок парсинга) | P0 | Rich Results Test/`seo-audit.mjs` | исправить JSON |
|
|
108
|
+
| SD-03 | Поля совпадают с видимым контентом | P0 | глазами | убрать невидимое/поправить |
|
|
109
|
+
| SD-04 | `BreadcrumbList` есть и совпадает с крошками | P1 | валидатор | добавить |
|
|
110
|
+
| SD-05 | `Organization`/`MedicalClinic` с адресом/телефоном/логотипом | P1 | валидатор | добавить |
|
|
111
|
+
| SD-06 | `Physician` на профилях врачей | P1 | валидатор | добавить |
|
|
112
|
+
| SD-07 | `MedicalWebPage`/`Article` с автором и датами | P1 | валидатор | добавить |
|
|
113
|
+
| SD-08 | Нет устаревших типов (HowTo, SpecialAnnouncement) | P2 | `seo-audit.mjs` | удалить |
|
|
114
|
+
| SD-09 | Нет выдуманных `aggregateRating`/`review` | P0 | глазами | убрать |
|
|
115
|
+
| SD-10 | URL в разметке абсолютные | P1 | `seo-audit.mjs` | заменить |
|
|
116
|
+
|
|
117
|
+
## 8. Скорость и Core Web Vitals
|
|
118
|
+
|
|
119
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
120
|
+
|---|---|---|---|---|
|
|
121
|
+
| CWV-01 | LCP ≤2,5 с (поле, 75-й перцентиль) | P1 | PSI/GSC/CrUX | оптимизация LCP-ресурса |
|
|
122
|
+
| CWV-02 | INP ≤200 мс | P1 | PSI/GSC | меньше/дробить JS |
|
|
123
|
+
| CWV-03 | CLS ≤0,1 | P1 | PSI/GSC | размеры, шрифты, баннеры |
|
|
124
|
+
| CWV-04 | TTFB <0,8 с (цель) | P2 | PSI/DevTools | кеш/CDN/сервер |
|
|
125
|
+
| CWV-05 | Нет блокирующего CSS/JS в head | P2 | Lighthouse | async/defer/критический CSS |
|
|
126
|
+
| CWV-06 | Шрифты: `font-display`, preload, локальные | P2 | view-source | настроить |
|
|
127
|
+
| CWV-07 | Изображения оптимизированы (формат/размер/srcset) | P2 | DevTools | конвертировать |
|
|
128
|
+
| CWV-08 | Сторонние скрипты не блокируют (счётчики, чаты) | P2 | Lighthouse | lazy/async |
|
|
129
|
+
|
|
130
|
+
## 9. Мобильный и доступность
|
|
131
|
+
|
|
132
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
133
|
+
|---|---|---|---|---|
|
|
134
|
+
| MOB-01 | Нет горизонтального скролла на 390px | P1 | DevTools 390 | адаптив/таблицы в скролл-контейнер |
|
|
135
|
+
| MOB-02 | Тач-цели ≥44px | P2 | DevTools | увеличить |
|
|
136
|
+
| MOB-03 | Шрифт в полях ≥16px (iOS не зумит) | P2 | DevTools | поправить CSS |
|
|
137
|
+
| MOB-04 | Мобильная версия содержит тот же контент/мета, что десктоп | P0 | сравнить | mobile-first |
|
|
138
|
+
| MOB-05 | Контраст текста ≥4,5:1 | P2 | axe/Lighthouse | поправить цвета |
|
|
139
|
+
| MOB-06 | Клавиатурная доступность, focus-visible | P2 | Tab | поправить |
|
|
140
|
+
| MOB-07 | Кнопки/ссылки имеют доступные названия | P2 | axe | aria-label |
|
|
141
|
+
|
|
142
|
+
## 10. E-E-A-T / YMYL (медицина)
|
|
143
|
+
|
|
144
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
145
|
+
|---|---|---|---|---|
|
|
146
|
+
| YMYL-01 | Автор-врач с ФИО/специальностью/ссылкой на профиль | P0 | прочитать | добавить автора |
|
|
147
|
+
| YMYL-02 | Рецензент и дата проверки | P1 | прочитать | добавить |
|
|
148
|
+
| YMYL-03 | Дата публикации и обновления видимы | P0 | прочитать | вывести даты |
|
|
149
|
+
| YMYL-04 | Ссылки на первоисточники (Минздрав/ВОЗ/PubMed) | P1 | прочитать | добавить |
|
|
150
|
+
| YMYL-05 | Дисклеймер (общий + под статьёй) | P0 | прочитать | добавить |
|
|
151
|
+
| YMYL-06 | Нет обещаний излечения/гарантий | P0 | прочитать | переписать |
|
|
152
|
+
| YMYL-07 | Нет назначений «по интернету» | P0 | прочитать | переписать |
|
|
153
|
+
| YMYL-08 | Лицензия (номер/дата/орган) видна | P1 | прочитать | добавить страницу |
|
|
154
|
+
| YMYL-09 | Юрлицо/ИНН/ОГРН/главврач | P1 | прочитать | добавить |
|
|
155
|
+
| YMYL-10 | «Когда срочно к врачу» на симптомных статьях | P1 | прочитать | добавить |
|
|
156
|
+
| YMYL-11 | Нет выдуманных отзывов/стажа/наград | P0 | выборочно | удалить/заменить |
|
|
157
|
+
| YMYL-12 | Политика конфиденциальности + согласие ПДн | P0 | формы | добавить |
|
|
158
|
+
|
|
159
|
+
## 11. Локальное SEO (клиника)
|
|
160
|
+
|
|
161
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
162
|
+
|---|---|---|---|---|
|
|
163
|
+
| LOC-01 | NAP совпадает на сайте/в Яндекс Бизнесе/2ГИС | P0 | сверка | привести к одному формату |
|
|
164
|
+
| LOC-02 | Регион указан в Яндекс Вебмастере | P0 | Вебмастер → Регион | указать Москву |
|
|
165
|
+
| LOC-03 | Часы работы актуальны | P1 | сверка | обновить |
|
|
166
|
+
| LOC-04 | Карта/схема проезда на «Контактах» | P1 | глазами | встроить карту |
|
|
167
|
+
| LOC-05 | Страницы филиалов с отдельным адресом | P1 | краул | создать |
|
|
168
|
+
| LOC-06 | Отзывы реальные + ответы | P2 | глазами | отвечать/модерировать |
|
|
169
|
+
| LOC-07 | Карточки: Яндекс Бизнес, 2ГИС, GBP | P1 | открыть | заполнить |
|
|
170
|
+
| LOC-08 | Локальные упоминания (район/метро) в тексте | P2 | прочитать | добавить |
|
|
171
|
+
|
|
172
|
+
## 12. Аналитика и мониторинг
|
|
173
|
+
|
|
174
|
+
| ID | Проверка | Приоритет | Как проверить | Как чинить |
|
|
175
|
+
|---|---|---|---|---|
|
|
176
|
+
| AN-01 | GSC: сайт подтверждён, sitemap отправлен | P0 | GSC | настроить |
|
|
177
|
+
| AN-02 | Яндекс Вебмастер: подтверждён, sitemap отправлен | P0 | Вебмастер | настроить |
|
|
178
|
+
| AN-03 | GA4/Метрика: цели «запись/звонок/форма» | P1 | интерфейс | настроить |
|
|
179
|
+
| AN-04 | UTM-разметка внешних кампаний | P2 | ссылки | внедрить шаблон |
|
|
180
|
+
| AN-05 | Отчёты «до/после» и baseline | P1 | документ | завести файл |
|
|
181
|
+
| AN-06 | Мониторинг 404/5xx (логи/GSC/Вебмастер) | P1 | отчёты | алерт |
|
|
182
|
+
|
|
183
|
+
**Итого: 107 проверок** (P0 — 35, P1 — 48, P2 — 24).
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 13. Автоматизируемые проверки (seo-audit.mjs)
|
|
188
|
+
|
|
189
|
+
> Инструмент делает **qa-toolsmith** (task-5) и живёт в `assets/scripts/seo-audit.mjs` этого скилла.
|
|
190
|
+
> Контракт интерфейса (согласован с Лидом):
|
|
191
|
+
> `node seo-audit.mjs <file|url> --out <dir> [--json]`
|
|
192
|
+
> Выход: `<dir>/seo-audit.json` и `<dir>/seo-audit.md`; severity: `critical | serious | minor`.
|
|
193
|
+
|
|
194
|
+
### Что инструмент обязан закрывать (маппинг на ID выше)
|
|
195
|
+
|
|
196
|
+
| Категория | Проверки | Severity |
|
|
197
|
+
|---|---|---|
|
|
198
|
+
| `meta` | META-01 (наличие/длина title), META-03 (description), META-09 (дубли), META-08 (`lang`, charset, viewport), META-06 (OG: наличие ключевых) | critical (нет title/H1), serious (длина/дубли), minor (OG) |
|
|
199
|
+
| `headings` | META-04 (count H1), META-05 (порядок H2–H6) | critical (0 или >1 H1), minor (порядок) |
|
|
200
|
+
| `canonical` | META-07, URL-08, LNK-07 (абсолютность, self-referencing, дубли canonical) | critical |
|
|
201
|
+
| `robots` | IDX-02 (`noindex` на странице), IDX-03 (Disallow для URL, если передан robots.txt) | critical |
|
|
202
|
+
| `jsonld` | SD-01, SD-02 (парсинг), SD-08 (устаревшие типы), SD-10 (относительные URL), SD-03 (пустые обязательные поля по типу) | critical (битый JSON), serious (нет разметки/полей), minor |
|
|
203
|
+
| `images` | IMG-01 (`alt`), IMG-03 (`width/height`/`aspect-ratio`), IMG-05 (lazy на первом экране/LCP), вес/формат (если размер известен) | serious (нет alt/размеров), minor (формат) |
|
|
204
|
+
| `links` | LNK-01 (битые внутренние, при `--crawl`), LNK-03 (мало внутренних), LNK-04 (анкоры «здесь/подробнее»), LNK-07 | serious (битые), minor (анкоры) |
|
|
205
|
+
| `sitemap` | IDX-04, IDX-05 (валидность XML, статусы URL, `noindex` в карте) | critical (невалидна/нет), serious |
|
|
206
|
+
| `crawl` | IDX-01, IDX-07 (soft 404), IDX-08 (мусорные URL), URL-02 (цепочки), LNK-02 (сироты) | critical/serious |
|
|
207
|
+
| `ymyl` | YMYL-01, YMYL-03, YMYL-05, YMYL-06 (маркеры «гарантируем излечение»), YMYL-12 | serious |
|
|
208
|
+
| `perf` | CWV-06 (шрифты), CWV-05 (блокирующие скрипты), размер HTML, число запросов (эвристики) | minor/serious |
|
|
209
|
+
| `local` | LOC-01 (телефон/адрес в разметке vs текст), LOC-03 (часы), NAP-консистентность на странице | serious |
|
|
210
|
+
| `onpage` | CNT-04 (наличие H2/списков), CNT-05/06/07 (маркеры блоков для услуг), CNT-08 (FAQ-маркер), CNT-10 (CTA) | minor/serious (YMYL-страницы) |
|
|
211
|
+
|
|
212
|
+
### Формат отчёта (ожидаемый)
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"url": "https://example.org/uslugi/mrt-golovy/",
|
|
217
|
+
"generatedAt": "2026-11-04T12:40:00+03:00",
|
|
218
|
+
"status": 200,
|
|
219
|
+
"score": 82,
|
|
220
|
+
"checks": [
|
|
221
|
+
{
|
|
222
|
+
"id": "META-01",
|
|
223
|
+
"category": "meta",
|
|
224
|
+
"severity": "serious",
|
|
225
|
+
"message": "title 71 символ (>60) — обрежется в выдаче",
|
|
226
|
+
"value": "...",
|
|
227
|
+
"fix": "Сократить до 50–60 символов, бренд в конце"
|
|
228
|
+
}
|
|
229
|
+
],
|
|
230
|
+
"summary": { "critical": 0, "serious": 3, "minor": 7 }
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
```markdown
|
|
235
|
+
# SEO-аудит: <URL>
|
|
236
|
+
Дата: ... · Статус: 200 · Оценка: 82/100
|
|
237
|
+
## Критично (0)
|
|
238
|
+
## Серьёзно (3)
|
|
239
|
+
- META-01 ... — как чинить
|
|
240
|
+
## Мелочи (7)
|
|
241
|
+
...
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Что НЕ автоматизируется (делать руками)
|
|
245
|
+
- Интент и качество контента (CNT-01, CNT-02, CNT-03).
|
|
246
|
+
- E-E-A-T-суждения (реальность автора, источников, лицензии).
|
|
247
|
+
- Каннибализация и семантика (нужны GSC/Вебмастер/Вордстат).
|
|
248
|
+
- Визуальный сниппет и CTR.
|
|
249
|
+
- Полные полевые CWV (нужны PSI/CrUX).
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## 14. Шаблон SEO-отчёта (для Лида/заказчика)
|
|
254
|
+
|
|
255
|
+
```markdown
|
|
256
|
+
## SEO-аудит: <сайт/раздел> — <дата>
|
|
257
|
+
**Объём:** <N страниц проанализировано, M проверок>
|
|
258
|
+
**Инструменты:** seo-audit.mjs, GSC, Яндекс Вебмастер, PSI, Rich Results Test
|
|
259
|
+
|
|
260
|
+
### Резюме
|
|
261
|
+
- P0: N · P1: M · P2: K
|
|
262
|
+
- Главные проблемы: <3–5 пунктов>
|
|
263
|
+
- Быстрые победы (≤1 день): <3–5 пунктов>
|
|
264
|
+
- Прогноз: <что даст закрытие P0/P1, без обещаний позиций>
|
|
265
|
+
|
|
266
|
+
### P0 (блокирует)
|
|
267
|
+
| ID | Проблема | Где | Как чинить | Трудоёмкость |
|
|
268
|
+
|---|---|---|---|---|
|
|
269
|
+
| ... | ... | ... | ... | ... |
|
|
270
|
+
|
|
271
|
+
### P1 (влияет заметно)
|
|
272
|
+
...
|
|
273
|
+
|
|
274
|
+
### P2 (бэклог)
|
|
275
|
+
...
|
|
276
|
+
|
|
277
|
+
### Что проверено и в порядке
|
|
278
|
+
<список блоков/проверок>
|
|
279
|
+
|
|
280
|
+
### План
|
|
281
|
+
1. Неделя 1: P0 ...
|
|
282
|
+
2. Неделя 2–3: P1 ...
|
|
283
|
+
3. Далее: контент/перелинковка ...
|
|
284
|
+
|
|
285
|
+
### Риски
|
|
286
|
+
<смена URL без редиректов, потеря трафика, YMYL-риски>
|
|
287
|
+
```
|
|
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
|
+
|
|
301
|
+
## 15. Как приоритизировать (если P0 много)
|
|
302
|
+
|
|
303
|
+
1. **Индексация** (IDX-01…04, 07) — без неё остальное бессмысленно.
|
|
304
|
+
2. **Дубли и canonical** (URL-01, META-07).
|
|
305
|
+
3. **Шаблоны title/description** (META-01, META-03) — быстрый прирост CTR по всему сайту.
|
|
306
|
+
4. **YMYL-блокеры** (YMYL-01, 03, 05, 06).
|
|
307
|
+
5. **Битые ссылки/мягкие 404**.
|
|
308
|
+
6. **CWV** (дольше всего, но влияет на всё).
|
|
309
|
+
7. **Контент-глубина и перелинковка** — постоянный процесс.
|
|
310
|
+
|
|
311
|
+
## 16. Первоисточники
|
|
312
|
+
|
|
313
|
+
- Google. Основы: https://developers.google.com/search/docs/essentials
|
|
314
|
+
- Google. Отчёты Search Console: https://support.google.com/webmasters
|
|
315
|
+
- Google. Тест Rich Results: https://search.google.com/test/rich-results
|
|
316
|
+
- Schema validator: https://validator.schema.org
|
|
317
|
+
- PageSpeed Insights: https://pagespeed.web.dev
|
|
318
|
+
- Яндекс Вебмастер: https://webmaster.yandex.ru · справка: https://yandex.ru/support/webmaster/ru/
|
|
319
|
+
- CWV: https://web.dev/articles/vitals
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
> Часть навыка seo. ≈5 850 токенов. Читать, когда: планируешь новую страницу или статью — бриф, интент, кластеры, структура, перелинковка, CTA, freshness.
|
|
2
|
+
|
|
3
|
+
# Контент-SEO: интент, кластеры, структура, перелинковка
|
|
4
|
+
|
|
5
|
+
> Контент ранжируется, когда он **лучше всех отвечает на конкретный интент** и заслуживает доверия.
|
|
6
|
+
> Ключевые слова — следствие, а не цель. Здесь — как планировать, писать и связывать страницы.
|
|
7
|
+
> Проверено 04.11.2026.
|
|
8
|
+
|
|
9
|
+
## 1. SEO-бриф (заполняется до текста, 10 минут)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Страница: <URL/тип>
|
|
13
|
+
Интент: <информационный | коммерческий | навигационный | локальный>
|
|
14
|
+
Кто ищет: <пациент / родственник / врач-направленец / журналист>
|
|
15
|
+
Гео: <город/район, филиалы, зона обслуживания> ← для клиники критично
|
|
16
|
+
Запрос-кластер: <главный ВЧ/СЧ> + <5–15 поддерживающих НЧ>
|
|
17
|
+
Что в топе: <типы страниц, форматы, длина, наличие карт/видео/калькуляторов>
|
|
18
|
+
Чего не хватает в топе: <наш шанс: глубина, локальность, эксперт, цены, запись, FAQ>
|
|
19
|
+
Целевое действие (CTA): <запись / звонок / маршрут / скачать памятку>
|
|
20
|
+
Доказательства (E-E-A-T): <автор-врач, рецензент, оборудование, лицензия, цифры>
|
|
21
|
+
Внутренние ссылки: <на 3–5 страниц: хаб, смежные услуги, врач>
|
|
22
|
+
Схема: <тип JSON-LD>
|
|
23
|
+
Дата/актуальность: <когда обновлять>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 2. Интент: 4 типа и что под них строится
|
|
27
|
+
|
|
28
|
+
| Интент | Примеры запросов | Формат страницы | Главный ответ |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| **Информационный** | «высокое давление симптомы», «как подготовиться к МРТ» | статья/справочник: ответ в первом абзаце, H2-вопросы, FAQ | прямой ответ + «когда к врачу» |
|
|
31
|
+
| **Коммерческий/транзакционный** | «записаться к кардиологу», «мрт цена», «платная клиника» | услуга/лендинг: цена, врачи, запись, отзывы, лицензия | цена + как записаться |
|
|
32
|
+
| **Навигационный** | «гкб 31 официальный сайт», «гкб 31 врачи» | главная/контакты/раздел: навигация, телефон, расписание | быстрый переход к нужному |
|
|
33
|
+
| **Локальный** | «клиника рядом», «больница на бауманской», «мрт в москве» | страница филиала/направления + карта, NAP, часы | адрес, часы, маршрут |
|
|
34
|
+
|
|
35
|
+
Правило: **один URL — один интент**. Если интентов два (информация + запись) — либо одна страница с явными
|
|
36
|
+
блоками, либо две страницы с перелинковкой (статья → услуга).
|
|
37
|
+
|
|
38
|
+
## 3. Семантика: сбор и кластеризация
|
|
39
|
+
|
|
40
|
+
### Источники
|
|
41
|
+
1. **Яндекс Вордстат** (`wordstat.yandex.ru`) — по региону! Для example.org — Москва и область. Учитывай, что
|
|
42
|
+
Вордстат показывает суммарную частотность по фразам с хвостами.
|
|
43
|
+
2. Google Search Console → «Эффективность» → запросы (реальные показы вашего сайта) — самый ценный источник
|
|
44
|
+
«что уже почти работает».
|
|
45
|
+
3. Яндекс Вебмастер → «Поисковые запросы».
|
|
46
|
+
4. Подсказки Яндекс/Google, «Похожие запросы», «Люди также спрашивают».
|
|
47
|
+
5. Конкуренты в топе (Медси/СМ-Клиника/госбольницы) — их структура, H2, FAQ.
|
|
48
|
+
6. Внутренний поиск сайта и вопросы в колл-центре/на приёме — золото для FAQ и статей.
|
|
49
|
+
|
|
50
|
+
**Актуальную выдачу, конкурентов и тренды проверяй живым поиском** (`web-research`: дата проверки + ссылки),
|
|
51
|
+
а не по памяти модели. Форматы в топе (статья, карточка, видео, карта, калькулятор) задают формат твоей страницы.
|
|
52
|
+
|
|
53
|
+
### Кластеризация
|
|
54
|
+
- Один кластер = один интент = **одна страница**.
|
|
55
|
+
- В кластере: 1 главный запрос + 5–15 поддерживающих (синонимы, уточнения, вопросы).
|
|
56
|
+
- Проверка каннибализации: в топе по двум запросам — **разные** страницы вашего сайта? Если одна и та же —
|
|
57
|
+
норма; если две конкурируют — склей/перелинкуй/переопредели интент.
|
|
58
|
+
- Приоритизация: частотность × коммерческая ценность × близость к записи × сложность (конкуренты).
|
|
59
|
+
Для клиники: услуги > направления > статьи (но статьи приводят новых и поддерживают услуги).
|
|
60
|
+
|
|
61
|
+
### Частотность: как не соврать
|
|
62
|
+
- Указывай источник, регион и дату («Вордстат, Москва, ноябрь 2026») — иначе цифра бессмысленна.
|
|
63
|
+
- НЧ/СЧ/ВЧ — понятие относительное: для госбольницы «мрт гкб 31» может быть ценнее, чем «мрт москва».
|
|
64
|
+
- Не гонись за ВЧ «мрт» — там коммерческие гиганты; выигрывай НЧ/СЧ + локальные + информационные.
|
|
65
|
+
|
|
66
|
+
## 4. Структура лендинга/страницы услуги
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
H1: {Услуга} в {Клиника}, {город}
|
|
70
|
+
kicker/надзаголовок: {специальность} · {стаж} · {ОМС/ДМС}
|
|
71
|
+
1. Лид 2–4 строки: что, кому, сколько стоит, как записаться ← ответ на интент
|
|
72
|
+
2. CTA-блок: запись онлайн + телефон (виден без скролла)
|
|
73
|
+
3. «Кому показано» (список)
|
|
74
|
+
4. «Как проходит» (шаги, время, ощущения)
|
|
75
|
+
5. «Подготовка» (что взять/не есть/лекарства)
|
|
76
|
+
6. «Противопоказания и ограничения»
|
|
77
|
+
7. «Результат и что дальше»
|
|
78
|
+
8. «Цены» (таблица, что входит, ОМС/ДМС)
|
|
79
|
+
9. «Врачи» (2–4 карточки со ссылками)
|
|
80
|
+
10. «Отзывы» (реальные, с площадок)
|
|
81
|
+
11. «FAQ» (5–8 вопросов)
|
|
82
|
+
12. «Как записаться» (телефон, форма, адрес, часы)
|
|
83
|
+
13. Экспертный блок: автор, рецензент, дата, источники, дисклеймер
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Требования к тексту: ответ в первых 100–150 словах; абзацы 2–4 строки; списки/таблицы; конкретика (цифры,
|
|
87
|
+
оборудование, имена); без «инновационных решений»; без воды ради объёма.
|
|
88
|
+
|
|
89
|
+
## 5. Структура статьи/блога
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
H1: {Вопрос/тема} — {уточнение}
|
|
93
|
+
Лид: прямой ответ (2–4 предложения)
|
|
94
|
+
H2: Почему это важно / что это
|
|
95
|
+
H2: Симптомы / признаки (если применимо)
|
|
96
|
+
H2: Причины / факторы риска
|
|
97
|
+
H2: Когда нужно к врачу (красные флаги)
|
|
98
|
+
H2: Диагностика: какие обследования
|
|
99
|
+
H2: Лечение: что делает врач (без назначений «по интернету»)
|
|
100
|
+
H2: Профилактика
|
|
101
|
+
H2: Частые вопросы (FAQ, 5–8)
|
|
102
|
+
Блок эксперта: автор, рецензент, дата, источники, дисклеймер
|
|
103
|
+
Блок перелинковки: 3–5 ссылок на услуги/врачей/смежные статьи
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- Статья не заменяет услугу: в конце — естественный переход «записаться к …».
|
|
107
|
+
- Не пиши «лечение» как инструкцию; пиши «как лечат», «что назначает врач», «чего не делать».
|
|
108
|
+
- Не копируй тексты других клиник: перерабатывай факты, добавляй локальную специфику и эксперта.
|
|
109
|
+
|
|
110
|
+
## 6. Внутренняя перелинковка
|
|
111
|
+
|
|
112
|
+
- **Хабы** — страницы разделов (`/napravleniya/`, `/uslugi/`, `/vrachi/`, `/blog/`), которые ссылаются на детей
|
|
113
|
+
и получают ссылки с главной.
|
|
114
|
+
- Схема «статья → услуга → врач»: информационная статья ссылается на услугу, услуга — на врачей и статьи,
|
|
115
|
+
врачи — на услуги и расписание.
|
|
116
|
+
- 2–6 контекстных ссылок на 1000 слов; анкоры описательные, разные (не «мрт» ×20).
|
|
117
|
+
- Не ссылайся на все страницы со всех — это шум; ссылайся по смыслу.
|
|
118
|
+
- Новые страницы получают 2–5 входящих ссылок сразу (иначе «сироты»).
|
|
119
|
+
- Проверка: краул → список страниц без входящих ссылок; `seo-audit.mjs` умеет считать внутренние ссылки
|
|
120
|
+
и находить сирот в рамках краула.
|
|
121
|
+
|
|
122
|
+
## 7. CTA и микрокопирайт
|
|
123
|
+
|
|
124
|
+
- CTA — глагол + выгода: «Записаться к кардиологу», «Посмотреть цены», «Проложить маршрут».
|
|
125
|
+
- Один главный CTA на экран; телефон и «Записаться» — всегда в шапке.
|
|
126
|
+
- Форма: минимум полей (имя, телефон), явное согласие на ПДн (152-ФЗ), понятная ошибка, состояние загрузки.
|
|
127
|
+
- Микрокопирайт: «Запись подтверждает администратор в течение 15 минут» лучше, чем «Мы вам перезвоним».
|
|
128
|
+
- Не используй ложную срочность, «осталось 2 места», «только сегодня» — это недоверие и риск.
|
|
129
|
+
- Для YMYL CTA не должен конкурировать с «когда срочно к врачу»: при красных флагах — «звоните 103/112».
|
|
130
|
+
|
|
131
|
+
## 8. Freshness и жизненный цикл контента
|
|
132
|
+
|
|
133
|
+
| Тип контента | Обновление | Триггер |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| Цены, расписание, приём | раз в квартал / при изменении | изменился прайс/график |
|
|
136
|
+
| Услуги | раз в 6–12 мес | новое оборудование, методика, врачи |
|
|
137
|
+
| Статьи о здоровье | раз в 6–12 мес | новые клинические рекомендации |
|
|
138
|
+
| Новости/события | после события — итоги | завершилось |
|
|
139
|
+
| Врачи | при изменении данных | новый сертификат, должность |
|
|
140
|
+
|
|
141
|
+
- Обновляй `dateModified`/`lastReviewed` **только при реальных изменениях**.
|
|
142
|
+
- Устаревшую страницу: обновить, объединить с актуальной (301) или удалить (410) — не оставлять в индексе «труп».
|
|
143
|
+
- «Вечнозелёные» статьи (симптомы, подготовка) обновляй по рекомендациям, а не по дате в календаре.
|
|
144
|
+
|
|
145
|
+
## 9. Локализация и русский язык
|
|
146
|
+
|
|
147
|
+
- Пиши по-русски, живым языком; медицинские термины — с пояснением.
|
|
148
|
+
- Единые термины по сайту: «приём» vs «консультация», «отделение» vs «центр» — выбери и держи.
|
|
149
|
+
- Локальные маркеры: район, метро, округ, «госпитализация в Москве», ОМС Москвы, ДМС.
|
|
150
|
+
- Не переводи названия учреждений/должностей вольно; ФИО — в исходном виде.
|
|
151
|
+
- Числа: `1 200` (неразрывный пробел), цены `4 500 ₽`, даты `20.10.2026` (в тексте) и ISO (в разметке).
|
|
152
|
+
- Ё — по стилю проекта (gkb-31.ru — обычно без ё в тексте, но проверяй единообразие).
|
|
153
|
+
- Транслит URL — единая схема (`й→y`, `я→ya`, `ж→zh`), не смешивай `h` и `kh` в разных разделах.
|
|
154
|
+
|
|
155
|
+
## 10. Контент в эпоху ИИ-ответов (AI Overviews, AI Mode, Нейро)
|
|
156
|
+
|
|
157
|
+
Google прямо говорит: **особых мер для ИИ-функций не нужно** — нужны индексация, сниппеты разрешены, полезный
|
|
158
|
+
контент и обычные SEO-практики. Из этого следуют практические выводы:
|
|
159
|
+
|
|
160
|
+
1. **Отвечай прямо и коротко в начале** — ИИ берёт «готовый ответ» из первых абзацев и списков.
|
|
161
|
+
2. **Структурируй**: H2-вопросы, списки, таблицы, шаги — «извлекаемый» контент цитируется чаще.
|
|
162
|
+
3. **Факты и сущности**: имена врачей, оборудование, цифры, даты, адреса — связывай разметкой
|
|
163
|
+
(`Physician`, `MedicalClinic`, `MedicalWebPage`), чтобы система понимала, кто/что/где.
|
|
164
|
+
4. **Уникальность опыта**: реальные кейсы, локальная специфика, комментарии врачей — ИИ не может это выдумать
|
|
165
|
+
за вас; «пересказ пересказа» не цитируют.
|
|
166
|
+
5. **Не блокируй** `Google-Extended`/сниппеты, если хочешь попадать в ИИ-ответы; понимай trade-off.
|
|
167
|
+
6. **llms.txt** — Google официально: файл не нужен и на ранжирование не влияет; не трать время.
|
|
168
|
+
7. Массовая генерация ИИ-текстов без редактуры — риск нарушения политики «scaled content abuse».
|
|
169
|
+
|
|
170
|
+
## 11. Редакционный процесс (чтобы контент был, а не «когда-нибудь»)
|
|
171
|
+
|
|
172
|
+
1. **План на квартал:** 8–12 страниц (2 услуги, 2 направления, 4–6 статей, 1–2 новости/события).
|
|
173
|
+
2. **Бриф** (§1) → **черновик** автора-врача/копирайтера → **медредактура** (рецензент) → **SEO-редактура**
|
|
174
|
+
(title/description/H1/H2/FAQ/перелинковка/разметка) → **вёрстка** → **проверка** (гейт) → **публикация** →
|
|
175
|
+
**мониторинг** (GSC/Вебмастер, 2–4 недели).
|
|
176
|
+
3. Единый чек-лист публикации — `audit-checklist.md`, блок «Контент».
|
|
177
|
+
4. Никакой публикации без: автора, даты, дисклеймера (для медицины), внутренних ссылок, alt.
|
|
178
|
+
|
|
179
|
+
## 12. Частые ошибки контента (топ-15)
|
|
180
|
+
|
|
181
|
+
1. Текст «под ключ», а не под интент.
|
|
182
|
+
2. Ответ на запрос — в середине/конце страницы.
|
|
183
|
+
3. Дубль услуги в двух разделах (каннибализация).
|
|
184
|
+
4. Вода: «мы предлагаем широкий спектр», «индивидуальный подход».
|
|
185
|
+
5. Нет цен/сроков/врачей — только «уточняйте».
|
|
186
|
+
6. Нет противопоказаний и «когда к врачу» (YMYL).
|
|
187
|
+
7. Автор «Редакция», дата «сегодня» у всего.
|
|
188
|
+
8. Копипаст с другого медсайта.
|
|
189
|
+
9. 5000 слов без структуры и списков.
|
|
190
|
+
10. FAQ выдуманный, не из спроса.
|
|
191
|
+
11. Анкоры «подробнее/здесь» ×100.
|
|
192
|
+
12. Статья без ссылки на услугу/врача (тупик).
|
|
193
|
+
13. Нет даты обновления при изменении цены.
|
|
194
|
+
14. Обещания излечения и запугивание.
|
|
195
|
+
15. Публикация без проверки на мобильном (таблицы, длинные слова, формы).
|
|
196
|
+
|
|
197
|
+
## 13. Первоисточники
|
|
198
|
+
|
|
199
|
+
- Google. Полезный контент: https://developers.google.com/search/docs/essentials/creating-helpful-content
|
|
200
|
+
- Google. Спам-политики (scaled content abuse): https://developers.google.com/search/docs/essentials/spam-policies
|
|
201
|
+
- Google. ИИ-функции и ваш сайт: https://developers.google.com/search/docs/appearance/ai-features
|
|
202
|
+
- Google. Как писать описательные title/сниппеты: https://developers.google.com/search/docs/appearance/title-link
|
|
203
|
+
- Яндекс Вордстат: https://wordstat.yandex.ru
|
|
204
|
+
- Яндекс Вебмастер: https://yandex.ru/support/webmaster/ru/
|