Роль для ИИ-агентов
Роль: Сборщик
Собрать сайт по структуре контента, проверить его и выложить. Если тема и страницы ещё не готовы, сборщик ведёт работу дизайнера и контента сам, по их чек-листам. Общие правила — на странице Инструкция для ИИ-агентов.
Команды — через образ. Без Docker то же самое делает heron с той же командой из pip-пакета.
Простыми словами
Сборщик — прораб на стройке. Он берёт план, тему и страницы, снова и снова запускает сборку, пока она не станет чистой, упаковывает сайт, проверяет, что он открывается, и пишет короткий отчёт: что сделано и чего ещё не хватает.
Пример. Строгая сборка останавливается: «E005 content/ru/Ремонт Крыши.md: недопустимое имя файла». Сборщик переименовывает файл в roof-repair.md, запускает сборку снова и повторяет, пока она не станет чистой. Потом делает образ, запускает дымовую проверку и публикует.
Эта страница нужна, когда агенту (или вам) нужно превратить готовую структуру в сайт в интернете. Если вы только меняете тексты, хватит роли контента.
Вход и выход
На входе: документ со структурой сайта (по форме templates/structure.md), иногда — тексты и картинки.
На выходе: папка сайта, которая собирается build --env prod --strict без ошибок; при необходимости — образ; отчёт.
H="docker run --rm -v $PWD:/site -w /site --user $(id -u):$(id -g) ghcr.io/fmstm/heron:prod"
Путь к сайту — относительно текущей папки: контейнер видит только её. . — если вы в папке сайта.
Документация этой версии HERON — $H docs (оглавление), $H docs TOPIC, $H docs --search TEXT.
1. Создать папку
У агента нет терминала, поэтому new вопросов не задаёт — всё флагами:
$H new мой-сайт --notes ru --name "Название" --domain example.com --lang en,ru -y
--lang— языки через запятую, первый — основной;--domainбез схемы. Не знаете домена — не передавайте: останется заглушкаNAME.example, и это строка в отчёте;--notes ru|en— язык комментариев во всех файлах и сообщений на экране; по умолчаниюen, запоминается вbuild.notes;- папка под git (
.git,.gitignore,README) годится:$H new . …; - результат —
site.yaml, тема, главная и 404 на каждом языке с SEO-блоком, записки по папкам. Стартовый сайт собирается--env prod --strictбез предупреждений.
Папка с контентом уже есть — не new, а $H init мой-сайт: дописывает недостающее и ничего не перезаписывает.
2. Заполнить site.yaml
Образец всех ключей — templates/site.yaml. Минимум:
heron: ">=0.1,<0.2"
site:
domain: example.com
theme: main
default_lang: en # из корня: /about/
languages: [en, ru] # русский — под /ru/
name: Daybreak
name_ru: Рассвет # если отличается
seo:
title_suffix: " — Daybreak"
title_suffix_ru: " — Рассвет"
nav:
main: ["/", about, services, contacts] # ключи страниц
Затем достроить папки под языки:
$H init мой-сайт # content/LANG/index.md и 404.md, theme/i18n/LANG.yaml
Чего не делать: не писать домен, телефон, счётчики «примерные» — пусто лучше выдуманного. Не класть в папку Dockerfile, compose, .env.
3. Тема
types и links в theme/theme.yaml — из структуры; шаблон на каждый тип, модуль на каждую форму. Как — на странице Дизайнер.
4. Контент
Файл на каждую страницу структуры; имя файла = ключ, одинаковое во всех языках. Новая страница — $H page TYPE NAME мой-сайт. Как писать SEO-блок и секции — на странице Контент и SEO.
5. Цикл проверки
$H check мой-сайт # отчёт без сборки
$H build мой-сайт # дев-сборка в мой-сайт/dist
$H build мой-сайт --env prod --strict # как прод: предупреждения — ошибки
Читайте отчёт целиком. Ошибки (E0xx) останавливают сборку — исправить. Предупреждения сгруппированы: картинки, связи, ссылки, меню, переводы, языки, контент, прочее; полный список — .heron-cache/warnings.txt рядом со сборкой. Сводка «Не заполнено» — долги контента, их — в отчёт.
Частые ошибки:
| Код | Что значит | Что делать |
|---|---|---|
E002 |
нет title/h1/description или поле не того типа |
дописать; даты — ГГГГ-ММ-ДД |
E004 |
два файла дают один адрес | разные slug |
E005 |
имя файла или slug не латиница-цифры-дефис |
переименовать |
E006 |
связь на страницу, которой нет | имя файла без расширения, не адрес |
E007 |
файла из media/ нет на диске |
путь от корня сайта |
E008 |
у типа нет шаблона | theme/templates/TYPE.html |
E009 |
redirect_from совпал с адресом страницы или ведёт в два места |
убрать дубль |
E011 |
site.yaml не прошёл проверку или тема требует пустой ключ |
смотреть сообщение |
E012 |
версия HERON не из диапазона heron: в site.yaml |
другой тег образа или диапазон |
E020 |
разметка: нет объявленного типа, пустой адрес в сквозном узле, цены | schema в site.yaml; цены — seo.allow_prices |
E021 |
прод, а основной язык пуст | заполнить или сменить default_lang |
E022 |
gone закрывает страницу или пересекается с redirect_from |
выбрать одно |
Полный список — сборка, §11.
6. Что проверить в собранном сайте
- главные страницы каждого языка открываются; в заголовке страницы (head) —
titleс суффиксом,canonical, hreflang (на многоязычном сайте); dist/sitemap.xmlперечисляет все индексируемые страницы (на многоязычном — через файлы по языкам, напримерsitemap-ru.xml); 404 иnoindexтам нет;dist/404.htmlи страницы 404 языков, напримерdist/ru/404/index.html, на месте;dist/llms.txt— описание и перечень (или оглавление языков);dist/redirects.mapиdist/gone.map— то, что ожидалось по таблице переноса;- в разметке (блок script с типом
application/ld+json) — нужные типы; отчёт считает страницы по типам.
7. Выкладка
Папка dist/ — на любой хостинг статики, с .heron-nginx.conf для своего nginx. Образ и проверка ответов сервера — из клона репозитория HERON:
./scripts/site.sh SITE build prod
./scripts/site.sh SITE image prod
./scripts/site.sh SITE smoke prod # 200, 404, каждый 301 и каждый 410
./scripts/site.sh SITE push prod
Сайт в своём репозитории без клона HERON — переиспользуемый workflow FMSTM/HERON/.github/workflows/site-image.yml: собирает, упаковывает, проверяет и отправляет образ, свой Dockerfile не нужен.
Подробно — гайд Сборка и выкладка.
8. Отчёт
Что сделано; какие страницы созданы; какие секции не заполнены (сводка долгов); какие факты не подтверждены (вопросы заказчику); какие предупреждения оставлены и почему; расхождения документации с поведением HERON, если были.
Чек-лист
site.yaml:heron:, домен, языки, название, меню; нет выдуманных фактов- у каждого типа из структуры — шаблон; у каждой страницы — файл
build --env prod --strictбез ошибок- карты 301/410 совпадают с таблицей переноса;
smoke prodзелёный - отчёт: долги, вопросы, оставленные предупреждения
Источник
Эта страница повторяет файл docs/agents/builder.md из ветки prod. Репозиторий обновляется первым: builder.md на GitHub.