mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 21:46:35 +00:00
docs: update plans
This commit is contained in:
+40
-22
@@ -1,8 +1,11 @@
|
||||
# План: SEO + GEO — индексация и конкуренция в image tools
|
||||
|
||||
> **Статус (2026-09-09):** план к выполнению. Старт — после C17
|
||||
> **Статус (2026-09-10):** план к выполнению. Старт — после C17
|
||||
> (`plan-redesign.md`): до переезда `preview/*` на реальные маршруты страницы
|
||||
> инструментов в `noindex`, применять техминимум некуда.
|
||||
> **Уточнено:** домен НЕ блокер C17 (см. §6). Задачи S1 разбиты на
|
||||
> domain-free (можно делать параллельно с покупкой домена) и domain-required
|
||||
> (после покупки и настройки домена на Vercel).
|
||||
>
|
||||
> **Цель:** каждая страница инструмента — индексируемый лендинг под конкретный
|
||||
> интент («crop png», «make png transparent», «jpg to png»…), конкуренция с
|
||||
@@ -133,22 +136,16 @@
|
||||
|
||||
### S1. Технический минимум (сразу после C17)
|
||||
|
||||
- [ ] **[S1a]** Снять `noindex, nofollow` со страницы инструмента
|
||||
(`preview/tools/[id]/+page.svelte`) — встроено в C17 как атомарный шаг
|
||||
(см. `plan-redesign.md`).
|
||||
- [ ] **[S1b]** Скрипт `web/scripts/gen-sitemap.mjs`: генерирует `sitemap.xml` в
|
||||
`build/` из `TOOLS` реестра (`registry-new`) + статических страниц. Вызов
|
||||
из `pnpm build` после `vite build` (adapter-static пишет в `build/`,
|
||||
дописываем файл там же). Origin — из env (`PUBLIC_SITE_ORIGIN`), учёт
|
||||
опционального `BASE_PATH`.
|
||||
- [ ] **[S1c]** `robots.txt`: `Sitemap:` + закрыть служебные маршруты
|
||||
(`/preview/kit` до C17; после — вернуть минимальный allow-all).
|
||||
- [ ] **[S1d]** Компонент `Seo.svelte` (kit): canonical (абсолютный URL по
|
||||
актуальному маршруту), OG-теги (title/description/type/url/image),
|
||||
twitter:card. Подключить в root-layout.
|
||||
Разбито на две группы: **domain-free** (делаем параллельно с покупкой домена)
|
||||
и **domain-required** (после покупки и DNS-настройки).
|
||||
|
||||
#### S1-free: без домена (параллельно с C18–C19)
|
||||
|
||||
- [ ] **[S1e]** OG-картинки per-tool: генерация PNG-карточек скриптом на
|
||||
существующем ядре (мы сами умеем рисовать PNG) — имя инструмента + бренд,
|
||||
файл `static/og/[id].png`, ссылка из `Seo.svelte`.
|
||||
файл `static/og/[id].png`, ссылка из `Seo.svelte`. Относительные пути
|
||||
(`/og/crop-png.png`) работают без домена; при деплое на Vercel с
|
||||
собственным доменом OG-картинки будут корректными.
|
||||
- [ ] **[S1f]** Download-кнопка с селектором формата PNG/JPG/WebP/BMP (+quality
|
||||
для lossy) для всех инструментов — механика `ToolEntry.output` уже есть
|
||||
(backlog №7, райз «выбор формата/качества»). Продуктовая основа «image
|
||||
@@ -159,8 +156,27 @@
|
||||
png. Существующие страницы не трогать: `jpg-to-png`, `png-to-jpg`,
|
||||
`png-to-webp`, `png-to-bmp` остаются самостоятельными лендингами со своим
|
||||
контентом (§5).
|
||||
- Гейты: build зелёный; в `build/` лежит корректный `sitemap.xml` со всеми
|
||||
инструментами; canonical/OG присутствуют на всех страницах; e2e зелёные.
|
||||
|
||||
#### S1-domain: с доменом (после покупки + DNS на Vercel)
|
||||
|
||||
- [ ] **[S1a]** Снять `noindex, no_follow` со страницы инструмента
|
||||
(`tools/[id]/+page.svelte`) — делается одновременно с S1d (canonical)
|
||||
чтобы Google сразу проиндексировал с правильным доменом.
|
||||
- [ ] **[S1b]** Скрипт `web/scripts/gen-sitemap.mjs`: генерирует `sitemap.xml` в
|
||||
`build/` из `TOOLS` реестра (`registry-new`) + статических страниц. Вызов
|
||||
из `pnpm build` после `vite build` (adapter-static пишет в `build/`,
|
||||
дописываем файл там же). Origin — из env (`PUBLIC_SITE_ORIGIN`), учёт
|
||||
опционального `BASE_PATH`.
|
||||
- [ ] **[S1c]** `robots.txt`: `Sitemap:` + закрыть служебные маршруты
|
||||
(`/kit` до C19; после — вернуть минимальный allow-all).
|
||||
- [ ] **[S1d]** Компонент `Seo.svelte` (kit): canonical (абсолютный URL по
|
||||
актуальному маршруту), OG-теги (title/description/type/url/image),
|
||||
twitter:card. Подключить в root-layout. **Требует `PUBLIC_SITE_ORIGIN`**
|
||||
для абсолютных URL в canonical и OG:url.
|
||||
|
||||
> **Порядок S1:** S1e/S1f/S1g → покупка домена → S1a+S1b+S1c+S1d.
|
||||
> Гейты: build зелёный; в `build/` лежит корректный `sitemap.xml` со всеми
|
||||
> инструментами; canonical/OG присутствуют на всех страницах; e2e зелёные.
|
||||
|
||||
### S2. Контентный слой (параллельно C18–C19, волнами по категориям)
|
||||
|
||||
@@ -297,7 +313,7 @@ with PNG, JPG, WebP» в тексте + селектор формата в Downl
|
||||
интенты, которые подтверждены вордстатом, и сразу с контентом S2 (страница без
|
||||
текста — потраченный URL).
|
||||
|
||||
## 6. Переименование бренда и домен (сделать до S1, дёшево сейчас)
|
||||
## 6. Переименование бренда и домен (сделать до S1-domain, дёшево сейчас)
|
||||
|
||||
Новое имя и конкретный домен **не записаны в этом репозитории** — детальный
|
||||
чек-лист в `docs/plan-domain.local.md` (исключён из git через `.gitignore`),
|
||||
@@ -311,10 +327,12 @@ with PNG, JPG, WebP» в тексте + селектор формата в Downl
|
||||
ключи localStorage (`easy-png-tools:*` — или мигрировать отдельной
|
||||
мелочью), историю docs/archive.
|
||||
- [ ] **[R2]** Купить выбранный домен (кандидаты и пробы — в локальном плане) и
|
||||
настроить деплой без `BASE_PATH` (§0). Домен нужен до S1: canonical и
|
||||
sitemap генерятся от `PUBLIC_SITE_ORIGIN`.
|
||||
- Порядок: R1+R2 в любой момент до C17; после индексации переименование =
|
||||
переезд с 301, потеря позиций и ссылок — не делать.
|
||||
настроить деплой на Vercel без `BASE_PATH` (§0). Домен нужен до S1-domain:
|
||||
canonical и sitemap генерятся от `PUBLIC_SITE_ORIGIN`.
|
||||
- **Порядок:** R1+R2 можно делать параллельно с C17/C18/C19 (не блокируют).
|
||||
R2 (домен) — блокер только для S1-domain (canonical + sitemap + снятие
|
||||
`noindex`). После индексации переименование = переезд с 301, потеря позиций
|
||||
и ссылок — не делать. Поэтому R1/R2 — до S1-domain, но не обязательно до C17.
|
||||
|
||||
## 7. Что осознанно НЕ делаем
|
||||
|
||||
|
||||
Reference in New Issue
Block a user