Гайд на вашем сайте
Гайд — то, что подписчик получает в директ за кодовое слово. Это страница-разбор на вашем сайте: связный текст, две инфографики, источники и кнопка с кодовым словом. Агент пишет, рисует и выкладывает её одной командой.
- команда
- /гайд
- инфографики
- 2 × 1536×1024
- проверка
- страница отдаёт 200
01Как выглядит
Так выглядит живой гайд «Почему блог не приносит продажи» на сайте студии: шапка, связный текст, инфографика, врезка «Где обычно ошибаются».


02Канон гайда: четыре опоры
03Шаги
- 1
Страница и карточка
делает агентПишет
site/app/guides/<slug>/page.tsxи добавляет карточку вsite/lib/guides.tsпервой в список — так гайд появится на витрине. - 2
Инфографики
делает агентДве картинки в ChatGPT по спеке. Готовые пропускаются, файл меньше 10 КБ считается браком.
- 3
Текст через humaniser
делает агентГайд — длинный текст в публикацию, его чистят от AI-клише и проверяют линтером с флагом
--allow-dots. - 4
Деплой
делает агентСайт собирается на сервере, проверяется ответ 200, при сбое сам откатывается.
- 5
Проверка перед воронкой
делает агентСтраница и обе инфографики открываются, карточка видна в списке гайдов. В реестре —
guideLive: trueи ссылка.
04Инфографики
Агент описывает обе картинки в спеке. Каждая карточка пишется строкой по шаблону «N ЗАГОЛОВОК — пояснение | example chip: «пример»».
{
"slug": "<slug>",
"outDir": "site/public/guides/<slug>",
"wordmark": "<БРЕНД>",
"items": [
{
"file": "infographic-01.png",
"title": "Где тема стоит в системе",
"subtitle": "Одна строка пояснения",
"intro": "Одно вводное предложение, которое задаёт урок.",
"cards": [
"1 ПЕРВЫЙ ШАГ — что это | example chip: «пример»",
"2 ВТОРОЙ ШАГ — что это | example chip: «пример»",
"3 ТРЕТИЙ ШАГ — что это | example chip: «пример»"
],
"takeaway": "Одно правило, которое надо запомнить"
},
{ "file": "infographic-02.png", "title": "Порядок проверки", "subtitle": "…", "intro": "…",
"cards": ["1 …", "2 …", "3 …", "4 …"], "takeaway": "…" }
]
}A DETAILED EDUCATIONAL TEACHING BANNER / classroom-poster infographic, LANDSCAPE orientation 1536x1024 (3:2). Think of a richly-labelled textbook diagram that explains a concept step by step. WARM CREAM PAPER background #F7F2E8 with a very subtle paper texture — premium editorial magazine look, NOT a white tech UI. Use an elegant high-contrast SERIF display font (like Playfair Display) for the big TITLE, and a clean readable sans for labels. ALL TEXT IN RUSSIAN, correct spelling, NO gibberish, real legible words.
Layout as a full one-page teaching poster:
- TOP: bold serif TITLE + a short subtitle + ONE intro sentence that frames the lesson.
- MIDDLE: large numbered cards on warm off-white #FCF9F2 with thin warm borders #E4DAC7 and soft shadow, arranged to fill the wide frame. Each card is detailed: a TERRACOTTA #BE4A24 rounded number badge + a simple thin line ICON + a bold heading (dark warm ink #1E1A16) + ONE short line of explanation #6E655A + a tiny MONOSPACE example chip in a darker pill.
- thin terracotta connector ARROWS left-to-right showing flow.
- BOTTOM: a highlighted TAKEAWAY strip with soft terracotta tint and a bold one-line rule to remember.
Small "<WORDMARK>" wordmark bottom-right in terracotta. Calm, warm, premium, well-spaced but information-rich like a study sheet.
TITLE: "<title>". Subtitle: "<subtitle>".
Intro sentence under the title: "<intro>"
<N> large detailed numbered cards (1..N), left-to-right:
<cards по строке>
Bottom takeaway strip (bold): "<takeaway>"05Деплой и проверка
node scripts/content/guide-infographics.mjs workspace/guides/<slug>/infographics.json # две инфографики 1536×1024
python ~/.claude/skills/humaniser/scripts/lint.py <текст-гайда>.md --allow-dots # проверка текста
node scripts/site-deploy.mjs # деплой + проверка 200, при сбое сам откатывается
node scripts/site-deploy.mjs --check # только проверить, что домен живой
node scripts/site-deploy.mjs --rollback # вернуть предыдущий релиз
curl -s -o /dev/null -w "%{http_code}\n" https://<домен>/guides/<slug>
curl -s -o /dev/null -w "%{http_code}\n" https://<домен>/guides/<slug>/infographic-01.png06Шаблоны страницы
import type { Metadata } from "next";
import { Header } from "@/components/Header";
import { Footer } from "@/components/Footer";
import { GuideHero, Figure, Callout, Sources, KeywordCTA, BackToGuides } from "@/components/Guide";
import { getGuide } from "@/lib/guides";
const g = getGuide("<slug>")!;
export const metadata: Metadata = { title: g.title, description: g.excerpt };
export default function Page() {
return (
<>
<Header />
<GuideHero title={g.title} excerpt={g.excerpt} date={g.date} readMin={g.readMin} tag={g.tag} />
<article className="prose-editorial max-w-prose mx-auto px-5">
<p>Вводный абзац: ситуация читателя и о чём этот гайд.</p>
<h2>Что говорят данные</h2>
<p>Факт с источником: кто, когда, какая цифра.</p>
<Figure src="/guides/<slug>/infographic-01.png" alt="Общая схема" caption="Что показывает схема" />
<h2>Как это устроено</h2>
<p>Связная проза, не список.</p>
<Callout title="Где обычно ошибаются" tone="warn"><p>Подвох или ограничение.</p></Callout>
<h2>Порядок действий</h2>
<p>В каком порядке и почему именно так.</p>
<Figure src="/guides/<slug>/infographic-02.png" alt="Порядок шагов" caption="Проверяйте сверху вниз" />
<h2>Чего этот гайд не обещает</h2>
<p>Честная оговорка про ограничения.</p>
</article>
<KeywordCTA keyword="СЛОВО" text="Хотите <польза>? Напишите «СЛОВО»." href="https://t.me/<канал>" />
<Sources items={[{ title: "<Источник>", url: "https://…", note: "<кто, год, какая цифра>" }]} />
<BackToGuides />
<Footer />
</>
);
} {
slug: "<slug>", // папка app/guides/<slug>/
title: "<Заголовок карточки>",
excerpt: "<1–2 предложения, зачем читать>",
date: "ГГГГ-ММ-ДД",
readMin: 6,
tag: "<короткая метка темы>",
keyword: "СЛОВО", // если гайд связан с воронкой
},