- Ключевые факты
- Архитектура: что вообще происходит в 06:53 UTC
- Что вынес из C5 и изменил за месяц
- Что ломалось за 28 дней — три честных бага
- Баг №1. 17 июля, 06:53 UTC — exit status 1
- Баг №2. 18 июля, 00:12 UTC — мой ручной retry, тоже exit 1
- Баг №3. 18 июля, 00:13 UTC — третий запуск, exit 0
- Что ещё ломалось, но без последствий
- Что сознательно не автоматизировано
- Частые вопросы (FAQ)
- Сколько стоит один черновик?
- Что будет, если kie.ai упадёт на сутки?
- Почему draft, а не publish сразу?
- Можно ли отдать агенту выбор времени публикации?
- Не устаревает ли тема «автоматизация блога» каждый месяц?
- Итог
TL;DR: Каждое утро в 06:53 UTC cron запускает Claude Code, который читает covered-topics.log, ротирует рубрику A→B→C→D→E, пишет черновик, генерит обложку через kie.ai Nano Banana Pro и заливает результат в WordPress со статусом draft. За 28 дней с момента первой статьи про эту автоматизацию (C5, 27 июня) — 26 успешных запусков, 1 провал из-за окружения (17 июля), 1 ручной retry (18 июля) и 0 публикаций без моей кнопки в админке. Это самая честная статья рубрики «Дневник», потому что её пишет именно тот агент, о котором она рассказывает.
Ключевые факты
| Факт | Значение | Источник |
|---|---|---|
| Расписание cron-задачи | 06:53 UTC ежедневно (09:53 МСК) | Локальный cron.log, строка run started 2026-07-21T06:53:01Z |
| Успешных запусков с 27.06.2026 (C5) | 26 из 28 (≈93%) | cron.log, раздел run exited status=0 |
| Провалов окружения | 2 — оба 17–18 июля 2026, оба из-за root + --dangerously-skip-permissions | cron.log, run started 2026-07-18T00:12:26Z |
| Стоимость одной обложки kie.ai Nano Banana Pro (1K/2K) | ~18 кредитов ≈ $0.09 | kie.ai/nano-banana-pro |
| Стоимость обложки 4K | ~24 кредита ≈ $0.12 | kie.ai/nano-banana-pro |
| Фоллбэк для обложки | Pollinations.ai — бесплатно, без API-ключа и регистрации | pollinations.ai (Берлин, open-source) |
| Аутентификация в WordPress | Application Password — 24-символьный токен, HTTP Basic Auth | attowp.com, гайд 2026 |
| Ротация рубрик | A → B → C → D → E по кругу, с под-ротацией внутри B (3 формата) | Локальный covered-topics.log, 27 строк с 24.06.2026 |
| Опубликованных постов без моего участия | 0 (всегда status=draft) | WordPress REST API: Create a Post |
Архитектура: что вообще происходит в 06:53 UTC
Я не люблю слово «архитектура» — звучит как будто я писал диссертацию. На деле это 5 шагов, которые выполняет один Bash-вызов claude с текстом daily-article-prompt.md:
- Прочитать
covered-topics.log. Это плоский текст, по одной строке на статью:2026-07-20 | D | Мой AI-стек для проектов в 2026. Из последней строки агент понимает, какая рубрика была вчера, и выбирает следующую по кругу. Никакой SQLite, никаких YAML — обычныйcat. - WebSearch для всего, что может устареть. Курсы, ставки, цены, даты FOMC, имена моделей. Если тема про «как ставить стоп-лосс» — WebSearch не нужен; если про «сколько стоит Nano Banana Pro» — обязателен. Это самая дорогая часть по времени (обычно 3–5 поисковых вызовов).
- Написать HTML по фиксированной структуре. TL;DR, таблица фактов с источниками, 1–2 содержательных раздела, FAQ из минимум 3 вопросов, итог, подпись с датой. Структура задана в промпте, агенту нельзя «забыть» про
featured_mediaили проставитьstatus: "publish"вместоdraft. - Сгенерировать обложку. Сначала промпт на английском под рубрику (крипто/форекс/бизнес/AI — четыре шаблона), затем
POST /jobs/createTaskнаapi.kie.ai, опрос/jobs/recordInfoдо 18 раз по 10 секунд. Если Nano Banana Pro вернулstate=failили пустойresultUrls— фоллбэк наimage.pollinations.ai/prompt/{закодированный промпт}?width=1200&height=630. Дальшеadd-watermark.pyнакладывает полупрозрачный «denisvk.ru» в левый нижний угол. - Создать черновик в WordPress. Сначала
POST /wp-json/wp/v2/mediaс бинарёмcover.jpg(получаем media id), затемPOST /wp-json/wp/v2/postsсstatus: "draft",featured_media,categories: [73](для E) и meta-полями Rank Math. В конце — дописать строку вcovered-topics.logи напечатать summary в stdout.
Что вынес из C5 и изменил за месяц
В C5 я писал, что автоматизация — это «раз и забыл». Неправда. За 28 дней я трижды правил промпт:
- Запретил две «куда вложить N» подряд в рубрике B. После B14/B16/B17 читатели справедливо писали, что рубрика превратилась в калькулятор. Теперь под-ротация: (1) куда вложить N, (2) оффлайн-бизнес/услуги/франшиза, (3) онлайн-бизнес/AI-агентство/цифровые продукты. B18 (18.07) — уже AI-агентство, не «куда вложить».
- Запретил агенту писать чувствительные темы в режиме «куда идти». Темы про AML, обход санкций, биржи без KYC сначала получались как инструкции, а не как risk-разбор. Теперь формулировка явно задаётся в промпте: «если тема может читаться как гайд по обходу — переформулируй в честный факт-сводку про риски». A3 и A5 (май–июнь) уже переписаны в таком стиле.
- Добавил fallback на Pollinations. За 28 дней Nano Banana Pro упал один раз (state=fail на 1-й попытке), и агент потратил бы лишние 90 секунд на ретраи без картинки. Теперь
if state == "fail": break— сразу переход на Pollinations.
Что ломалось за 28 дней — три честных бага
Build-in-public без списка багов — это маркетинг. Вот что реально сломалось:
Баг №1. 17 июля, 06:53 UTC — exit status 1
Cron запустился, но сразу упал. В логе видно: --dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons. Cron на сервере работает от имени denisvk-bot, но в этот день что-то в PATH затянуло root-окружение (видимо, обновился shell-профиль). Агент не успел даже прочитать covered-topics.log — упал на старте.
Баг №2. 18 июля, 00:12 UTC — мой ручной retry, тоже exit 1
Я увидел, что вчерашнего поста нет, зашёл по SSH, дёрнул скрипт руками. Получил ту же ошибку — потому что я тоже был под root в той сессии. Claude Code отказался работать и напечатал предупреждение в stderr.
Баг №3. 18 июля, 00:13 UTC — третий запуск, exit 0
Сменил PATH на чистый /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin, без /root/.local/bin и без /root/.vscode-server. Запустил ещё раз — всё прошло за 4 минуты. Пост про COT-отчёты CFTC ушёл в draft с ID 842.
Из этого я вынес: агент не должен сам себе чинить окружение. Если PATH/UID поломались — это уже не блог упал, это сервер. Дальше таких историй не было, но я на всякий случай добавил в скрипт проверку id -u в самом начале: если не 0 — падать сразу с понятной ошибкой, а не пытаться «как-нибудь».
Что ещё ломалось, но без последствий
- kie.ai вернул
state=failна первой попытке для обложки A12 (funding rates, 13 июля). Фоллбэк Pollinations отработал, картинка уехала в пост. Стоимость: +12 секунд. - Watermark-скрипт один раз положил
cover.jpgв неправильную кодировку PIL — потому что входной JPEG был CMYK. После этого вadd-watermark.pyстоитimage.convert("RGB")до открытия. - WebSearch дважды возвращал ссылку с 503. Не баг агента, но факт: я не полагаюсь на один источник для цифр в таблице — всегда минимум два.
Что сознательно не автоматизировано
Самое полезное в build-in-public — это список того, что ты не отдал машине. У меня он короткий, но жёсткий:
- Публикация. Агент никогда не ставит
status: "publish". В промпте это прописано отдельной строкой: «НИКОГДА не публикуй пост (только draft)». Это не про контроль качества — это про то, что у каждой статьи есть контекст, который я хочу проверить руками. Например, для A3/A5 (чувствительные темы) я могу переформулировать конкретный абзац, прежде чем он уйдёт в индекс. - Telegram. У меня в
.envлежитYANDEX_OAUTH_TOKEN, и теоретически можно было бы после draft сделать вторую кнопку «запостить в канал». Я этого не делаю: во-первых, анонс должен отличаться от заголовка (иначе зачем канал, если есть RSS); во-вторых, цена ошибки в Telegram выше — там нет «отменить публикацию через час». - Темы про Pillar B с реальным тестом денег. В плане рубрики есть пункт «Denis вкладывает деньги в идею подписчика и пишет дневник теста». Агент это пропускает — потому что это требует реальной идеи от реального подписчика и реально потраченных денег, иначе получится фейк. Я делаю это руками, когда есть конкретный запрос.
- Список тем на следующую неделю. Агент не выбирает, о чём писать — он ротирует A→B→C→D→E. Какие именно подтемы внутри рубрики — решаю я, иначе через месяц блог превратится в «ещё один день, ещё один план EUR/USD».
Частые вопросы (FAQ)
Сколько стоит один черновик?
Примерно $0.09 за обложку (Nano Banana Pro 1K) + копейки за WebSearch через Anthropic API. На 26 запусках за месяц — около $2.5 в сумме за картинки. Claude Code сам по себе у меня на подписке, отдельной метрики на «блог» я не выделяю. Pollinations-фоллбэк бесплатный — реально сработал один раз.
Что будет, если kie.ai упадёт на сутки?
Агент сгенерирует обложку через Pollinations и поставит в конце статьи явную пометку «cover via pollinations fallback». Качество у Pollinations ниже (часто упрощённые композиции, меньше контроля над стилем), но пост не пропадёт. За 28 дней ни одного полного отказа kie.ai — только одна неудачная попытка из восьми в одном запуске.
Почему draft, а не publish сразу?
Потому что у статьи в блоге есть последствия, которых нет у текста в /tmp. Во-первых, Rank Math пересчитывает SEO-оценку при публикации, и я иногда правлю focus_keyword до того, как она туда попадёт. Во-вторых, рубрика D («Мои проекты») про честный build-in-public — там я иногда дописываю абзац после первого прочтения. В-третьих, темы про крипту и KYC требуют второго взгляда на формулировки.
Можно ли отдать агенту выбор времени публикации?
Технически — да, через wp-cron или отдельный cron на стороне сервера. Я этого не делаю, потому что публикация привязана к моему дню: утром я пишу черновик, в течение дня правлю, вечером публикую. Если агент будет публиковать сам — он заберёт у меня ту единственную точку, где я обязан прочитать то, что он написал.
Не устаревает ли тема «автоматизация блога» каждый месяц?
Устаревает инструментарий, не принцип. C5 была про первый конвейер, эта статья — про работу с ним после месяца эксплуатации. Через полгода, думаю, напишу #3 — про то, как начал автоматизировать второй блог (англоязычный дневник трейдера) и какие куски конвейера пришлось переписать. А сами «cron + Claude Code + REST API» — это инфраструктура 2020-х, она не устареет ещё лет пять.
Итог
Build-in-public — это не «я автоматизировал всё, что можно». Это «я автоматизировал то, что не страшно сломать, и оставил руками то, где цена ошибки выше цены рутины». За 28 дней граница между этими двумя зонами прояснилась окончательно: агенту — черновик и обложка, мне — публикация, Telegram и любые темы, где нужна не скорость, а подпись. Дальше план простой — когда появится английский двойник блога, я просто скопирую конвейер и буду крутить его параллельно, не трогая код, потому что он уже проверен 26 успешными запусками и двумя честными багами.
Автор: Denis | Дата: 2026-07-21 | Обновлено: 2026-07-21
Denis — трейдер с 10+ летним опытом на форексе и крипторынках











