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,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "BreadcrumbList",
|
|
4
|
+
"@id": "https://example.org/uslugi/mrt-golovy/#breadcrumb",
|
|
5
|
+
"itemListElement": [
|
|
6
|
+
{
|
|
7
|
+
"@type": "ListItem",
|
|
8
|
+
"position": 1,
|
|
9
|
+
"name": "Главная",
|
|
10
|
+
"item": "https://example.org/"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"@type": "ListItem",
|
|
14
|
+
"position": 2,
|
|
15
|
+
"name": "Услуги",
|
|
16
|
+
"item": "https://example.org/uslugi/"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"@type": "ListItem",
|
|
20
|
+
"position": 3,
|
|
21
|
+
"name": "МРТ",
|
|
22
|
+
"item": "https://example.org/uslugi/mrt/"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"@type": "ListItem",
|
|
26
|
+
"position": 4,
|
|
27
|
+
"name": "МРТ головного мозга"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "FAQPage",
|
|
4
|
+
"@id": "https://example.org/uslugi/mrt-golovy/#faq",
|
|
5
|
+
"mainEntity": [
|
|
6
|
+
{
|
|
7
|
+
"@type": "Question",
|
|
8
|
+
"name": "Нужно ли направление врача на МРТ?",
|
|
9
|
+
"acceptedAnswer": {
|
|
10
|
+
"@type": "Answer",
|
|
11
|
+
"text": "При платном исследовании направление не обязательно. При прохождении по ОМС нужно направление лечащего врача. Результат МРТ действителен для консультации в организация."
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"@type": "Question",
|
|
16
|
+
"name": "Сколько длится МРТ головного мозга?",
|
|
17
|
+
"acceptedAnswer": {
|
|
18
|
+
"@type": "Answer",
|
|
19
|
+
"text": "Исследование без контрастирования занимает 20–30 минут, с контрастированием — до 45 минут. Результат выдаётся в день исследования."
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"@type": "Question",
|
|
24
|
+
"name": "Есть ли противопоказания к МРТ?",
|
|
25
|
+
"acceptedAnswer": {
|
|
26
|
+
"@type": "Answer",
|
|
27
|
+
"text": "Абсолютные противопоказания: кардиостимулятор, металлические импланты, ферромагнитные осколки, беременность I триместра. Перед исследованием врач уточняет анамнез и заполняет анкету безопасности."
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"@type": "Question",
|
|
32
|
+
"name": "Как подготовиться к МРТ головного мозга?",
|
|
33
|
+
"acceptedAnswer": {
|
|
34
|
+
"@type": "Answer",
|
|
35
|
+
"text": "Специальная подготовка не требуется. При контрастировании исследование проводится натощак (не есть 4–6 часов). Возьмите с собой результаты предыдущих исследований и документы."
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "MedicalClinic",
|
|
4
|
+
"@id": "https://example.org/kontakty/#clinic",
|
|
5
|
+
"name": "организация — главный корпус",
|
|
6
|
+
"url": "https://example.org/kontakty/",
|
|
7
|
+
"image": "https://example.org/upload/building-1200x630.jpg",
|
|
8
|
+
"telephone": "+7-495-000-00-00",
|
|
9
|
+
"priceRange": "₽₽",
|
|
10
|
+
"currenciesAccepted": "RUB",
|
|
11
|
+
"paymentAccepted": "Наличные, банковская карта, ОМС, ДМС",
|
|
12
|
+
"address": {
|
|
13
|
+
"@type": "PostalAddress",
|
|
14
|
+
"streetAddress": "ул. Новая, д. 12",
|
|
15
|
+
"addressLocality": "Москва",
|
|
16
|
+
"addressRegion": "Москва",
|
|
17
|
+
"postalCode": "105005",
|
|
18
|
+
"addressCountry": "RU"
|
|
19
|
+
},
|
|
20
|
+
"geo": {
|
|
21
|
+
"@type": "GeoCoordinates",
|
|
22
|
+
"latitude": 55.7654,
|
|
23
|
+
"longitude": 37.6543
|
|
24
|
+
},
|
|
25
|
+
"hasMap": "https://yandex.ru/maps/org/00000000000",
|
|
26
|
+
"openingHoursSpecification": [
|
|
27
|
+
{
|
|
28
|
+
"@type": "OpeningHoursSpecification",
|
|
29
|
+
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
|
|
30
|
+
"opens": "08:00",
|
|
31
|
+
"closes": "20:00"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"@type": "OpeningHoursSpecification",
|
|
35
|
+
"dayOfWeek": ["Saturday"],
|
|
36
|
+
"opens": "09:00",
|
|
37
|
+
"closes": "15:00"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"medicalSpecialty": ["Cardiovascular", "Oncologic", "Neurologic", "PrimaryCare"],
|
|
41
|
+
"isAcceptingNewPatients": true,
|
|
42
|
+
"parentOrganization": {
|
|
43
|
+
"@id": "https://example.org/#organization"
|
|
44
|
+
},
|
|
45
|
+
"sameAs": [
|
|
46
|
+
"https://yandex.ru/maps/org/00000000000",
|
|
47
|
+
"https://2gis.ru/moscow/firm/000000000000000"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "MedicalWebPage",
|
|
4
|
+
"@id": "https://example.org/uslugi/mrt-golovy/#webpage",
|
|
5
|
+
"url": "https://example.org/uslugi/mrt-golovy/",
|
|
6
|
+
"name": "МРТ головного мозга: показания, подготовка, цена",
|
|
7
|
+
"description": "Как проходит МРТ головного мозга, кому показано, как подготовиться, сколько стоит в организация.",
|
|
8
|
+
"inLanguage": "ru-RU",
|
|
9
|
+
"isPartOf": {
|
|
10
|
+
"@id": "https://example.org/#website"
|
|
11
|
+
},
|
|
12
|
+
"about": {
|
|
13
|
+
"@type": "MedicalCondition",
|
|
14
|
+
"name": "Заболевания головного мозга"
|
|
15
|
+
},
|
|
16
|
+
"mainContentOfPage": {
|
|
17
|
+
"@type": "WebPageElement"
|
|
18
|
+
},
|
|
19
|
+
"medicalAudience": "https://schema.org/Patient",
|
|
20
|
+
"specialty": "https://schema.org/Neurologic",
|
|
21
|
+
"datePublished": "2025-02-10",
|
|
22
|
+
"dateModified": "2026-10-20",
|
|
23
|
+
"lastReviewed": "2026-10-20",
|
|
24
|
+
"reviewedBy": {
|
|
25
|
+
"@type": "Physician",
|
|
26
|
+
"name": "Петров Сергей Николаевич",
|
|
27
|
+
"jobTitle": "Врач-рентгенолог",
|
|
28
|
+
"url": "https://example.org/vrachi/petrov-sergey/"
|
|
29
|
+
},
|
|
30
|
+
"breadcrumb": {
|
|
31
|
+
"@id": "https://example.org/uslugi/mrt-golovy/#breadcrumb"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": ["MedicalOrganization", "MedicalClinic"],
|
|
4
|
+
"@id": "https://example.org/#organization",
|
|
5
|
+
"name": "Городская клиническая больница №31",
|
|
6
|
+
"alternateName": "организация",
|
|
7
|
+
"url": "https://example.org/",
|
|
8
|
+
"logo": {
|
|
9
|
+
"@type": "ImageObject",
|
|
10
|
+
"@id": "https://example.org/#logo",
|
|
11
|
+
"url": "https://example.org/upload/logo-512.png",
|
|
12
|
+
"width": 512,
|
|
13
|
+
"height": 512,
|
|
14
|
+
"caption": "организация"
|
|
15
|
+
},
|
|
16
|
+
"image": "https://example.org/upload/building-1200x630.jpg",
|
|
17
|
+
"description": "Многопрофильная больница в Москве: консультации врачей, диагностика, стационарное лечение.",
|
|
18
|
+
"telephone": "+7-495-000-00-00",
|
|
19
|
+
"email": "info@example.org",
|
|
20
|
+
"address": {
|
|
21
|
+
"@type": "PostalAddress",
|
|
22
|
+
"streetAddress": "ул. Новая, д. 12",
|
|
23
|
+
"addressLocality": "Москва",
|
|
24
|
+
"addressRegion": "Москва",
|
|
25
|
+
"postalCode": "105005",
|
|
26
|
+
"addressCountry": "RU"
|
|
27
|
+
},
|
|
28
|
+
"geo": {
|
|
29
|
+
"@type": "GeoCoordinates",
|
|
30
|
+
"latitude": 55.7654,
|
|
31
|
+
"longitude": 37.6543
|
|
32
|
+
},
|
|
33
|
+
"openingHoursSpecification": [
|
|
34
|
+
{
|
|
35
|
+
"@type": "OpeningHoursSpecification",
|
|
36
|
+
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
|
|
37
|
+
"opens": "08:00",
|
|
38
|
+
"closes": "20:00"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"@type": "OpeningHoursSpecification",
|
|
42
|
+
"dayOfWeek": ["Saturday"],
|
|
43
|
+
"opens": "09:00",
|
|
44
|
+
"closes": "15:00"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"areaServed": {
|
|
48
|
+
"@type": "City",
|
|
49
|
+
"name": "Москва"
|
|
50
|
+
},
|
|
51
|
+
"medicalSpecialty": ["Cardiovascular", "Oncologic", "Neurologic", "PrimaryCare"],
|
|
52
|
+
"isAcceptingNewPatients": true,
|
|
53
|
+
"sameAs": [
|
|
54
|
+
"https://vk.com/service-desk",
|
|
55
|
+
"https://t.me/service-desk",
|
|
56
|
+
"https://yandex.ru/maps/org/00000000000",
|
|
57
|
+
"https://2gis.ru/moscow/firm/000000000000000"
|
|
58
|
+
],
|
|
59
|
+
"contactPoint": [
|
|
60
|
+
{
|
|
61
|
+
"@type": "ContactPoint",
|
|
62
|
+
"contactType": "registratura",
|
|
63
|
+
"telephone": "+7-495-000-00-00",
|
|
64
|
+
"areaServed": "RU",
|
|
65
|
+
"availableLanguage": "ru"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"hasCredential": {
|
|
69
|
+
"@type": "EducationalOccupationalCredential",
|
|
70
|
+
"credentialCategory": "Лицензия на осуществление медицинской деятельности",
|
|
71
|
+
"identifier": "ЛО-77-01-000000",
|
|
72
|
+
"validFrom": "2024-01-15"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": ["Physician", "Person"],
|
|
4
|
+
"@id": "https://example.org/vrachi/ivanov-ivan/#physician",
|
|
5
|
+
"name": "Иванов Иван Иванович",
|
|
6
|
+
"jobTitle": "Врач-кардиолог",
|
|
7
|
+
"description": "Кардиолог, кандидат медицинских наук. Диагностика и лечение артериальной гипертензии, ИБС, нарушений ритма.",
|
|
8
|
+
"url": "https://example.org/vrachi/ivanov-ivan/",
|
|
9
|
+
"image": "https://example.org/upload/vrachi/ivanov-ivan.jpg",
|
|
10
|
+
"telephone": "+7-495-000-00-01",
|
|
11
|
+
"medicalSpecialty": "https://schema.org/Cardiovascular",
|
|
12
|
+
"availableService": [
|
|
13
|
+
{
|
|
14
|
+
"@type": "MedicalProcedure",
|
|
15
|
+
"name": "Электрокардиография (ЭКГ)"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"@type": "MedicalProcedure",
|
|
19
|
+
"name": "Эхокардиография"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"@type": "MedicalProcedure",
|
|
23
|
+
"name": "Холтеровское мониторирование ЭКГ"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"worksFor": {
|
|
27
|
+
"@id": "https://example.org/#organization"
|
|
28
|
+
},
|
|
29
|
+
"hospitalAffiliation": {
|
|
30
|
+
"@id": "https://example.org/#organization"
|
|
31
|
+
},
|
|
32
|
+
"alumniOf": {
|
|
33
|
+
"@type": "CollegeOrUniversity",
|
|
34
|
+
"name": "Российский национальный исследовательский медицинский университет им. Н. И. Пирогова"
|
|
35
|
+
},
|
|
36
|
+
"memberOf": {
|
|
37
|
+
"@type": "Organization",
|
|
38
|
+
"name": "Российское кардиологическое общество"
|
|
39
|
+
},
|
|
40
|
+
"knowsAbout": [
|
|
41
|
+
"Артериальная гипертензия",
|
|
42
|
+
"Ишемическая болезнь сердца",
|
|
43
|
+
"Нарушения ритма сердца"
|
|
44
|
+
],
|
|
45
|
+
"isAcceptingNewPatients": true
|
|
46
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{{--
|
|
2
|
+
SEO-мета для Laravel/Blade — компонент <x-seo.meta :seo="$seo" />
|
|
3
|
+
Использование:
|
|
4
|
+
$seo = \App\Support\Seo\Seo::page(
|
|
5
|
+
title: 'МРТ головного мозга в организация — цена от 4 500 ₽',
|
|
6
|
+
description: 'МРТ головы на аппарате 1.5 Тл: расшифровка врачом, результат в день исследования. Запись онлайн.',
|
|
7
|
+
path: '/uslugi/mrt-golovy/',
|
|
8
|
+
)->breadcrumbs([...])->addJsonLd([...]);
|
|
9
|
+
|
|
10
|
+
В шаблоне: <x-seo.meta :seo="$seo" />
|
|
11
|
+
|
|
12
|
+
Требует: config/seo.php (org_name, org_phone, addr_*, same_as, default_title,
|
|
13
|
+
default_description, default_og_image, canonical_host).
|
|
14
|
+
ВАЖНО: JSON-LD выводится с JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP.
|
|
15
|
+
--}}
|
|
16
|
+
@props(['seo' => null])
|
|
17
|
+
|
|
18
|
+
@php
|
|
19
|
+
$seo = $seo ?? \App\Support\Seo\Seo::page(
|
|
20
|
+
config('seo.default_title'),
|
|
21
|
+
config('seo.default_description')
|
|
22
|
+
);
|
|
23
|
+
$data = is_array($seo) ? $seo : $seo->toArray();
|
|
24
|
+
|
|
25
|
+
$title = $data['title'] ?? config('seo.default_title');
|
|
26
|
+
$description = $data['description'] ?? config('seo.default_description');
|
|
27
|
+
$canonical = $data['canonical'] ?? url()->current();
|
|
28
|
+
$robots = $data['robots'] ?? 'index,follow';
|
|
29
|
+
$type = $data['type'] ?? 'website';
|
|
30
|
+
$ogImage = $data['ogImage'] ?? config('seo.default_og_image');
|
|
31
|
+
$jsonLd = array_values(array_filter($data['jsonLd'] ?? []));
|
|
32
|
+
$orgName = config('seo.org_name');
|
|
33
|
+
@endphp
|
|
34
|
+
|
|
35
|
+
<title>{{ $title }}</title>
|
|
36
|
+
<meta name="description" content="{{ $description }}">
|
|
37
|
+
<meta name="robots" content="{{ $robots }}">
|
|
38
|
+
<link rel="canonical" href="{{ $canonical }}">
|
|
39
|
+
|
|
40
|
+
{{-- Open Graph: Telegram/WhatsApp/VK/соцсети --}}
|
|
41
|
+
<meta property="og:type" content="{{ $type }}">
|
|
42
|
+
<meta property="og:site_name" content="{{ $orgName }}">
|
|
43
|
+
<meta property="og:locale" content="ru_RU">
|
|
44
|
+
<meta property="og:title" content="{{ $title }}">
|
|
45
|
+
<meta property="og:description" content="{{ $description }}">
|
|
46
|
+
<meta property="og:url" content="{{ $canonical }}">
|
|
47
|
+
<meta property="og:image" content="{{ $ogImage }}">
|
|
48
|
+
<meta property="og:image:width" content="1200">
|
|
49
|
+
<meta property="og:image:height" content="630">
|
|
50
|
+
<meta property="og:image:alt" content="{{ $data['ogImageAlt'] ?? $title }}">
|
|
51
|
+
|
|
52
|
+
{{-- Twitter/X карточка --}}
|
|
53
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
54
|
+
<meta name="twitter:title" content="{{ $title }}">
|
|
55
|
+
<meta name="twitter:description" content="{{ $description }}">
|
|
56
|
+
<meta name="twitter:image" content="{{ $ogImage }}">
|
|
57
|
+
|
|
58
|
+
{{-- Структурированные данные --}}
|
|
59
|
+
@foreach ($jsonLd as $node)
|
|
60
|
+
<script type="application/ld+json">{!! json_encode($node, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP) !!}</script>
|
|
61
|
+
@endforeach
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# robots.txt — пример для example.org (1С-Битрикс + Aspro «Медицинский центр 3.0»)
|
|
2
|
+
# В Битриксе файл генерируется модулем «Поисковая оптимизация» (seo):
|
|
3
|
+
# Настройки → Настройки продукта → Настройки модулей → Поисковая оптимизация → robots.txt
|
|
4
|
+
# Этот файл — эталон для проверки результата. НЕ кладите его в корень поверх автогенерации,
|
|
5
|
+
# если авторежим включён. Проверка живого файла: https://example.org/robots.txt
|
|
6
|
+
#
|
|
7
|
+
# ПРИНЦИПЫ:
|
|
8
|
+
# - Закрываем только служебное: /bitrix/ (кроме нужных подпапок), /local/, /search/, /auth/, /personal/.
|
|
9
|
+
# - НЕ закрываем CSS/JS/картинки/шрифты — иначе робот не отрисует страницу.
|
|
10
|
+
# - НЕ закрываем услуги/врачей/статьи/цены — они должны ранжироваться.
|
|
11
|
+
# - UTM/сортировки/печать режем параметрами: Clean-param (Яндекс) + Disallow на параметры (Google).
|
|
12
|
+
# - Директиву Host Яндекс не использует с 2018 года — не пишите её.
|
|
13
|
+
# - Google игнорирует Crawl-delay и Clean-param; Яндекс понимает Clean-param.
|
|
14
|
+
|
|
15
|
+
User-agent: *
|
|
16
|
+
Disallow: /bitrix/
|
|
17
|
+
Disallow: /local/
|
|
18
|
+
Disallow: /search/
|
|
19
|
+
Disallow: /auth/
|
|
20
|
+
Disallow: /personal/
|
|
21
|
+
Disallow: /login/
|
|
22
|
+
Disallow: /*?sort=
|
|
23
|
+
Disallow: /*?print=
|
|
24
|
+
Disallow: /*?format=
|
|
25
|
+
Disallow: /*?view=
|
|
26
|
+
Disallow: /*?utm_
|
|
27
|
+
Disallow: /*?from=
|
|
28
|
+
Disallow: /*?callback=
|
|
29
|
+
Disallow: /*?clear_cache=
|
|
30
|
+
|
|
31
|
+
# Обход должен видеть шаблон, стили и скрипты — иначе рендеринг и Core Web Vitals страдают
|
|
32
|
+
Allow: /bitrix/js/
|
|
33
|
+
Allow: /bitrix/css/
|
|
34
|
+
Allow: /bitrix/templates/
|
|
35
|
+
Allow: /bitrix/components/
|
|
36
|
+
Allow: /local/templates/
|
|
37
|
+
Allow: /upload/
|
|
38
|
+
|
|
39
|
+
# Яндекс: не индексировать URL с этими параметрами (UTM, сортировки, пагинация-дубли)
|
|
40
|
+
Clean-param: utm_source&utm_medium&utm_campaign&utm_content&utm_term&yclid&gclid&from&sort&print /
|
|
41
|
+
|
|
42
|
+
# Опционально: закрыть служебные боты Яндекса от мусорных разделов
|
|
43
|
+
User-agent: Yandex
|
|
44
|
+
Disallow: /bitrix/
|
|
45
|
+
Disallow: /local/
|
|
46
|
+
Disallow: /search/
|
|
47
|
+
Disallow: /auth/
|
|
48
|
+
Disallow: /personal/
|
|
49
|
+
Disallow: /*?sort=
|
|
50
|
+
Clean-param: utm_source&utm_medium&utm_campaign&utm_content&utm_term&yclid&gclid /
|
|
51
|
+
|
|
52
|
+
Sitemap: https://example.org/sitemap.xml
|
|
53
|
+
|
|
54
|
+
# ---------------------------------------------------------------
|
|
55
|
+
# ЧАСТЫЕ ОШИБКИ:
|
|
56
|
+
# 1) Disallow: / — копия с тестового домена попала в прод (проверяй после каждого деплоя).
|
|
57
|
+
# 2) Disallow: /*?* — закрывает всё с параметрами, включая важные страницы; лучше точечно.
|
|
58
|
+
# 3) Disallow: /bitrix/ без Allow для js/css — робот не видит оформление.
|
|
59
|
+
# 4) Закрытие страницы в robots + noindex на ней — противоречие: страница не выйдет из индекса.
|
|
60
|
+
# 5) Sitemap с http:// или с www — не тот протокол/хост, чем канонический.
|
|
61
|
+
# ---------------------------------------------------------------
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
ПРИМЕР urlset (один файл карты) для example.org.
|
|
4
|
+
Только indexable URL: 200, без noindex, без редиректов.
|
|
5
|
+
<lastmod> — дата реального изменения контента (ISO 8601 / W3C).
|
|
6
|
+
<changefreq> и <priority> — подсказки; Google их игнорирует, Яндекс учитывает слабо.
|
|
7
|
+
Не ставь priority=1.0 всем страницам: это шум.
|
|
8
|
+
НЕ добавляй: страницы пагинации?page=N (кроме нужных), фильтры, /search/, UTM-копии,
|
|
9
|
+
служебные разделы, страницы «спасибо» и личный кабинет.
|
|
10
|
+
-->
|
|
11
|
+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
12
|
+
<url>
|
|
13
|
+
<loc>https://example.org/</loc>
|
|
14
|
+
<lastmod>2026-11-01</lastmod>
|
|
15
|
+
<priority>1.0</priority>
|
|
16
|
+
</url>
|
|
17
|
+
<url>
|
|
18
|
+
<loc>https://example.org/napravleniya/</loc>
|
|
19
|
+
<lastmod>2026-10-30</lastmod>
|
|
20
|
+
<priority>0.9</priority>
|
|
21
|
+
</url>
|
|
22
|
+
<url>
|
|
23
|
+
<loc>https://example.org/napravleniya/kardiologiya/</loc>
|
|
24
|
+
<lastmod>2026-10-28</lastmod>
|
|
25
|
+
<priority>0.8</priority>
|
|
26
|
+
</url>
|
|
27
|
+
<url>
|
|
28
|
+
<loc>https://example.org/uslugi/</loc>
|
|
29
|
+
<lastmod>2026-10-30</lastmod>
|
|
30
|
+
<priority>0.9</priority>
|
|
31
|
+
</url>
|
|
32
|
+
<url>
|
|
33
|
+
<loc>https://example.org/uslugi/mrt-golovy/</loc>
|
|
34
|
+
<lastmod>2026-10-20</lastmod>
|
|
35
|
+
<priority>0.8</priority>
|
|
36
|
+
</url>
|
|
37
|
+
<url>
|
|
38
|
+
<loc>https://example.org/uslugi/mrt/</loc>
|
|
39
|
+
<lastmod>2026-10-20</lastmod>
|
|
40
|
+
<priority>0.7</priority>
|
|
41
|
+
</url>
|
|
42
|
+
<url>
|
|
43
|
+
<loc>https://example.org/vrachi/</loc>
|
|
44
|
+
<lastmod>2026-10-28</lastmod>
|
|
45
|
+
<priority>0.8</priority>
|
|
46
|
+
</url>
|
|
47
|
+
<url>
|
|
48
|
+
<loc>https://example.org/vrachi/ivanov-ivan/</loc>
|
|
49
|
+
<lastmod>2026-09-12</lastmod>
|
|
50
|
+
<priority>0.7</priority>
|
|
51
|
+
</url>
|
|
52
|
+
<url>
|
|
53
|
+
<loc>https://example.org/blog/</loc>
|
|
54
|
+
<lastmod>2026-10-15</lastmod>
|
|
55
|
+
<priority>0.7</priority>
|
|
56
|
+
</url>
|
|
57
|
+
<url>
|
|
58
|
+
<loc>https://example.org/blog/vysokoe-davlenie/</loc>
|
|
59
|
+
<lastmod>2026-10-18</lastmod>
|
|
60
|
+
<priority>0.6</priority>
|
|
61
|
+
</url>
|
|
62
|
+
<url>
|
|
63
|
+
<loc>https://example.org/novosti/den-otkrytyh-dverey-2026-04-12/</loc>
|
|
64
|
+
<lastmod>2026-04-12</lastmod>
|
|
65
|
+
<priority>0.5</priority>
|
|
66
|
+
</url>
|
|
67
|
+
<url>
|
|
68
|
+
<loc>https://example.org/kontakty/</loc>
|
|
69
|
+
<lastmod>2026-10-01</lastmod>
|
|
70
|
+
<priority>0.6</priority>
|
|
71
|
+
</url>
|
|
72
|
+
</urlset>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
ПРИМЕР sitemap-индекса для example.org (большой сайт: услуги/врачи/статьи/новости отдельно).
|
|
4
|
+
Если сайт небольшой (<50 000 URL) — можно один urlset без индекса:
|
|
5
|
+
см. sitemap-urlset-example.xml.
|
|
6
|
+
Требования:
|
|
7
|
+
• только URL с ответом 200 и без noindex;
|
|
8
|
+
• lastmod — реальная дата изменения (не «сегодня» у всех);
|
|
9
|
+
• ≤50 000 URL и ≤50 МБ на файл;
|
|
10
|
+
• карта должна быть доступна по https://example.org/sitemap.xml и указана в robots.txt;
|
|
11
|
+
• отправить в GSC и Яндекс Вебмастер.
|
|
12
|
+
В Битриксе генерируется модулем «Поисковая оптимизация» (Настройки модулей → sitemap.xml);
|
|
13
|
+
этот файл — эталон структуры, а не для ручной заливки поверх автогенерации.
|
|
14
|
+
-->
|
|
15
|
+
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
16
|
+
<sitemap>
|
|
17
|
+
<loc>https://example.org/sitemap-pages.xml</loc>
|
|
18
|
+
<lastmod>2026-10-20</lastmod>
|
|
19
|
+
</sitemap>
|
|
20
|
+
<sitemap>
|
|
21
|
+
<loc>https://example.org/sitemap-uslugi.xml</loc>
|
|
22
|
+
<lastmod>2026-11-01</lastmod>
|
|
23
|
+
</sitemap>
|
|
24
|
+
<sitemap>
|
|
25
|
+
<loc>https://example.org/sitemap-vrachi.xml</loc>
|
|
26
|
+
<lastmod>2026-10-28</lastmod>
|
|
27
|
+
</sitemap>
|
|
28
|
+
<sitemap>
|
|
29
|
+
<loc>https://example.org/sitemap-blog.xml</loc>
|
|
30
|
+
<lastmod>2026-10-15</lastmod>
|
|
31
|
+
</sitemap>
|
|
32
|
+
<sitemap>
|
|
33
|
+
<loc>https://example.org/sitemap-news.xml</loc>
|
|
34
|
+
<lastmod>2026-11-03</lastmod>
|
|
35
|
+
</sitemap>
|
|
36
|
+
</sitemapindex>
|
|
@@ -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
|
+
| обещать излечение | «врач подберёт схему по результатам обследования» |
|