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,214 @@
|
|
|
1
|
+
> Часть навыка seo. ≈6 400 токенов. Читать, когда: верстаешь страницу — title/description/H1–H6, URL, контент, изображения, анкоры, OG, крошки, управление сниппетом.
|
|
2
|
+
|
|
3
|
+
# On-page SEO — как писать и верстать страницу
|
|
4
|
+
|
|
5
|
+
> On-page решает, **поймут ли поисковик и человек, о чём страница, и кликнут ли по сниппету**.
|
|
6
|
+
> Здесь — правила с числами и примерами на русском, для медицины. Проверено 04.11.2026.
|
|
7
|
+
|
|
8
|
+
## 1. `title` — главный сигнал и главный текст сниппета
|
|
9
|
+
|
|
10
|
+
**Формат:** `{что} + {где/уточнение} + {выгода/факт} | {бренд}`
|
|
11
|
+
**Длина:** 50–60 символов (~580–600 px на десктопе). Google **сам переписывает** title, если тот не описывает
|
|
12
|
+
страницу или переспамлен; поэтому title должен быть точным описанием, а не набором ключей.
|
|
13
|
+
|
|
14
|
+
Правила:
|
|
15
|
+
- Уникальный на каждой странице. Шаблон «{Название} — организация» на 500 страницах = дубли.
|
|
16
|
+
- Главный запрос — в начале (`МРТ головного мозга в Москве …`, а не `В организация можно сделать МРТ головного мозга`).
|
|
17
|
+
- Бренд — в конец. На главной бренд может быть в начале (навигационный интент).
|
|
18
|
+
- Не дублируй `H1` дословно; title может быть «продающим», H1 — «описывающим».
|
|
19
|
+
- Без `!!!`, эмодзи, CAPS, «лучший №1» без доказательств.
|
|
20
|
+
- Не пиши «официальный сайт», если это не официальный сайт организации (вводит в заблуждение).
|
|
21
|
+
- Язык и алфавит — как у контента (русский, кириллица). Смешивать «Moscow» и «Москва» без причины — плохо.
|
|
22
|
+
- Год (`2026`) ставь только если контент действительно актуализирован в этом году и требует даты (цены, приём).
|
|
23
|
+
|
|
24
|
+
Проверка ширины (в DevTools или эмуляторе SERP):
|
|
25
|
+
`document.querySelector('title').textContent.length` — символы; точная ширина зависит от букв (Ш/Ж шире, i/л уже).
|
|
26
|
+
|
|
27
|
+
## 2. `description`
|
|
28
|
+
|
|
29
|
+
**Длина:** 140–160 символов (~920 px).
|
|
30
|
+
**Не влияет на позиции напрямую**, но влияет на CTR — а CTR влияет на поведение и клики.
|
|
31
|
+
- Пиши как мини-объявление: что на странице + факт/польза + призыв.
|
|
32
|
+
- Уникальный; не набор ключей; не «Читайте на сайте».
|
|
33
|
+
- Google может переписать description (взять из текста) — значит первые абзацы тоже должны быть «сниппетными»:
|
|
34
|
+
конкретные ответы, цифры, имена.
|
|
35
|
+
- В медицине: укажи специальность/стаж, цену «от», время приёма, адрес — это то, что повышает CTR.
|
|
36
|
+
|
|
37
|
+
## 3. Заголовки H1–H6
|
|
38
|
+
|
|
39
|
+
- **Ровно один `H1`** на странице. `H1` ≠ логотип, не «Добро пожаловать», не пустой.
|
|
40
|
+
- `H1` отражает главный интент: «МРТ головного мозга в организация», «Кардиология: врачи и диагностика».
|
|
41
|
+
- Иерархия без пропусков: H1 → H2 → H3. Не прыгай H2 → H4 «ради размера шрифта» (размер — CSS).
|
|
42
|
+
- H2/H3 — реальные подтемы и вопросы: «Показания», «Как проходит», «Противопоказания», «Сколько стоит»,
|
|
43
|
+
«Как записаться». Это же — заготовки для FAQ-блока и ИИ-ответов.
|
|
44
|
+
- Не оборачивай в заголовки целые абзацы и не делай заголовком «Наши преимущества» из 5 пунктов без контента.
|
|
45
|
+
- Заголовки не должны быть «спрятанными» (display:none) — скрытый текст = риск.
|
|
46
|
+
|
|
47
|
+
## 4. URL
|
|
48
|
+
|
|
49
|
+
Правила:
|
|
50
|
+
- **Иерархия:** `раздел/подраздел/страница`, максимум 3–4 уровня. Клиника: `/napravleniya/kardiologiya/`,
|
|
51
|
+
`/uslugi/mrt-golovy/`, `/vrachi/ivanov-ivan-ivanovich/`, `/novosti/...`.
|
|
52
|
+
- **Латиница + транслит**, строчные буквы, дефисы между словами. Google прямо рекомендует `-`, а не `_`
|
|
53
|
+
(уточнено в документации Google в октябре 2026).
|
|
54
|
+
- Без стоп-слов: `/uslugi/mrt/`, а не `/uslugi/mrt-uslugi-v-moskve-luchshaya-klinika/`.
|
|
55
|
+
- Без `.html/.php`, если это не требование стека; без `index.php` в каноническом URL.
|
|
56
|
+
- Без дат у обновляемых страниц (`/blog/vysokoe-davlenie/`, не `/2024/03/12/vysokoe-davlenie/`).
|
|
57
|
+
- Без ID, если можно: `/vrachi/ivanov-ivan/`, не `/vrachi/?ID=1234`.
|
|
58
|
+
- Без параметров в каноническом URL; UTM/сортировки — через `Clean-param`/canonical.
|
|
59
|
+
- Транслит: используй устойчивую схему (`й→y`, `я→ya`, `ж→zh`, `х→h` или `kh` — главное, единообразно).
|
|
60
|
+
Не переводи имена врачей «на английский» (`Ivanov`, не `Ivan-off`).
|
|
61
|
+
- Смена URL — **только с 301** и обновлением внутренних ссылок/sitemap (см. `technical-seo.md` §12).
|
|
62
|
+
|
|
63
|
+
## 5. Контент, который ранжируется
|
|
64
|
+
|
|
65
|
+
### Структура страницы услуги (эталон)
|
|
66
|
+
1. `H1` + первый абзац-ответ: что это, для кого, где, сколько стоит/как записаться (2–4 строки).
|
|
67
|
+
2. Блок «Кому показано» / «Показания» — список.
|
|
68
|
+
3. «Как проходит» — по шагам (для медицинских процедур обязательно).
|
|
69
|
+
4. «Противопоказания и ограничения» — честно, со ссылкой «проконсультируйтесь с врачом».
|
|
70
|
+
5. «Подготовка» — практическая польза (часто ищут отдельно).
|
|
71
|
+
6. «Цены» — таблица/список, цена «от», что входит.
|
|
72
|
+
7. «Врачи» — 2–4 карточки со ссылками на профили.
|
|
73
|
+
8. «FAQ» — 5–8 реальных вопросов (из Вордстата/подсказок/GSC).
|
|
74
|
+
9. «Как записаться» — телефон, онлайн-форма, адрес, часы.
|
|
75
|
+
10. Экспертный блок: кто проверил текст, дата обновления, источники.
|
|
76
|
+
|
|
77
|
+
### Требования к тексту
|
|
78
|
+
- Отвечай на интент в **первых 100–150 словах** — и человек, и ИИ-ответы берут начало.
|
|
79
|
+
- Конкретика: цифры, сроки, имена, оборудование, цены. «Современное оборудование» — вода.
|
|
80
|
+
- Один кластер = одна страница. Не склеивай «МРТ головы» и «МРТ позвоночника» в одну гигантскую.
|
|
81
|
+
- Абзацы 2–4 строки, списки, таблицы, подзаголовки — читаемость и «извлекаемость» для ИИ.
|
|
82
|
+
- Уникальность: не копируй тексты с других медсайтов; перерабатывай в факты + местную специфику.
|
|
83
|
+
- Объём: не «минимум 3000 слов», а «достаточно, чтобы полно ответить». Ориентир: услуга 600–1500 слов,
|
|
84
|
+
статья 800–2000, карточка врача 300–700. **Не добивай объём водой.**
|
|
85
|
+
- E-E-A-T: автор, рецензент, дата, источники — см. `eeat-medical.md`.
|
|
86
|
+
- Не обещай результат лечения; используй «помогает диагностировать», «применяется при», «врач подберёт».
|
|
87
|
+
|
|
88
|
+
### Свежесть (freshness)
|
|
89
|
+
- Обновляй даты только при реальном изменении контента; «подмена даты» без правок — обман.
|
|
90
|
+
- Цены/расписание/приём — пересматривать минимум раз в квартал.
|
|
91
|
+
- Статьи — раз в 6–12 месяцев проверять актуальность (клинические рекомендации меняются).
|
|
92
|
+
- Устаревшую страницу — обновить или 301 на актуальную, не оставлять «мертвой» в индексе.
|
|
93
|
+
|
|
94
|
+
## 6. Изображения
|
|
95
|
+
|
|
96
|
+
| Параметр | Правило |
|
|
97
|
+
|---|---|
|
|
98
|
+
| `alt` | описывает содержимое, 3–12 слов. `alt="МРТ-аппарат 1.5 Тл в кабинете организация"`, не `alt="мрт москва купить"` |
|
|
99
|
+
| Декоративные | `alt=""` (пустой), не мусорить ключами |
|
|
100
|
+
| Размеры | всегда `width`/`height` или `aspect-ratio` (CLS) |
|
|
101
|
+
| Формат | WebP/AVIF, JPEG/PNG как фолбэк; SVG для иконок |
|
|
102
|
+
| Вес | ≤ 150–200 КБ для контентных, `srcset` для адаптива |
|
|
103
|
+
| Lazy | `loading="lazy"` **ниже первого экрана**; LCP-картинка — без lazy, с `fetchpriority="high"` |
|
|
104
|
+
| Имена файлов | латиница, описательно: `mrt-golovnogo-mozga-service-desk.webp` |
|
|
105
|
+
| Текст на картинке | не заменяет текст страницы (поисковик читает плохо) |
|
|
106
|
+
| Лицензия | только свои/лицензированные фото; стоки врачей вместо реальных — минус доверию |
|
|
107
|
+
|
|
108
|
+
## 7. Внутренние ссылки и анкоры
|
|
109
|
+
|
|
110
|
+
- Каждая страница получает **входящие** ссылки: из хаба раздела, из смежных услуг, из статей, из крошек.
|
|
111
|
+
- Каждый важный URL достижим за **≤3 клика** от главной; хабы разделов ссылаются на своих детей.
|
|
112
|
+
- Исходящие из текста: **2–6** на страницу (1000 слов), анкоры описательные: «записаться к кардиологу»,
|
|
113
|
+
«цены на МРТ», а не «здесь», «подробнее», «читать».
|
|
114
|
+
- Не ставь все ссылки в первый абзац и не превращай абзац в список ссылок.
|
|
115
|
+
- Ссылки на важные страницы — с более важных страниц (с главной, из хаба).
|
|
116
|
+
- Не ссылайся на `noindex`-страницы ради «веса» — бесполезно.
|
|
117
|
+
- `nofollow` внутри сайта — только для служебных/рекламных; не закрывай им нормальную навигацию.
|
|
118
|
+
- Проверяй битые ссылки (`seo-audit.mjs` / краул), они бьют и по поведению, и по обходу.
|
|
119
|
+
|
|
120
|
+
## 8. Open Graph и Twitter Cards
|
|
121
|
+
|
|
122
|
+
```html
|
|
123
|
+
<meta property="og:type" content="website"> <!-- article для статей/новостей -->
|
|
124
|
+
<meta property="og:site_name" content="организация">
|
|
125
|
+
<meta property="og:locale" content="ru_RU">
|
|
126
|
+
<meta property="og:title" content="МРТ головного мозга в организация, Москва">
|
|
127
|
+
<meta property="og:description" content="Цена от 4 500 ₽, результат в день исследования, расшифровка врачом.">
|
|
128
|
+
<meta property="og:url" content="https://example.org/uslugi/mrt-golovy/">
|
|
129
|
+
<meta property="og:image" content="https://example.org/upload/og/mrt-golovy-1200x630.jpg">
|
|
130
|
+
<meta property="og:image:width" content="1200">
|
|
131
|
+
<meta property="og:image:height" content="630">
|
|
132
|
+
<meta property="og:image:alt" content="МРТ головного мозга, аппарат в клинике">
|
|
133
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Правила:
|
|
137
|
+
- `og:image` — 1200×630 (1.91:1), реальное фото/инфографика, не логотип; абсолютный URL.
|
|
138
|
+
- `og:url` = canonical URL.
|
|
139
|
+
- Google использует `og:title` как один из источников title для сниппета — держи его согласованным с `<title>`.
|
|
140
|
+
- Telegram/WhatsApp/ВК берут OG — это важный канал для клиники (пересылка страниц врачами/пациентами).
|
|
141
|
+
|
|
142
|
+
## 9. Хлебные крошки
|
|
143
|
+
|
|
144
|
+
- Видимые крошки на всех страницах, кроме главной: `Главная → Услуги → МРТ → МРТ головы`.
|
|
145
|
+
- Разметка `BreadcrumbList` (JSON-LD) — дублирует видимую навигацию, последний элемент без ссылки.
|
|
146
|
+
- Google показывает крошки **только на десктопе** (с января 2025 мобильные крошки в сниппете не выводятся) —
|
|
147
|
+
но разметку всё равно делай: она помогает понимать структуру и Яндексу.
|
|
148
|
+
- Крошки и URL-структура должны совпадать (не «Главная → Лечение → МРТ», если URL `/uslugi/mrt/`).
|
|
149
|
+
|
|
150
|
+
## 10. Микроразметка на странице (минимум)
|
|
151
|
+
|
|
152
|
+
| Элемент | Где | Обязательные поля |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| `BreadcrumbList` | все внутренние | `itemListElement[].position/name/item` |
|
|
155
|
+
| `WebPage` / `MedicalWebPage` | контентные | `name`, `url`, `inLanguage`, `about`, `datePublished`, `dateModified`, `lastReviewed`, `reviewedBy` |
|
|
156
|
+
| `Organization` / `MedicalOrganization` | главная | `name`, `url`, `logo`, `address`, `telephone`, `sameAs` |
|
|
157
|
+
| `Physician` | профиль врача | `name`, `medicalSpecialty`, `jobTitle`, `worksFor`, `alumniOf`, `url`, `image` |
|
|
158
|
+
| `Service` / `MedicalProcedure` | услуга | `name`, `serviceType`, `provider`, `areaServed`, `offers` (если цена публичная) |
|
|
159
|
+
| `Article` / `NewsArticle` | статьи/новости | `headline`, `author` (Person), `datePublished`, `dateModified`, `image`, `publisher` |
|
|
160
|
+
| `FAQPage` | блок вопросов | `mainEntity[].name`, `acceptedAnswer.text` (с 07.05.2026 Google **не показывает** FAQ
|
|
161
|
+
rich results — разметка остаётся полезной для понимания, но сниппет не обещай) |
|
|
162
|
+
|
|
163
|
+
Все поля должны совпадать с видимым контентом. Не размечай рейтинги/цены, которых нет на странице.
|
|
164
|
+
Шаблоны: `structured-data.md` и `assets/snippets/`.
|
|
165
|
+
|
|
166
|
+
## 11. Сниппет: как выглядит и как управлять
|
|
167
|
+
|
|
168
|
+
Что собирает Google/Яндекс в сниппет: title (или его перепев), description (или фрагмент текста),
|
|
169
|
+
URL (крошки/путь), доп. элементы (звёзды рейтинга, дата, цена, «быстрые ссылки»).
|
|
170
|
+
|
|
171
|
+
Управление:
|
|
172
|
+
- `title`/`description` — базово.
|
|
173
|
+
- Текст в первых абзацах — то, из чего вырежется фрагмент, если description перепишут.
|
|
174
|
+
- `noindex` — не использовать для «управления сниппетом».
|
|
175
|
+
- `nosnippet`, `max-snippet`, `data-nosnippet` — только если реально нужно скрыть фрагмент
|
|
176
|
+
(например, платный контент в статье); для клиники почти всегда вредно.
|
|
177
|
+
- «Быстрые ссылки» (Яндекс) и «Sitelinks» (Google) формируются автоматически — влияй структурой навигации
|
|
178
|
+
и понятными заголовками разделов.
|
|
179
|
+
|
|
180
|
+
## 12. Чек-лист on-page (10 пунктов, проверяй на каждой странице)
|
|
181
|
+
|
|
182
|
+
- [ ] `title` уникальный, 50–60 симв., интент в начале, бренд в конце.
|
|
183
|
+
- [ ] `description` уникальный, 140–160 симв., с фактом/пользой.
|
|
184
|
+
- [ ] Один `H1`, совпадает с интентом; H2–H6 по иерархии.
|
|
185
|
+
- [ ] URL читаемый, латиница, дефисы, без параметров.
|
|
186
|
+
- [ ] Первые 100–150 слов отвечают на запрос.
|
|
187
|
+
- [ ] Блоки «показания/как проходит/противопоказания/цены/FAQ/как записаться» (для услуг).
|
|
188
|
+
- [ ] Изображения: `alt`, `width/height`, WebP/AVIF, lazy ниже фолда, LCP без lazy.
|
|
189
|
+
- [ ] 2–6 внутренних ссылок с описательными анкорами + входящие ссылки есть.
|
|
190
|
+
- [ ] OG/Twitter + `og:image` 1200×630.
|
|
191
|
+
- [ ] Крошки + JSON-LD, поля совпадают с контентом.
|
|
192
|
+
|
|
193
|
+
## 13. Примеры «плохо → хорошо»
|
|
194
|
+
|
|
195
|
+
| Плохо | Хорошо |
|
|
196
|
+
|---|---|
|
|
197
|
+
| `title` = «Главная» | `организация, Москва — официальный сайт больницы` |
|
|
198
|
+
| `title` = «Услуги, цены, врачи, запись, Москва, клиника, МРТ, КТ, УЗИ» | `МРТ головного мозга в Москве — цена от 4 500 ₽ | организация` |
|
|
199
|
+
| `H1` = «Добро пожаловать на наш сайт!» | `H1` = «Кардиология: врачи, диагностика и лечение в организация» |
|
|
200
|
+
| `alt` = «картинка1» / `alt` = «мрт москва дешево» | `alt` = «Кабинет МРТ в организация: аппарат 1.5 Тл» |
|
|
201
|
+
| URL `/index.php?page=uslugi&id=42` | `/uslugi/mrt-golovy/` |
|
|
202
|
+
| Анкор «Подробнее» ×20 | «записаться к кардиологу», «цены на МРТ», «подготовка к МРТ» |
|
|
203
|
+
| «Мы гарантируем полное излечение» | «Врач подберёт схему лечения по результатам обследования» |
|
|
204
|
+
| Текст 5000 слов «обо всём» | 900 слов строго по интенту + FAQ + цены |
|
|
205
|
+
|
|
206
|
+
## 14. Первоисточники
|
|
207
|
+
|
|
208
|
+
- Как формируются title-ссылки: https://developers.google.com/search/docs/appearance/title-link
|
|
209
|
+
- Как формируются сниппеты: https://developers.google.com/search/docs/appearance/snippet
|
|
210
|
+
- URL-структура (включая дефисы vs подчёркивания): https://developers.google.com/search/docs/crawling-indexing/url-structure
|
|
211
|
+
- Изображения: https://developers.google.com/search/docs/appearance/google-images
|
|
212
|
+
- Structured data (общее): https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
|
|
213
|
+
- Спам-политики (переспам, скрытый текст): https://developers.google.com/search/docs/essentials/spam-policies
|
|
214
|
+
- Обновления документации: https://developers.google.com/search/updates
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
> Часть навыка seo. ≈2 250 токенов. Читать, когда: пишешь title/description, проектируешь новую страницу или решаешь, что ставить в JSON-LD/robots/sitemap для конкретного типа страницы.
|
|
2
|
+
|
|
3
|
+
# Шаблоны по типам страниц: мета, разметка, индексация
|
|
4
|
+
|
|
5
|
+
> Готовые решения «по умолчанию»: не изобретай title и разметку заново для каждой страницы.
|
|
6
|
+
> Правила самих элементов — `on-page.md`; шаблоны JSON-LD — `structured-data.md`. Проверено 04.11.2026.
|
|
7
|
+
|
|
8
|
+
## 1. Матрица по типу страницы
|
|
9
|
+
|
|
10
|
+
| Тип страницы | `title` (шаблон) | JSON-LD | `robots` | sitemap | priority |
|
|
11
|
+
|---|---|---|---|---|---|
|
|
12
|
+
| Главная | `{Клиника} — официальный сайт | {город}` | Organization+WebSite+MedicalClinic | index,follow | да | 1.0 |
|
|
13
|
+
| Направление | `{Направление} в {Клиника}, {город} — врачи, цены, запись` | MedicalWebPage+BreadcrumbList+Service | index,follow | да | 0.8 |
|
|
14
|
+
| Услуга | `{Услуга} в {Клиника} — цена от {X} ₽, запись онлайн` | MedicalProcedure/Service+FAQ+Breadcrumb | index,follow | да | 0.8 |
|
|
15
|
+
| Врач | `{ФИО} — {специальность}, {Клиника}, {город}` | Physician+Person+Breadcrumb | index,follow | да | 0.7 |
|
|
16
|
+
| Статья/блог | `{Вопрос/тема}: {уточнение} — {Клиника}` | Article/MedicalWebPage+FAQ+Breadcrumb | index,follow | да | 0.6 |
|
|
17
|
+
| Новость | `{Событие} — {дата} | {Клиника}` | NewsArticle/Article | index,follow | да | 0.5 |
|
|
18
|
+
| Цены | `Цены на {раздел} в {Клиника}, {город} — {год}` | MedicalWebPage+Offer (осторожно) | index,follow | да | 0.7 |
|
|
19
|
+
| Контакты | `Контакты {Клиника} — адрес, телефон, схема проезда` | MedicalClinic+Organization | index,follow | да | 0.6 |
|
|
20
|
+
| Документы/лицензии | `Лицензии и документы {Клиника} — {город}` | MedicalOrganization | index,follow | да | 0.4 |
|
|
21
|
+
| Спасибо / личный кабинет | `{...}` | — | `noindex,follow` | нет | — |
|
|
22
|
+
| Поиск / фильтры / мусорные фасеты | — | — | `noindex,follow` или robots+`Clean-param` | нет | — |
|
|
23
|
+
| 404 / 410 | `Страница не найдена` | — | `noindex` | нет | — |
|
|
24
|
+
|
|
25
|
+
Оговорки:
|
|
26
|
+
- **`priority` и `changefreq` — подсказка**, а не рычаг: Google их игнорирует, Яндекс учитывает слабо. Ставь для
|
|
27
|
+
порядка в карте, не «оптимизируй» ими (`technical-seo.md` §4).
|
|
28
|
+
- «Цены» с `Offer` — только если цены публичные, актуальные и совпадают с прайсом на странице.
|
|
29
|
+
- «Документы/лицензии» — страница доверия: номер, дата, орган выдачи, ссылка на реестр Росздравнадзора
|
|
30
|
+
(`eeat-medical.md` §3).
|
|
31
|
+
- Один кластер = одна страница: если под один интент уже есть страница, не создавай вторую (каннибализация).
|
|
32
|
+
- Тип страницы определяет блоки контента: услуга/направление/статья — `content-seo.md` §4–5.
|
|
33
|
+
|
|
34
|
+
## 2. Шаблоны `title` / `description` (RU, медицина)
|
|
35
|
+
|
|
36
|
+
Правило: **что + где + выгода/факт + бренд** (не обязательно все, но первые два — всегда).
|
|
37
|
+
`|` и бренд — не в начало. «Официальный сайт» — только если это действительно официальный сайт организации.
|
|
38
|
+
|
|
39
|
+
| Тип | `title` | `description` |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| Главная | `организация, Москва — официальный сайт больницы` | `Многопрофильная больница в Москве: консультации врачей, диагностика, стационар. Запись по телефону и онлайн. Адрес и схема проезда.` |
|
|
42
|
+
| Направление | `Кардиология в организация, Москва — врачи, диагностика, запись` | `Кардиологическое отделение: ЭКГ, ЭхоКГ, холтер, консультации кардиолога. Опытные врачи, современное оборудование. Запись онлайн.` |
|
|
43
|
+
| Услуга | `МРТ головного мозга в Москве — цена от 4 500 ₽, запись в организация` | `МРТ головы на аппарате 1.5 Тл: расшифровка врачом, результат в день исследования. Цена от 4 500 ₽, запись онлайн и по телефону.` |
|
|
44
|
+
| Врач | `Иванов Иван Иванович — кардиолог, организация, Москва` | `Кардиолог с 18-летним стажем: диагностика и лечение гипертонии, ИБС, аритмий. Кандидат медицинских наук. Запись на приём.` |
|
|
45
|
+
| Статья | `Высокое давление: причины, симптомы и когда идти к врачу` | `Почему повышается давление, какие симптомы опасны, как измерять дома и когда нужен кардиолог. Разбор врача организация.` |
|
|
46
|
+
| Новость | `День открытых дверей в организация — 12 апреля 2026` | `12 апреля 2026: бесплатная проверка сердца, консультации кардиолога и эндокринолога. Программа, запись, адрес.` |
|
|
47
|
+
|
|
48
|
+
## 3. Чего избегать в `title` / `description`
|
|
49
|
+
|
|
50
|
+
- `Купить, дёшево, в Москве недорого` для государственной клиники — конфликт с реальностью и YMYL-доверием.
|
|
51
|
+
- Пунктуация-мусор `!!!`, эмодзи, слова «лучший», «№1» без доказательств.
|
|
52
|
+
- Обрезанные фразы и «…» вручную — Google/Яндекс обрежут сами по ширине.
|
|
53
|
+
- Дубли: один и тот же шаблон на сотнях страниц = дубли и потеря релевантности (`technical-seo.md` §6).
|
|
54
|
+
- `description` «Читайте на сайте», набор ключей без пользы, обещания результата лечения.
|
|
55
|
+
|
|
56
|
+
Детали и примеры «плохо → хорошо»: `on-page.md` §1–2, §13.
|