feat: breadcrumbs, related tools

This commit is contained in:
2026-10-12 16:37:35 +05:00
parent 5184878589
commit 399c3fb282
10 changed files with 182 additions and 17 deletions
+8 -5
View File
@@ -10,7 +10,7 @@
## Тесты и lint
- [ ] правило - только английские комментарии не работает на svelte файлы
- [x] правило - только английские комментарии не работает на svelte файлы
- [ ] правило - ограницить комментарии вроде уменьшило простыни из комментариев,
но всё равно они есть и часто пишет очевидные вещи. надо более строгое
правило. может такой вариант: разрешено писать комментарии в коде, но
@@ -230,13 +230,16 @@
## SEO/GEO
- [ ] снять `noindex` со страниц инструментов, когда будут sitemap, canonical и
- [ ] исследовать - стоит сделать страницу категорий? для crumbs
- [ ] related tools - после добавления популярности инструментов учитывать самые
популярные инструменты
- [x] снять `noindex` со страниц инструментов, когда будут sitemap, canonical и
контент (S1h; блокирует индексацию всего сайта) — `docs/plan-seo.md` §4
- [ ] форматные страницы по конкурентным слагам (`crop-jpeg`, …) — только по
вордстату с уникальным контентом; редиректы только для опечаток и
переименований уже опубликованных страниц; клонов с canonical не делать
(`docs/plan-seo.md` §5)
- [ ] sitemap.xml из реестра + `Sitemap:` в robots.txt (S1b/S1c)
- [x] sitemap.xml из реестра + `Sitemap:` в robots.txt (S1b/S1c)
- [ ] Seo.svelte: per-tool OG-картинки (S1e) — у каждой страницы инструмента
своя превью-карточка 1200×630 для соцсетей/мессенджеров: имя инструмента,
бренд, иконка. Сейчас все страницы ссылаются на общую
@@ -246,10 +249,10 @@
инструмента в `static/og/[slug].png`, в `Seo.svelte` подставлять og-URL по
slug страницы. Критерий приёмки: у `/tools/flip-png` в og:image своя
картинка с названием инструмента, файл лежит в `static/og/`
- [ ] контент страницы инструмента: seo-блок в словарях, how-to/FAQ/related (S2)
- [x] контент страницы инструмента: seo-блок в словарях, how-to/FAQ/related (S2)
- [ ] JSON-LD (SoftwareApplication/FAQPage/Breadcrumb) + llms.txt (S3)
- [ ] дистрибуция: закрепить репо, alternative.to, Product Hunt, Reddit/HN (S4c)
- [ ] GSC: подключить домен, отправить sitemap, мониторинг индексации (S4a)
- [x] GSC: подключить домен, отправить sitemap, мониторинг индексации (S4a)
- [ ] GA4: cookieless-конфигурация, отключить рекламные audiences и signals,
`anonymize_ip` — сейчас в `web/src/routes/+layout.svelte` голый
`gtag('config')` (S4b)
+10 -3
View File
@@ -292,9 +292,16 @@
без текста не меняются. Новый токен `--size-content-prose` (мера колонки
текста) появился вместе с потребителем. **Не сделано и вынесено в S2c:**
related tools и хлебные крошки.
- [ ] **[S2c]** Хлебные крошки (Каталог → Категория → Инструмент) в UI. Related
tools по категории (2–3 «соседних» интента) — здесь же: это внутренняя
перелинковка, без неё страницы ядра плохо связаны между собой.
- [x] **[S2c]** Хлебные крошки (Каталог → Категория → Инструмент) и related
tools — **сделано 2026-10-12**: `Breadcrumbs.svelte` (над H1, первая
крошка ссылается на `/list-tools`, средняя — текст до появления хабов
категорий, S3c) и блок Related из 6 карточек под FAQ. **Related выводится,
а не перечисляется:** `relatedPages()` в `web/src/lib/catalog.ts` берёт
соседей по категории в порядке каталога и добирает из остального каталога,
если категория мала (в `text` всего три страницы — это поймал тест).
Список руками не ведётся, новый инструмент попадает в чужие related сам.
Тесты: `web/src/lib/catalog.test.ts` (категория, детерминированность,
достаточность соседей).
- [ ] **[S2d]** Первая волна контента — топ приоритетных инструментов ядра
(приоритет по вордстату: transparent png, jpg→png, compress, resize, crop,
rotate, circle crop, add text, pixelate, grayscale…); отбор — §5. **Ядро