← все проекты

Жизнь с ИИ (канал)

Личный канал владельца в MAX (1153) и Телеграме (@MyVisionagency, 170). Скиллы: стиль, статистика, пост, контент-план, новости. Публикация ботами Завода, план и охваты хранятся в Контент Заводе под аккаунтом logonchek@mail.ru.

repo: E:\Проекты для Гитхаба\Жизнь с ИИserver: cfru:/opt/channel (скрипты чтения и публикации), бот MAX и ТГ-бот Завода из /var/www/content-factory-prod/.env, сессия ТГ /opt/aitodo-tg/maindocs: docs/память: zhizn-s-ii-channel-project
В РАБОТЕS1 · С1 · Основа: стиль, канал в Заводе, чтение каналов17/20

Цель: Скиллы знают факты канала и голос автора, Завод знает канал, статистика обоих каналов читается одной командой

↑ Карточка стиля и типов постов: скилл zhizn-s-ii
Голос автора по корпусу 68 постов MAX и 75 постов ТГ, 10 типов постов с правилом картинки, факты канала (ids, боты, где лежат скрипты), запреты.
✓ Карточка стиля принята владельцем 06.09.2026, все 4 критерия закрыты
feature
В скилле есть chat_id MAX, id и @канала ТГ, имена обоих ботов и пути скриптов
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. В ~/.claude/skills/zhizn-s-ii/SKILL.md: chat_id -69626036565269, @MyVisionagency, @id667356686365_bot, @Contetn_zavod_MyVision_pub_bot, /opt/channel
acceptance
Описаны 10 типов постов, у каждого правило картинки (нет / своя / скетч) и модель
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. Таблица из 12 типов, у каждого картинка и модель (gpt-image-2 или нет)
acceptance
Стиль описан по корпусу с 5 цитатами из настоящих постов и списком запретов (без тире, без корпоративного тона)
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. 7 цитат из корпуса 68 постов MAX, раздел «Запреты» из 8 пунктов
acceptance
Пост, написанный по карточке, владелец принял как «мой стиль» без правок структуры
✓ 06.09.2026 владелец о пробном посте «как ИИ проверяет сам себя»: «пробный пост хорош, мне нравится», без правок структуры. Пост поставлен в план на четверг 10.09
acceptance
↑ Канал в Заводе под аккаунтом logonchek@mail.ru
Фабрика «Жизнь с ИИ» с max_chat_id и telegram_channel_id, компания «Жизнь с ИИ» в организации My Vision Agency, фабрика её default. post_examples заполнены настоящими постами.
✓ Компания cf035e48 и фабрика 708344ec заведены скриптом scripts/zavod-setup.py. Ждёт взгляда владельца в кабинете и решения по багу max_chat_id
feature
В кабинете СММ-центра компания «Жизнь с ИИ» выбирается в переключателе
✓ Ждёт взгляда владельца в СММ-центре. Там же теперь лежит недельный план 07.09-13.09 с пунктом на четверг 10.09 (план a0b7b72e, пункт ec05687d)
acceptance
У фабрики заполнены max_chat_id -69626036565269 и telegram_channel_id канала @MyVisionagency
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. REST factories: id 708344ec-9131-470a-9672-5c911c7f2520, max_chat_id -69626036565269, telegram_channel_id -1002653618509
acceptance
Сохранение настроек компании на проде не падает (проверить: column max_chat_id)
⛔ Баг прода: колонки companies.max_chat_id нет ни на стейдже, ни на проде, форма компании шлёт поле всегда. Задача в С5, решение владельца перед миграцией
acceptance
↑ Чтение MAX ботом: /opt/channel/max-read.mjs
GET /messages постранично по chat_id, просмотры из stat.views, вложения с url, комментарии по GET /messages/{mid}/comments. Домен platform-api2.max.ru.
✓ Скрипт /opt/channel/max-read.mjs, копия scripts/max-read.mjs. 3 критерия закрыты экзаменом
feature
Команда печатает все посты канала (не меньше 60) с датой, просмотрами и типами вложений
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. node /opt/channel/max-read.mjs напечатал 69 постов с датой, views= и типами вложений
acceptance
JSON с полными текстами и url картинок сохраняется в файл
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. /tmp/max.json: 69 записей, у 53 images[].url
acceptance
Для каждого поста посчитано число комментариев
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. Поле comments у каждого поста, GET /messages/{mid}/comments отвечает {"messages":[]}
acceptance
↑ Чтение Телеграма сессией владельца: /opt/channel/tg-read.py
Telethon из /opt/intent-radar/venv, сессия /opt/aitodo-tg/main, канал @MyVisionagency. Только чтение.
✓ Скрипт /opt/channel/tg-read.py, копия scripts/tg-read.py. 2 критерия закрыты экзаменом
feature
Команда печатает посты с просмотрами, реакциями по эмодзи, пересылками и числом комментариев
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. tg-read.py: views=, forwards=, replies=, reactions={"👍":4,"🔥":2}
acceptance
При недоступной сессии выводится понятная строка, а не трейс
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. TG_SESSION=/tmp/no-such-session → «сессия Телеграма не найдена: …», без трейса
acceptance
Скилл channel-stats: одна таблица по двум каналам
Сводит max-read и tg-read по дате поста, считает средний охват по типам, топ и антитоп.
✓ Скилл ~/.claude/skills/channel-stats + /opt/channel/stats.py. 3 критерия закрыты экзаменом
feature
Таблица: дата, тип поста, картинка, просмотры MAX, просмотры ТГ, реакции, комментарии
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. stats.py собрал таблицу: 69 постов MAX, 48 найдено в Телеграме, колонки дата/тип/картинка/MAX/ТГ/реакции/комм.
acceptance
Сводка среднего охвата по типам постов
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. Сводка по 11 типам: новость+мнение 18 постов, средний MAX 181; разбор 8, 183; промт 2, 234
acceptance
Топ-5 и антитоп-5 постов с причиной словами
✓ экзамен docs/tests/s1-exams.sh 06.09.2026: PASS. Причины словами дописаны в docs/stats-2026-09-06.md, раздел «Причины (по прочтению постов)» плюс вывод в три строки
acceptance
В РАБОТЕS2 · С2 · Пост: от идеи до публикации в оба канала17/27

Цель: Один пост проходит путь идея, текст, «ок», картинка по типу с гейтом «трачу?», «ок, публикуем», MAX и Телеграм, запись в Заводе

↑ Скилл channel-post: идея, текст, «ок», картинка, «ок, публикуем»
Порядок жёсткий, публикация только по явному «ок, публикуем». Текст пишет Клод по карточке стиля, платный ИИ не используется.
✓ Скилл ~/.claude/skills/channel-post написан, 2 из 3 критериев закрыты экзаменом, третий (отметка пункта плана) закроется живой публикацией 10.09
feature
Скилл не публикует, пока владелец не написал «ок, публикуем»
✓ экзамен docs/tests/s2-exams.sh 07.09.2026: PASS. max-post.mjs и tg-post.py без --confirm «ок, публикуем» выходят кодом 2 и ничего не шлют
acceptance
Текст до 4000 знаков, без тире-эмдашей, в стиле карточки
✓ экзамен docs/tests/s2-exams.sh 07.09.2026: PASS. post-check.py: пост 1137 знаков проходит, эмдаш и 4001 знак отклоняются
acceptance
После публикации пункт плана в Заводе отмечен и записан id поста в MAX и ТГ
✓ 18.09: content_item 70698ca5, пункт 4dbab03e published, MAX mid записан; ТГ не вышел (бот не в канале)
acceptance
↑ Картинка по типу поста через kiegen (gpt-image-2)
Промты по типам: скетч на крафте, Было/Стало, скетч-сцена, карточка фразы. Сухой прогон, гейт «трачу?», показ владельцу, перегенерация.
✓ Картинка к посту 10.09 сделана по шаблону владельца через kiegen (ключ 64c7cc0ab4581990), 3 критерия закрыты доказательствами
feature
Перед оплатой печатается «будет оплачено НОВЫХ: N» и ждётся «да»
✓ 07.09 сухой прогон kiegen: «будет оплачено НОВЫХ: 1 из 1», владелец ответил «ок трать», только потом запуск
acceptance
Картинка показана владельцу до публикации
✓ 07.09 картинка отправлена владельцу файлом content/2026-09-10-proverka-bylo-stalo.jpg до публикации
acceptance
Повтор того же промта не оплачивается второй раз
✓ 07.09 повторный прогон того же jobs.json: «будет оплачено НОВЫХ: 0 из 1, новых оплат не будет, забираю готовое»; журнал: оплачено 1
acceptance
↑ Публикация в MAX ботом: /opt/channel/max-post.mjs
Загрузка картинки в три шага, format html, notify true, лимит 2 сообщения в секунду.
✓ три живых поста 11.09, 16.09, 18.09; добавлен --html-file для обзоров со ссылками
feature
Пост с картинкой и жирным текстом появляется в канале MAX
✓ 18.09: пост «Семь ИИ получили по $300» в MAX https://max.ru/id667356686365_biz/AaCzqE6mWuA, картинка и жирная первая строка
acceptance
Ошибка MAX печатается словами, а не JSON
✓ max-post.mjs: die() печатает «MAX не принял пост (код): причина», JSON наружу не уходит
acceptance
Публикация в Телеграм ботом Завода @Contetn_zavod_MyVision_pub_bot
Бот должен быть админом канала. Через прокси 72.56.85.41:8888. Подпись до 1024 знаков при картинке, иначе картинка отдельно и текст следом.
⛔ Бот @Contetn_zavod_MyVision_pub_bot не добавлен в канал @MyVisionagency: getChat отвечает «chat not found». Скрипт tg-post.py готов
feature
Пост с картинкой появляется в @MyVisionagency
✓ 20.09 пост с картинкой вышел в @MyVisionagency: фото /168, текст /169
acceptance
Длинный текст не обрезается: картинка первым сообщением, текст вторым
✓ tg-post.py: текст длиннее 1024 уходит вторым сообщением после фото (сухой прогон: «фото, потом текст»)
acceptance
Запись поста в Завод: content_item с текстом, картинкой и published ids
✓ /opt/channel/zavod-post.py: картинка в хранилище product-images/zhizn-s-ii, content_item со статусом по check-ограничению, связь с пунктом плана. Схема проверена пробной записью (создана и удалена)
feature
В кабинете Завода пост виден в публикациях с датой и ссылками
acceptance
↑ Первый живой пост через скилл
✓ Первый живой пост 20.09: MAX + ТГ + ВК, Завод content_item 14ad9d30
feature
Один пост опубликован в оба канала через скилл, владелец подтвердил «ок»
✓ 20.09 пост «Импланты из Киберпанка» вышел через скилл в MAX (AaC-65OAI8Y), ТГ (/169) и ВК (wall-232702789_69), владелец сказал «да ок, публикуй»
acceptance
↑ Карусели для Инстаграма и ВК: 10 штук в разных стилях
Страница согласования https://myvisionagency.ru/lab/karuseli-ii/ . Исходники: репо канала content/carousels/2026-09-19 (build.py спека+стили+промпты, render_page.py, publish.sh, out/ оригиналы). Генерация gpt-image-2 1K 3:4 через kiegen, метка carousels-2026-09-19. Владелец публикует сам.
✓ 59 из 60 слайдов готовы и выложены на /lab/karuseli-ii (19.09). Слайд 8-2 четырежды упал по политике контента OpenAI, ждёт решения владельца: переделать карусель 8 в пять слайдов или убрать новостной слайд.
feature
↑ Threads: 30 постов на неделю + карусели в Threads
Фабрика «Жизнь с ИИ · Threads» 889bf153 (клон фабрики канала, только сеть threads, auto_publish, custom_times 09:30/12:30/15:30/18:30/21:30 Екб), план «Threads 2026-09-20 .. 2026-09-25» posts_per_day 5, 30 content_items type threads_post status ready (media_url служебная, планировщик не берёт работы без картинки). Посев: scripts/zavod-threads-queue.py threads.json; тексты content/threads/2026-09-20/build_threads.py. Карусели: сеть threads добавлена в smm_network_posts с короткой подписью (≤480). Страница: https://myvisionagency.ru/lab/karuseli-ii/
feature
↑ Ролики: конвейер reel.py, озвучка ElevenLabs, очередь по 2 в день на 6 сетей
Код: репо tools/reel/ (reel.py, pronounce.json, elevensay.py, plans5.py). Просмотр: https://myvisionagency.ru/lab/reel-test/. Очередь: cfru:/opt/channel/zavod-reel-queue.py reel-captions.json reel-schedule.json (фабрика 708344ec, smm_network_posts). Платная озвучка только через cfru:/opt/gen/elevensay.py (журнал, --dry).
feature
Пять роликов 45-50 с собраны конвейером и приняты владельцем
✓ 19.09: «ролики в целом прикольные, последний прямо очень понравился»; страница /lab/reel-test/
acceptance
Озвучка: «ИИ» звучит двумя слогами (≥0,3 с), латиница читается кириллицей, ударения по словарю; прослушка GigaAM ≥89 % совпадения
✓ 19.09: ElevenLabs Nikolay, check.json по 5 роликам 89-98 %, ИИ 0,35-0,42 с; владелец: «такая озвучка гораздо лучше»
acceptance
Ролик из очереди Завода выходит в назначенный слот в ТГ, MAX, ВК-клипы, Инстаграм, Ютуб-шортс и Threads
acceptance
Автоподбор кадров без ручного перевыбора: критик кадров отбраковывает водяные знаки, чужие сабы и пустые планы
acceptance
↑ Ролики v2, партия 3: 10 новостных рилсов по эталону монтажа (Remotion News, Eleven v4, апскейл)
Страница: https://myvisionagency.ru/lab/news-reels/ . Код: tools/reel/news.py, plans_news.py, news_page.py; движок E:/mz/remotion (News.tsx, src/news/).
✓ В очереди Завода 01–06.10 по 2 в день по слову владельца, последний слот 06.10 12:00. Факт выхода по сетям (smm_network_posts) 06.10 не проверен: чтение базы Завода не пропустила автоматика сессии.
feature
↑ Ролики v2, партия 4: 10 новостных рилсов (01–06.10), красная кофта, очередь с 07.10
Стандарт скилла news-reels. 7 громких (OpenAI-агент и отключение, Claude банит за VPN, Claude и полиция, «суперинтеллект» Трампа, Griffin видеотест Тьюринга, ИИ-мусор: баг-баунти Google и arXiv, бесплатный Gemini урезан) + 3 находки («Мёртвые души» Сбера, реконструкция увиденного по снимкам мозга, Astra и StarCraft). Планы tools/reel/plans_news4.py, id m01–m10. Партия 3 в очереди заканчивается 06.10 12:00. Трата: озвучка ElevenLabs ≈ 250 ₽ по «да».
✓ 06.10 по «ок» владельца в очереди Завода: 10 content_item, 40 слотов (vk, instagram, youtube, threads) 07–11.10 в 12:00 и 17:00 Екб. Файлы cfru:/opt/channel/reels/2026-10-06/ (m04, m08, m10 пережаты crf 21 до <50 МБ). Факт выхода — проверка по сроку 08.10.
feature
планS3 · С3 · План: неделя и месяц в Заводе0/11

Цель: Недельный план с ритмом 4-5 постов лежит в Заводе и правится в чате; месяц это четыре недели; план учитывает статистику

↑ Скилл content-plan: неделя
Ритм: две новости с мнением, экспертный или лайфхак, личный или про проект, дайджест в воскресенье, опрос раз в неделю. Утро для новостей, вечер для разборов.
feature
План недели: 4-5 постов с датой, временем, типом, хуком, картинкой
acceptance
Темы не повторяют последние 40 постов канала
acceptance
План правится в чате и сохраняется только по «ок»
acceptance
↑ План в Заводе: smm_week_plans и smm_week_plan_items под компанией «Жизнь с ИИ»
✓ 07.09: scripts/plan-write.py кладёт пункт в smm_week_plans/items под компанией cf035e48, идемпотентно. Первый пункт: четверг 10.09 12:30, пост «ИИ, который проверяет сам себя». Экзамен docs/tests/s3-exams.sh. Ждёт взгляда владельца в кабинете
feature
План виден в кабинете Завода в разделе контент-плана
✓ REST: план a0b7b72e и пункт ec05687d есть, экзамен s3 3/3. Глазами в кабинете подтверждает владелец
acceptance
Пункт плана связывается с постом после публикации
acceptance
Месяц это четыре недельных плана
feature
Команда «план на месяц» создаёт четыре недели подряд без дублей тем
acceptance
План учитывает статистику: что зашло, что нет
feature
В плане у каждого типа указан средний охват по каналу и почему тип выбран
acceptance
В РАБОТЕS4 · С4 · Новости: полуавтомат16/27

Цель: Сборщик лент и ТГ-датчиков даёт пять кандидатов в день, из кандидата пост делается скиллом channel-post, публикация только по «ок»

↑ Сборщик новостей на cfru: /opt/channel/news-collect.py
Ленты: OpenAI, DeepMind, TechCrunch AI, The Decoder, Хабр ИИ; датчики @ai_newz и @data_secrets через сессию. Крон утром.
✓ cfru:/opt/channel/news/collect.py: 13 RSS + 5 ТГ (t.me/s через прокси) + 3 Reddit + GitHub, SQLite, кластеры по Jaccard; крон каждый час
feature
За сутки собрано не меньше 20 новостей из 5 лент
✓ экзамен s4: за 24 ч 370+ записей из 16 источников трёх типов
acceptance
Один сюжет из нескольких лент склеен в один кандидат
✓ экзамен s4: кластеры willison+hn, denissexy+neuralshit; повторный сбор 0 новых
acceptance
Кодом отсечены спонсорское, SDK/бенчмарки, старше 36 ч, темы 40 последних постов
✓ экзамен s4 PASS: candidates --json показывает dropped по всем четырём причинам
acceptance
↑ Пять кандидатов в день: команда «покажи новости»
✓ 18.09.2026 владелец решил: автопостинг с вето-окном, а не кандидаты в чат
feature
Список из 5 кандидатов с заголовком, первоисточником и заготовкой «что это значит для меня»
acceptance
Кандидат одной командой уходит в channel-post типом «новость + мнение»
acceptance
Утреннее сообщение владельцу с кандидатами (полуавтомат)
✓ 18.09.2026 владелец решил: автопостинг с вето-окном, а не кандидаты в чат
feature
Сообщение приходит в 8:30 по будням, молчит при пустом списке
acceptance
Отбор кодом + DeepSeek: 2-3 новости и 1 забавное в день, только номера из базы
✓ rank.py: deepseek-v4-flash, ~0,09 ₽ за прогон, номера вне списка отбрасываются кодом
feature
rank печатает 2-3 news + 1 humor с оценками по 4 шкалам и причиной, id только из списка
✓ работает руками (rank --json), экзамен перегнать с cfru 19.09
acceptance
Забавное отдельной категорией, источники humor
✓ источники NeuralShit, r/ChatGPT, r/aifails с пометкой humor; правило «только про ИИ» в промте отбора
acceptance
Тексты в голосе владельца: Claude Sonnet через OpenRouter по карточке стиля
✓ write.py: карточка стиля + 5 образцов + полный текст источника, ~2,5 ₽ за пост; ждёт три принятых владельцем поста
feature
Текст проходит post-check, есть ссылка на источник и вопрос в конце
✓ проверки кодом: post-check.py + слоп-слова + ссылка + вопрос, одна попытка правки
acceptance
Три поста подряд владелец принял как «мой стиль»
acceptance
Пост про GitHub: репозиторий, звёзды, ссылка, «зачем предпринимателю»
✓ экзамен s4 PASS: write --slot github
acceptance
Обзор недели: 5-7 строк со ссылками, кликабельны в MAX и ТГ
✓ экзамен s4 PASS: 6 ссылок, html с <a href>, --html-file в max-post и tg-post
acceptance
Расписание и вето-окно: очередь 6:00, список 7:30, превью за 60 мин с кнопками «стоп»/«заменить»
✓ queue_ops.py + крон (UTC) + pm2 news-control; ждёт токен управляющего бота (DECISIONS-QUEUE 6)
feature
Очередь дня в queue/<день>.json, в 7:30 владельцу список дня
✓ экзамен s4 PASS; пока список уходит в news.log, до токена бота
acceptance
«стоп» отменяет публикацию, молчание = публикация в слот
✓ экзамен s4 PASS: veto → publish отказывает; unveto → would_publish
acceptance
Слоты: будни 8:30/13:00/19:30, вт 13:00 GitHub, пт 18:00 обзор, вых 12:00 забавное
✓ экзамен s4 PASS: schedule --json
acceptance
Пустой день: слот пропущен, владельцу «сегодня пусто»
✓ экзамен s4 PASS: queue --day 2000-01-01 --dry
acceptance
Публикация в три площадки: MAX, Телеграм, ВК (vk-post.py) + запись в Завод
✓ publish.py готов, сухой прогон зелёный; первый живой выход 18.09 19:30 Екб
feature
Пост выходит в MAX, ТГ и ВК одним текстом, записан в Завод, повтор не дублирует
acceptance
Площадка без токена пропускается с записью в журнал
✓ экзамен s4 PASS: без VK_ACCESS_TOKEN «skipped: нет токена»
acceptance
Деньги: журнал трат по прогонам, лимит 30 ₽ в день
✓ spend.jsonl, команда spend; лимит проверен: NEWS_DAILY_LIMIT_RUB=0.001 → код 4 «лимит»
feature
spend показывает вызовы с моделью и рублями; при превышении лимита конвейер останавливается и пишет владельцу
✓ проверено руками 18.09; экзамен ставит переменную перед cd, поэтому красный (правка экзамена = решение владельца)
acceptance
планS5 · С5 · Завод: охваты и перенос в ядро0/7

Цель: Охваты MAX и Телеграма попадают в аналитику Завода, MAX-публикация переносится в cz-core с html-форматом

↑ Охваты MAX и Телеграма в content_performance Завода по крону
feature
У опубликованных через Завод постов в аналитике видны просмотры MAX и ТГ
acceptance
Крон обновляет цифры раз в час, повторный запуск не дублирует строки
acceptance
↑ Баг прода: у companies нет колонки max_chat_id, форма настроек компании падает при сохранении
Код шлёт max_chat_id всегда, колонки нет ни на стейдже, ни на проде. Нужна миграция или убрать поле из формы. Решение владельца перед правкой прода.
feature
Сохранение настроек компании на проде проходит без ошибки
acceptance
Перенос MAX-публикации в cz-core: platform-api2, format html, комментарии
feature
Заглушка «Прямой канал MAX ещё не перенесён в ядро» заменена рабочим каналом
acceptance
В РАБОТЕS6 · Проверки по сроку11/20

Цель: Отложенные проверки «сработало ли»

Через две недели: вырос ли охват на пост после ритма 4-5 в неделю
Проверка: скилл channel-stats, сравнить средний охват постов за 2 недели с 76-110 в августе. Команда: ssh cfru "node /opt/channel/max-read.mjs --since 2026-09-08"
✓ max-read.mjs --since 2026-09-08 (02.10): средний охват поста в MAX упал. 08–18.09 (до ритма, 7 постов): 68–90, среднее 80. 20–26.09 (ритм 2–3 в день + карусели, 20 постов): 44–63, среднее 54. 27.09–02.10 (14 постов): 24–45, среднее 38. Август был 76–110. Постов стало в 4 раза больше (46 за 25 дней), просмотров на пост вдвое меньше; суммарных просмотров в неделю втрое больше (≈1 090 против ≈350). ТГ (170 подписчиков): 8–19 просмотров на пост, реакции 1–4. Вывод: ритм 4–5 в неделю охват на пост не поднял, а размазал; тренд вниз устойчивый, свежие посты ещё добирают, но ниже 45 не поднимаются.
check
↑ Четверг 10.09, 12:30 Екб: опубликовать пост «ИИ проверяет сам себя» по «ок, публикуем»
⏱ 10.09 · просрочено 50 дн.
Владелец пишет «ок, публикуем» в чат Клода. Дальше по скиллу channel-post, шаги 6 и 7. Файлы: текст из content/2026-09-10-ii-proveryaet-sam-sebya.json (поле text) в /tmp/2026-09-10-post.txt, картинка content/2026-09-10-proverka-bylo-stalo.jpg (внутри PNG) в /tmp/2026-09-10-post.png, JSON в /tmp/plan-item.json. Сначала сухой прогон: cd /opt/channel и node max-post.mjs --text-file /tmp/2026-09-10-post.txt --image /tmp/2026-09-10-post.png --confirm «ок, публикуем» --dry (в кавычках обычных; должно быть «гейт: пройден», «метка: нет»). Потом без --dry с --out /tmp/max-post.json; tg-post.py так же, если бот в канале; затем zavod-post.py /tmp/plan-item.json --image … --max-mid … --max-url … и при наличии --tg-id … --tg-url …. После: PYTHONUTF8=1 bash docs/tests/s2-exams.sh, цель 11/11. Метки прошлых попыток: /opt/channel/sent/.
check
Новостной завод: вышел ли первый автопост 18.09 19:30 и собралась ли очередь субботы
ssh cfru "cd /opt/channel/news && python3 newsctl.py queue --day 2026-09-18 2>/dev/null; tail -20 news-cron.log; tail -5 news.log; python3 newsctl.py spend; cat queue/2026-09-19.json | head -c 600" Ожидание: слот 3 (19:30) status=published с max.mid; очередь 19.09 с одним слотом 12:00 humor. Потом прогнать экзамены с cfru: scp docs/tests/s4-exams.sh cfru:/tmp/ && ssh cfru "PYTHONUTF8=1 bash /tmp/s4-exams.sh 2026-09-19"
✓ Первые автопосты вышли 19.09 (3 из 3) и 22.09 (2 из банка). Но 20, 21, 23, 24, 25.09 очередь дня не собиралась: отбор DeepSeek V4 Flash съедал max_tokens=1200 на размышления, пустой ответ валил всю сборку вместе с банком. Починено 25.09, дальше смотрит новая проверка на 28.09.
check
↑ Карусели: вышла ли первая в MAX, ТГ, ВК и Инстаграм 20.09 09:00 Екб
Очередь каруселей в Заводе (smm_network_posts, фабрика 708344ec). Проверка: ssh cfru "docker exec supabase-db psql -U postgres -d postgres -Atc \"select to_char(np.scheduled_at at time zone 'Asia/Yekaterinburg','DD.MM HH24:MI'), np.network, np.status, left(coalesce(np.error,''),120), left(ci.idea,30) from smm_network_posts np join content_items ci on ci.id=np.content_item_id where np.factory_id='708344ec-9131-470a-9672-5c911c7f2520' order by np.scheduled_at, np.network\"" Ожидание: 4 строки published у «Рой агентов». Если failed: смотреть error и pm2 logs content-factory-prod --lines 200 | grep -i "smm\|upload-post\|telegram\|max". Дальше по 2 карусели в день до 24.09, страница https://myvisionagency.ru/lab/karuseli-ii/
✓ Не вышла в 4 из 4. 20.09 09:00 Екб «Рой агентов сжёг $20 000» (smm_network_posts фабрики 708344ec, 02.10): max published (mid.ffffc0acecd2caeb01a0bcf8d2a545cb), telegram published (160), vk failed «ВКонтакте не принял слайды 2, 3 из 6. Пост не отправлен», instagram failed «session has expired», threads failed «token expired». Итог 2 из 5 сетей. Вся серия 20–24.09 (9 каруселей): MAX 9/9, ТГ 9/9, ВК 0/9 (каждый раз не принял 1–3 слайда), Инстаграм 0/9, Threads 0/9. Ручные выкладки владельца в ВК в базе не видны. Охват каруселей в MAX 52–63, в ТГ 14–19 просмотров.
⛔ Ночная смена 01-02.10.2026. Карусель «Рой агентов сжёг $20 000» 20.09 09:00: MAX и Телеграм published; Инстаграм — session expired; Threads — token expired; ВК — «не принял слайды 2, 3 из 6». Дальше 20–22.09 та же картина: ВК не принимает часть слайдов или cancelled «владелец грузит руками». Нужно: переподключить Инстаграм/Threads в Upload-Post и разобраться, почему ВК режет слайды (размер/формат).
check
↑ Threads: вышел ли первый пост 20.09 09:30 Екб и карусель в Threads в 09:00
Посты: ssh cfru "docker exec supabase-db psql -U postgres -d postgres -Atc \"select scheduled_date, position_in_day, status, published_at, left(coalesce(error_message,''),100) from content_items where factory_id='889bf153-48b3-4cf2-8ec9-cf20e0669a50' order by scheduled_date, position_in_day\"". Ожидание 20.09 после 09:40 Екб: первый пост published, в логах pm2 logs content-factory-prod строка Published item ... type: threads_post. Если планировщик пишет No publishable items (missing media): проверить media_url у threads_post. Если Not publish time: проверить timezone/publish_times фабрики. Карусель в Threads: smm_network_posts network=threads у фабрики 708344ec, статус published. Профиль Threads: @alex.logon.
✓ Не вышел ни один пост. content_items фабрики 889bf153 (02.10): все 30 постов 20–25.09 в статусе ready, published_at пусто, error_message пусто. В логах pm2 (сохранились только с 25.09) планировщик 25.09 15 раз брал пост 5b64e5d8 (20.09 #2) и падал: «Per-item targeting: itemTargets ['threads'], resolved: []» → «Failed to publish item: Не выбраны целевые соцсети. Настройте в параметрах фабрики». Причина: Threads у профиля Upload-Post MyVIsion не подключён (api/uploadposts/users 02.10: threads "", instagram ""), сеть не резолвится. С 26.09 «No active content plan found» (план кончился 25.09). Карусель в Threads 20.09 09:00 тоже failed: «Threads token expired and refresh failed». Сначала переподключение Threads владельцем в app.upload-post.com, потом новый план.
⛔ Ночная смена 01-02.10.2026. Threads: ни один пост фабрики 889bf153 не вышел — все в статусе ready (24–25.09 по пять штук), публикация не идёт; карусели в Threads — failed «token expired and refresh failed» с 19.09. Единственное исключение 22.09 12:00 published. Нужно переподключить Threads в Upload-Post.
check
Ролики: вышел ли первый в 6 сетей 19.09 12:00 Екб (r5 «Как перестать платить ИИ»)
ssh cfru: K=$(grep -h ^SUPABASE_SERVICE_ROLE_KEY= /var/www/content-factory-prod/.env|cut -d= -f2); U=$(grep -h ^NEXT_PUBLIC_SUPABASE_URL= /var/www/content-factory-prod/.env|cut -d= -f2); curl -s -H "apikey: $K" -H "Authorization: Bearer $K" "$U/rest/v1/smm_network_posts?factory_id=eq.708344ec-9131-470a-9672-5c911c7f2520&scheduled_at=gte.2026-09-19&select=network,status,error,published_at,content_item_id&order=scheduled_at" Ошибки: smm_network_posts.error, pm2 logs content-factory-prod | grep -i upload-post. Дальше слоты 19.09 17:00, 20.09 12:00/17:00, 21.09 12:00 Екб.
✓ Ночная смена 01-02.10.2026. Ролик r5 «Как перестать платить ИИ» 19.09 12:00: MAX, Телеграм, ВК, Ютуб — published; Инстаграм и Threads — failed («сессия Upload-Post истекла»). Второй слот 19.09 17:00 — то же. Вышел в 4 сети из 6, две требуют переподключения Upload-Post руками владельца.
⛔ 19.09 12:00 и 17:00: ТГ, MAX, ВК, Ютуб вышли; Инстаграм и Threads упали у Upload-Post (session expired, account_reauth_required), переподключает владелец на app.upload-post.com/manage-users. ВК с 20.09 отключён по слову владельца (грузит руками). Завод показал published, хотя не вышло: баг, DECISIONS-QUEUE 10.
check
Новостной завод после починки 25.09: выходят ли посты каждый день 26-28.09
Ждём: queue/2026-09-26.json, 27, 28 есть, в каждом слоты published, в spend.jsonl step=rank с out меньше 3000. Проверка: ssh cfru 'cd /opt/channel/news && ls queue/ && for d in 26 27 28; do python3 -c "import json;q=json.load(open(\"queue/2026-09-$d.json\"));print(q[\"day\"],[(s[\"time\"],s[\"kind\"],s[\"status\"]) for s in q[\"slots\"]])"; done; grep rank spend.jsonl | tail -4; grep -c Traceback news-cron.log'. Рецидив: out у rank ровно равен лимиту. Банк: ls bank | wc -l, при 4 и меньше писать новую партию.
✓ Ночная смена 01-02.10.2026. Новостной завод после починки 25.09: очередь есть за каждый день 26.09–01.10. 26.09 три слота published; 27.09 — 10:00 skipped, остальные published; 28.09 — 13:00 vetoed, остальные published; 29.09 и 30.09 — все три published; 01.10 — 08:30 published, 13:00 и 19:30 skipped. rank out = 230 / 223 / 232 при лимите 3000, рецидива нет. Банк 14 тем.
check
Ролики партии 3: вышли ли 02.10 во все 4 сети (Инстаграм/Threads после переподключения Upload-Post), Ютуб n01
ssh cfru: smm_network_posts фабрики 708344ec за 2026-10-02 (status, error); факт у посредника: curl 'https://api.upload-post.com/api/uploadposts/status?request_id=<external_post_id>' -H 'Authorization: Apikey $UPLOAD_POST_API_KEY' (ключ в /var/www/content-factory-prod/.env). 01.10 n01: ВК вышел, Ютуб processing (b8c6c7dd...), Инстаграм session expired, Threads token expired — помечены failed. После переподключения вернуть их в pending.
✓ 02.10 вышли в 2 из 4 сетей. smm_network_posts 708344ec: 12:00 «Gemini 4 Argon» и 17:00 «Роботов Figure»: vk published (-232702789_456239137, _456239138), youtube published, instagram и threads failed: «None of the requested platforms are valid for profile MyVIsion. Profile has no Instagram/Threads account configured». Ютуб подтверждён у посредника (status completed): n01 b8c6c7dd → https://www.youtube.com/watch?v=9BpqaM38yKk (01.10 16:17 UTC), 987f1a0c → https://www.youtube.com/watch?v=42tjiiZpoBg, daeff6ff → https://www.youtube.com/watch?v=JD7RjCTYSj4. Переподключение Upload-Post не сделано: в профиле MyVIsion instagram "" и threads "" (02.10, api/uploadposts/users), возвращать их в pending рано, не трогал. Очередь 03–06.10 по 2 ролика стоит pending на все 4 сети: Инстаграм/Threads там тоже упадут, пока владелец не подключит.
⛔ Ночная смена 01-02.10.2026. Партия 3, 01.10 21:15 Екб: ВК и Ютуб published; Инстаграм «session expired (01.10)», Threads «token expired (01.10)» — failed. 02.10 12:00 и дальше по 05.10 стоят pending на все 4 сети: без переподключения Инстаграм и Threads снова упадут.
check
Банк w41 выходит, охват на пост в MAX после недели
ssh cfru "cd /opt/channel/news && for d in 2026-10-03 2026-10-04 2026-10-05 2026-10-06 2026-10-07 2026-10-08 2026-10-09; do python3 newsctl.py show --day $d; done; python3 newsctl.py bank" — слотов bank published должно быть 14, пропусков «банк пуст» 0. Охват на пост в MAX по max-read.mjs: цель вернуться к 50+, сравнить с 38 (27.09–02.10). Если владелец не переподключил Upload-Post — напомнить.
✓ Проверено 13.10. Банк w41 вышел: show --day 03–09.10, все слоты банка published, кроме одного снятого владельцем 03.10. Охват на пост в MAX по неделям (stats.py с 20.09): нед. 39 = 62 (17 постов), нед. 40 = 53 (16), нед. 41 = 43 (21); ТГ 15 → 14 → 11. Охват на пост падает, суммарный за неделю держится около 850–1050: больше постов делят ту же аудиторию. Оговорка: в MAX просмотры копятся неделями, у недели 41 цифра ещё подрастёт. Вывод для плана: 3 поста в день охват не добавляют, вопрос частоты вынесен владельцу.
check
↑ 07.10: справка Google про Deep Think перед выходом m07 (08.10 12:00 Екб)
Ролик m07-gemini-free говорит: 06.10 Google тихо убрал Deep Think из AI Pro, теперь только Ultra. КОМАНДА ПРОВЕРКИ: curl -sL -A 'Mozilla/5.0' 'https://support.google.com/gemini/answer/17004136?hl=en' | grep -o 'AI Pro or AI Ultra subscription\|AI Ultra subscription you' — должно быть только 'AI Ultra subscription you'. Если вернули 'AI Pro or AI Ultra' — до 08.10 07:00 UTC снять слот m07 (content_item 499a034d-6fc3-433d-a2c4-4b8acefb0eb5) и сказать владельцу.
✓ 07.10: справка 17004136 — Deep Think только у AI Ultra, фразы «AI Pro or AI Ultra» нет. Текст m07 сверен со справкой (Flash-Lite без подписки с 09.10, Deep Think в Ultra) — слот оставлен.
check
↑ 08.10: партия 4 роликов — вышли ли первые два (07.10) по сетям
07.10 12:00 m02-claude-vpn (content_item e2358f90-4c12-486a-b498-fa6c510d91ef), 17:00 m10-starcraft (40efe3a3-958d-45ed-8078-409c8e47e03d). Слоты vk, instagram, youtube, threads в smm_network_posts. Завод ставит published по приёму задания посредником: факт проверять /api/uploadposts/status?request_id и глазами в ВК (vk.com/myvision_ai) и на Ютубе. Instagram и Threads 01.10 падали reauth_required — если снова failed, владельцу переподключить профиль MyVIsion в Upload-Post.
✓ 07.10 13:10 UTC: m02-claude-vpn (12:00 Екб) и m10-starcraft (17:00 Екб) вышли в ВК (video-232702789_456239146 и _456239147, страницы отдают og:video) и на Ютубе (Upload-Post status completed/success: k53_CZovm_o 07:00:59Z, wlpx1NbppAQ 12:02:53Z). Instagram и Threads у обоих failed: «Profile MyVIsion has no Instagram/Threads account configured», как 02.10 — ждёт переподключения профиля владельцем в app.upload-post.com. Партия идёт дальше (m07/m04 08.10, m01/m08 09.10, m03/m05 10.10, m06/m09 11.10), Инста/Threads у них упадут так же, пока профиль не подключён.
check
Планета TIC 4206066: подтвердил ли TESS (сектор 110, 31.10–26.11) — ролик-продолжение k14
⏱ 27.11 · через 28 дн.
Обещано в ролике k14 «расскажу, когда будут данные». Проверка: поиск «TIC 4206066» (Zenodo, gist MrBoostie, X @p_rabtsevich, habr). Подтвердилось/нет → сценарий ролика-продолжения.
check
С6: первые 3 автоновости после выката нового писателя — разные ходы, без шаблона
⏱ 17.10 · просрочено 13 дн.
ssh cfru 'cd /opt/channel/news && for d in $(seq 14 17); do python3 newsctl.py show --day 2026-10-$d; done' и python3 -c чтение queue/2026-10-1*.json полей move/ending + variety.py check по текстам. Показать владельцу 3 поста, спросить «как ты».
check
Партия 5 роликов: вышли ли в ВК, Ютуб и Инстаграм (первый 13.10 15:30, последний 19.10 17:00)
⏱ 20.10 · просрочено 10 дн.
ssh cfru 'python3 /opt/channel/first_reel_check.py' (первый слот) и общий статус: smm_network_posts factory 708344ec, scheduled_at 13–19.10, status published/failed + /api/uploadposts/status?request_id для instagram/youtube. Инстаграм подключён 13.10 (logonchek_alex) — первый выход в Инсту за месяц.
check
С7: первая сборка дня с рубриками (24.10)
⏱ 24.10 · просрочено 6 дн.
Выкат С7 23.10 11:00 Екб. Проверка: ssh cfru "cd /opt/channel/news && venv/bin/python newsctl.py show --day 2026-10-24" — у слотов рубрики (Вышло/ИИ в жизни/…), пометки (замена …), нет пустых planned; notify в 7:30 с рубриками дошёл до Лии; tail news-cron.log без Traceback. Пусто или ошибка: откат tar xzf /opt/backups/channel-news-src-20261023-1100-c7.tgz -C /opt/channel/news
check
С7: неделя микса — доли, пустые слоты, деньги, новые ленты
⏱ 30.10 · сегодня
1) Доли рубрик и пустые слоты: cd /opt/channel/news && for d in 2026-10-2{4..9} 2026-10-30; do venv/bin/python newsctl.py show --day $d; done (цель 40/30/30; сколько skipped «пусто»/rubric_fallback — DECISIONS 14). 2) Деньги будней (критерий 13 ≤10 ₽): venv/bin/python newsctl.py spend --day 2026-10-27 и 28, 29. 3) Ленты (критерий 5): venv/bin/python newsctl.py stats --since 7d | grep -E "nplus1|naked|sciencedaily|mittr|bbc|verge|elevenlabs|neurogen" — 0 у N+1/Naked Science = заменить ленты. 4) Критерий 14: спросить владельца, ок ли микс. Закрыть критерии 5, 13, 14 спринта С7 в Atlas.
check
Реклама канала в ВК: цена подписчика по группам, цель до 100 ₽
⏱ 28.10 · просрочено 2 дн.
Владелец включил А и Б 23.10 вечером (статус active у всех трёх проверен). Было 264 ₽ за подписчика. Кабинет ВК 20363762. Старая 35912222: без авто-интересов, 150 ₽/день (контроль). А 37004414: только MAX, средняя цена подписки 90 ₽, 400 ₽/день. Б 37004669: ленты ВК/ОК, группы 162313386 фразы, 162313387 ИИ-сообщества, 162313388 интересы, по 150 ₽. Проверка: ssh aitodo, затем /root/.secrets/vk-pc.sh GET "v2/statistics/ad_groups/day.json?id=160852721,162312756,162313386,162313387,162313388&date_from=2026-10-23&date_to=2026-10-28&metrics=base". Цена = spent / base.vk.result. Решение: группы дороже 150 ₽ выключить, бюджет перенести в те, где до 100 ₽. Скрипт aitodo:/root/work/vk-max/build.py, карта VK-MACHINE.md раздел про max_channel. Выключение/перенос бюджета = трата, по «да» владельца.
check
Партия 6 роликов: замер A/B через неделю после выхода (длина 25–35 vs 45–55, без заставки vs с ней, лицо)
⏱ 08.11 · через 9 дн.
Команда: python -X utf8 "E:/Проекты для Гитхаба/Жизнь с ИИ/tools/reel/reel_stats.py" --since 2026-10-24 — просмотры Ютуба по роликам партии 6, сравнить группы по полю ab в plan.json (news/p*/plan.json). Вывод — в скилл news-reels.
check
Реклама канала в ВК, ранняя: прошли ли А и Б модерацию, есть ли показы, не убегает ли бюджет
⏱ 25.10 · просрочено 5 дн.
Включены 23.10 вечером. 1) Статусы и модерация: ssh aitodo "/root/.secrets/vk-pc.sh GET 'v2/banners.json?fields=id,status,moderation_status,ad_group_id&_ad_group_id__in=162312756,162313386,162313387,162313388'" — отклонённые объявления назвать владельцу с причиной. 2) Показы и траты за 23–25.10: ssh aitodo, затем /root/.secrets/vk-pc.sh GET "v2/statistics/ad_groups/day.json?id=160852721,162312756,162313386,162313387,162313388&date_from=2026-10-23&date_to=2026-10-25&metrics=base". Норма: А ≤400 ₽/день, каждая группа Б ≤150 ₽/день, всего ≤1000 ₽/день. 3) Если у группы потрачено ≥300 ₽ и 0 подписок — сказать владельцу, предложить выключить (выключение по его «да»). Итоговый разбор цены подписчика 28.10 (задача ee609cb2).
check
Партия 6: вышли ли p03 (26.10 17:00) и p01 (20:00) в ВК, Инстаграме и Ютубе
Очередь поставлена 26.10, 45 слотов до 03.11. Проверка: ssh cfru, smm_network_posts по content_item партии (лог /opt/channel/reels/2026-10-23/queue-run.log), статусы Upload-Post через /api/uploadposts/status?request_id, ссылки открыть. Завод ставит published по приёму задания, смотреть post_url. Сошлось: закрыть критерий 6b23c7bb. Не вышло: смотреть причину (reauth Инстаграма, 413, Content ID).
✓ p03 26.10 17:00: youtube.com/watch?v=og_Wm6EDKXo, instagram.com/reel/De9PPWXOq9Z, ВК клип -232702789_456239172. p01 20:00: ВК и Инстаграм вышли, Ютуб упал «Video URL is not allowed» (Upload-Post, второй раз за всё время, первый 25.09); слот один раз возвращён в pending 27.10 10:16 Екб, вышел: youtube.com/watch?v=hRv-Cf5XmdQ (oembed отдаёт заголовок).
check
В РАБОТЕS7 · С6 · Разнообразие постов и роликов13/16

Цель: Посты и ролики не по одной схеме: ход и концовку выбирает код из каталога приёмов владельца; ролики с разной структурой и разными вставками лица (решение владельца 13.10.2026)

Посты: ход и концовку выбирает код (variety.py), вопрос в конце не обязателен
Код scripts/news/variety.py + write.py + queue_ops.py + style.md + style-samples.json (24 образца с ходом). Экзамены docs/tests/s6-variety.sh. На cfru НЕ выкачено: ждёт «да» (DECISIONS 13).
✓ Выкачен на cfru 13.10 ~11:40 Екб по «да» владельца: variety.py + style-samples.json первыми, затем style.md, write.py, queue_ops.py, newsctl.py, config.py; бэкап /opt/backups/channel-news-src-20261013-c6.tgz; md5 cfru = репо; импорт и план на новость проверены на проде. Заодно 2 поста в день (решение владельца). Критерий №8 (владелец читает 3 поста) — проверка по сроку 17.10.
feature
Ход выбирает код: каталог ≥10 ходов из ручных постов владельца, ход не повторяет последние 6
✓ Каталог 15 ходов из 23 ручных постов, у каждого пример его словами; окно 6 постов, считает и банк сегодня+2 дня. s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
В задании модели ход, концовка и запрещённые обороты (видно в сухом прогоне)
✓ Блок «КАК СТРОИТЬ ЭТОТ ПОСТ» (ход, концовка, запреты по вышедшим постам, первые слова последних 10) в сухом прогоне на копии cfru с заглушкой модели. s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
Образцы под ход: ≥15 помеченных, модель получает 2-3 под выбранный ход
✓ 24 образца с ходом; модель получает 3: свой ход (чистый, иначе наименее шаблонный) + чистые других. s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
14 постов подряд: ≥8 ходов, ни один >2 раз, вопрос ≤60%
✓ Симуляция: 14 подряд ≥8 ходов, ≤2 раз; 10 000 выборов: вопрос 43%, два вопроса подряд 0. s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
Проверка бракует 2+ фирменных оборота; «Переверни промт» проходит
✓ check_text: 2+ оборота = брак (сочетание «и вот тут самое интересное» = один), синонимы «Итог:/Мораль:», «как по мнению» не ложится. s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
Вопрос в конце больше не обязателен
✓ _problems без требования вопроса; вместо этого брак, если концовка задана без вопроса, а модель поставила вопрос. s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
Банк w43 и остаток w42: move у всех, ≥8 ходов, вопрос ≤60%, без двойных оборотов, разные начала
✓ w43 v2: 14 ходов из 14, вопрос 36%, двойных оборотов 0, начала разные, порядок по дням не как в w42, зачины своими словами. Залито на cfru 13.10 (v1 в /opt/backups/bank-w43-v1-20261013). s6-variety.sh PASS 8/8 (13.10, 5 прогонов подряд); ОТК 2 круга, находки критика и сверки исправлены. Код в репо, на cfru ждёт «да».
acceptance
Владелец прочитал 3 новых поста подряд: звучит как он, не по шаблону
acceptance
Банк постов w43 (17–23.10) и переписанный остаток w42 (14–16.10) по новым ходам
✓ 13.10: 14 постов w43 + 6 переписанных w42 + 2 сегодняшних слота 13.10 переписаны и залиты на cfru (bank/ прямым копированием, бэкап /opt/backups/channel-news-bank-queue-20261013-before-variety.tgz). variety batch: 14 ходов из 14, вопрос 36%, двойных оборотов 0.
feature
Ролики, партия 5: 14 штук по 2 в день, разные структуры, лицо в 5 из 14 из разных записей
Планы tools/reel/plans_news5.py (k01–k14, поле structure). Лица: hoodie, plaid, blacklight, blackdark, whitetee (faces.json). Озвучка 10 902 симв. ≈ 340 ₽ ждёт «да».
feature
14 роликов собраны, у каждого своя структура из списка (хроника, развязка, две стороны, факт-чек, загадка, …)
✓ 13.10: 14/14 отрендерены (29–62 с), у каждого своя структура (поле structure в plans_news5.py, подписи на странице). Озвучка 10 902 симв. ≈340 ₽ по «да», прослушка GigaAM 94–100%, все «ИИ» ≥0,32 с. Свой круг по раскадровкам: 4 ролика пересобраны (посторонние лица k01/k02, баннеры на снимках k09/k10). Страница https://myvisionagency.ru/lab/news-reels/ (проверена скриншотом моб./десктоп).
acceptance
5 роликов с лицом владельца, у каждого своя запись; 9 без лица
✓ Лицо в 5 из 14: k01 hoodie (IMG_6154), k03 plaid (IMG_4831), k07 blacklight (IMG_5318), k09 blackdark (IMG_5049), k12 whitetee (видео 10, кружок); 9 без лица. Окна без вшитых титров проверены раскадровкой.
acceptance
Кадры проверены раскадровкой до озвучки: без чужих сабов, водяных знаков, фото жертв
✓ 13.10: все yt-кадры k01–k14 пересмотрены раскадровкой (подагенты, листы scratchpad news5/sheets), правки в tools/reel/2026-10-13/footage-A.json и footage-B.json накладываются на plans_news5.py. Убраны студийные ведущие, чужие субтитры, вертикальные шорты, кадр с личными данными подозреваемого (k07), сцена No Russian (k06); у k13 убраны снимки статей с именем несовершеннолетнего.
acceptance
Владелец посмотрел партию на странице и дал «ок» на очередь
✓ 13.10 14:44: владелец «ок ставь в очередь 2 сегодня и дальше по 2 в день» после правки вставок (прежние были не им, а Кириллом Улановым; заменены на его записи, сверено с ref-face.jpg).
acceptance
В очереди Завода 14 роликов по 2 в день, факт выхода ВК и Ютуб подтверждён
✓ 13.10: 14 content_item, 42 слота pending (ВК, Инстаграм, Ютуб; Threads не подключён): 13.10 15:30 и 19:00, 14–19.10 по 12:00 и 17:00 Екб. Факт выхода — проверка по сроку.
acceptance
В РАБОТЕS8 · С7 · Микс: посты для всех, анонсы и для своих11/19

Цель: Разбавить сложные посты: рубрики «ИИ в жизни», «Вышло», «Для своих», «Улыбка» (40/30/30), 3 поста в будни, лёгкий банк. Решение владельца 23.10.2026.

Рубрики и раскладка кодом (mix.py), расписание 19 постов в неделю
feature
1. Рубрика у каждого поста видна в show и в утреннем списке Лии
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 1: рубрика в show и notify --dry. Песочница cfru: «08:30 Для своих: …», «19:30 ИИ в жизни: …»; черновик Лии «„ИИ в жизни“, из банка».
acceptance
2. Две недели сухого прогона: простое 35-50%, анонсы 20-40%, для своих 20-35%
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. simulate 14/28 дней с 3 стартов: простое 44-46%, анонсы 28-31%, для своих 25-26%.
acceptance
3. Каждый день простой пост, два «для своих» подряд нет, выходные без «для своих»
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. sim_check 14-28 дней: 0 нарушений; боевая сборка в песочнице cfru 24.10-01.11 (боевая news.db, модель-заглушка): простой каждый день, pro-pro нет, выходные без pro. Исправлены 7 дыр боевого пути (заменить, extend, прошедшие слоты, assign через пустой слот).
acceptance
4. Расписание: пн-чт 8:30/13:00/19:30, пт 8:30/13:00 + обзор 18:00, сб-вс 10:00/19:00
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. config.SCHEDULE: пн-чт 3, пт 2+обзор, сб-вс 2 = 19.
acceptance
Отбор по рубрикам и новые ленты (для всех и анонсы)
feature
5. 8 новых лент (ScienceDaily, Verge, MIT TR, N+1, Naked Science, BBC, ElevenLabs, neurogen) дают записи на cfru
acceptance
6. Слот получает свою рубрику или замену с пометкой rubric_fallback, чужая рубрика отбрасывается
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 6 + синонимы рубрик (humor/ИИ в жизни/Life/старый slot) переводятся, остальное в notes и Лии; повтора рубрики нет (спека).
acceptance
7. Анонсы проходят кодовый фильтр, SDK и бенчмарки отсекаются
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 7; дополнительно убран шаблон vX.Y released (резал Midjourney V7.1 / Suno v4.5), TG-реклама без маркировки режется.
acceptance
Тексты по рубрикам: простым языком для «ИИ в жизни», что умеет и где попробовать для «Вышло»
feature
8. Задание писателю зависит от рубрики (сухой прогон)
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 8: write.mood_for по рубрике, задание «ИИ в жизни» = максимум один термин с объяснением.
acceptance
9. Жаргон бракуется в «ИИ в жизни» и «Улыбке», в «Для своих» проходит
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 9; ссылки и «агентство/промтовары» не считаются жаргоном (ОТК).
acceptance
Банк: рубрика у каждого поста, лёгкая партия w44, выдача по рубрике
feature
10. Банк отдаёт пост назначенной рубрики, без неё первый готовый
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 10; банк с avoid pro в выходной и после pro; посты без поля = pro.
acceptance
11. Партия w44: простых ≥70%, для своих ≤15%; две недели без двух «для своих» подряд
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. w44: 13 постов, жизнь 7 / улыбка 5 / для своих 1 (92% простых); 14 дней на настоящем банке без pro-pro. Факты сверены агентом (c7-facts.md), 5 неточностей исправлены после критика.
acceptance
12. bank --item без рубрики отказывает
✓ docs/tests/s7-mix.sh 12/12 PASS (23.10, после 2 кругов ОТК), регресс s6 8/8. Экзамен 12: без rubric или с чужой — ОТКАЗ с причиной.
acceptance
Деньги и приёмка владельцем
feature
13. Будни с двумя новостями не дороже 10 ₽ в день (spend.jsonl первой недели)
acceptance
14. Владелец за неделю увидел новости для всех и анонсы, микс ок
acceptance
готовS9 · С8 · Ролики, партия 6: замер и докрутка10/11

Цель: Ролики по замеру Ютуба (46 шт): темы «понятно любому + есть что показать», сильный живой кадр в первые 1,5 с, «ИИ» звучит «эй-ай», A/B длины и финальной заставки. 15 роликов по 2 в день.

Замер роликов на Ютубе: просмотры по всем выходившим (yt-dlp, 0 ₽)
✓ 23.10: 46 роликов, сумма 36,7 тыс., медиана 674, 21 ≥1000 и 11 <100. Лидеры зрелище+интрига, провалы сделки/цены и бан/полиция/взлом, тёмный первый кадр. Длина 45–60 с не влияет. ВК: video.get требует пользовательский токен.
feature
Озвучка: «ИИ» диктор говорит «эй-ай» (решение владельца 23.10)
✓ pronounce.json: 7 записей «и-и»→«эй-ай»; news.py: правило AI_TOKEN ловит ИИ/AI и производные (ИИ-агентов, AI-модель), проверка check смотрит «ии» и «ai». Проверено на фразах. Бэкапы *.bak-1023. Скилл news-reels обновлён.
feature
Партия 6: 15 роликов (Unitree, профессор против роботов, Switch 2, The Challenge, Minecraft, остров, Уолберг, сантехник, растения, вирусы, Just Eat, Kling 4.0, завещание, Spotify, ElevenLabs)
Темы: scratchpad сессии 9583eb02 topics6.md, факты news6/facts-A/B/C.md. Решения владельца 23.10: 15 тем ок, вирусы добавить, для тем без видео брать похожие живые кадры; AI в субтитрах, A/B длины и заставки, лицо в 2 из 15, ресерч Shorts.
feature
В каждом из 15 роликов первые 1,5 с — живой кадр (действие/лицо/природа), не сток, не скрин, не код: лист первых кадров проверен глазами до озвучки
✓ Лист первых кадров firstframes.py до озвучки: исправлены p02 (прохожий), p05 (лицо из интервью → бой с драконом), p13 (кадр резал маму). У всех 15 первый кадр живой: робот, гонка, дракон, кольцо над облаками, Уолберг, лист с сигналом, фаг; у p11 картинка «бекон в коле».
acceptance
В озвучке нет «и-и»: каждое «ИИ/AI» звучит «эй-ай» (шаг check без предупреждений о проглоте), в субтитрах «AI», бренд «Жизнь с ИИ» не тронут
✓ Озвучка 15/15, check: совпадение 83–99%, предупреждений о проглоченном «эй-ай» ни одного; спорные слова проверены по длительности (0,4–0,58 с). В субтитрах «AI», бренд канала не тронут.
acceptance
7–8 роликов 25–35 с, остальные 45–55 с; у половины нет финальной заставки «Подписаться»; распределение записано в плане (поле ab)
✓ Поле ab в каждом плане: 8 коротких (24–33 с) и 7 длинных (39–50 с); 8 без заставки, 7 с ней; сетка: коротк/без 5, коротк/с 3, длин/без 3, длин/с 4. Все ≤ 59 с (стоп в сборщике).
acceptance
Лицо владельца в 2 из 15, из разных записей, каждая сверена с ref-face.jpg
✓ Лицо в 2 из 15: p02 red.mp4 (красная кофта), p08 own-car.mp4 (в машине); обе записи подтверждены по ref-face.jpg 01.10/13.10, в партии 5 не использовались.
acceptance
Каждая цифра в роликах со ссылкой в facts; слух/спорное помечено и в ролике, и в подписи
✓ Факты news6/facts-A/B/C.md (ссылка у каждой цифры). Спорное помечено в ролике и подписи: The Challenge две версии, фаги «заявление компании, без рецензии», завещание «проект, ChatGPT не опекун», Spotify «убрал из рекомендаций», Minecraft «кадры игры, не запись прогона». Источник-чип в каждом ролике.
acceptance
Своя проверка по раскадровке каждого ролика: дыр нет, плашки не налезают, чужих субтитров и водяных знаков нет
✓ Раскадровка всех 15 + повторная по исправленным местам: убраны чужие субтитры (Кейдж), вшитая подпись MIT, плашка канала с цитатой (остров), чёрные куски (Switch, Minecraft, Kling), уход в полицейский сюжет (профессор), обрывки интерфейса (ElevenLabs). Скриншоты: 4 заменены (капча Digital Trends, пустой Spotify, окна куки, заголовок 3DNews «удалил»). Найден и исправлен баг кэша нарезки (yt{N}.json) и 150 мс чёрного в конце роликов без заставки.
acceptance
Страница просмотра /lab/news-reels/ с партией 6, владелец сказал «ок» до очереди
✓ 26.10: страница https://myvisionagency.ru/lab/news-reels/ (партия 23.10 сверху, 15 роликов), владелец в чате: «давай ок ставь в очередь».
acceptance
Очередь Завода 2 в день (12:00 и 17:00 Екб), ВК+Инстаграм+Ютуб, факт выхода проверен по smm_network_posts
✓ Очередь 45 слотов 26.10–02.11; факт выхода первых двух на ВК+Инстаграм+Ютуб подтверждён. p03 26.10 17:00: youtube.com/watch?v=og_Wm6EDKXo, instagram.com/reel/De9PPWXOq9Z, ВК клип -232702789_456239172. p01 20:00: ВК и Инстаграм вышли, Ютуб упал «Video URL is not allowed» (Upload-Post, второй раз за всё время, первый 25.09); слот один раз возвращён в pending 27.10 10:16 Екб, вышел: youtube.com/watch?v=hRv-Cf5XmdQ (oembed отдаёт заголовок).
acceptance

Ворклог (места остановки)

26.10.2026, 11:28:06 · С8 · Ролики, партия 6 · claude

Партия 6 по «ок» владельца поставлена в очередь Завода: 15 роликов, 45 слотов (ВК, Инстаграм, Ютуб), 27.10 12:00 – 03.11 12:00 Екб. Файлы и лог на cfru /opt/channel/reels/2026-10-23/. Критерий «страница + ок» закрыт.

→ 27.10 проверить выход p03 и p01 по smm_network_posts и post_url, закрыть критерий 6b23c7bb. 08.11 замер A/B через reel_stats.py. Ждут владельца: p15 ElevenLabs (дефолт оставить), колонка «Ограничения» в YouTube Studio.

23.10.2026, 16:20:43 · С8 · Ролики, партия 6 · claude

Замер 46 роликов Ютуба (reel_stats.py): лидеры зрелище+интрига, провалы сделки/цены и бан/полиция/взлом, тёмный первый кадр. Озвучка «ИИ»→«эй-ай» (AI_TOKEN в news.py, pronounce.json). Ресерч Shorts: длина ≤59 с (стоп в сборщике), источник на экране, ВК без упоминаний соцсетей. 15 тем по «ок» владельца, факты и клипы тремя агентами (news6/facts-A/B/C.md), 15 планов plans_news6.py с полем ab (8 коротких/7 длинных, 8 без заставки, лицо в 2: red, own-car), лист первых кадров firstframes.py (исправлены p02, p05, p13). Подписи и расписание 24–31.10: 2026-10-23/make_queue.py. Озвучка по «да трать» запущена: 8 035 симв. ≈ 250 ₽.

→ Проверить check по озвучке (эй-ай, бренды) → footage → list (≤59 с, дыр нет) → render → свой круг по раскадровкам → news_page.py --upload → «ок» владельца → очередь Завода 24.10 12:00. Ждут владельца: замена p15 ElevenLabs на Fish Audio (дефолт оставить), проверка «Ограничения» в YouTube Studio у 11 провалов, OAuth YouTube Analytics к 08.11.

23.10.2026, 06:04:08 · С7 · Микс · claude

С7 выкачен на cfru 23.10 11:00 Екб по «да выкатывай»: md5 7 файлов = репо, банк 25 (жизнь 8, улыбка 5, для своих 12), 23 истории w44 помечены used, 6 из 8 новых лент дали записи, сегодняшняя очередь не тронута, tick на новом коде без ошибок. Бэкап /opt/backups/channel-news-src-20261023-1100-c7.tgz.

→ 24.10: первая сборка с рубриками (проверка в Atlas). 30.10: неделя микса — доли, пустые слоты, spend, ленты N+1/Naked Science, слово владельца (критерии 5, 13, 14).

23.10.2026, 05:51:02 · С7 · Микс · claude

С7 «Микс» по решению владельца 23.10: 4 рубрики (ИИ в жизни / Вышло / Для своих / Улыбка), доли 40/30/30 раскладывает код mix.py, будни 3 поста, +8 лент для всех и анонсов, жаргон-брак в простых рубриках, банк w44 (13 постов, 92% простых, факт-чек агентом). Экзамены s7 12/12, s6 8/8, ОТК 2 круга (18 находок исправлены), песочница cfru неделя без нарушений, 0 ₽. Попутно починен фильтр erid (backspace вместо ). Код локально, на cfru не выкачен.

→ Ждёт «да» владельца на выкат: bash scripts/deploy-c7.sh. После выката проверки по сроку +1 и +7 дней (рубрики, пустые слоты, spend ≤10 ₽/будни, ленты N+1/Naked Science), DECISIONS 14.

13.10.2026, 06:11:21 · С6 · Разнообразие постов и роликов · claude

13.10: по жалобе владельца на одну схему постов сделан variety.py (ход и концовку выбирает код из 15 приёмов владельца, брак шаблона, вопрос ~45%); писатель/очередь переделаны, экзамены s6 8/8, ОТК 2 круга (22 находки исправлены). Банк по-новому: переписаны 2 слота 13.10 и w42-09..14, написан w43 (v2), в банке 20 до 23.10. Ролики партии 5: 14 тем, факты, 14 структур, 5 новых вставок лица из разных записей, видеоряд проверен раскадровкой, подписи и расписание 15–21.10. Охват MAX на пост 62→53→43.

→ Ждут «да» владельца: озвучка 14 роликов ≈340 ₽ (потом render, страница, «ок» на очередь); выкат С6 на cfru (variety.py и style-samples.json первыми). Владелец: переподключить Инстаграм/Threads в Upload-Post; 2 или 3 поста в день. Проверки по сроку: 17.10 первые автоновости после выката, 27.11 планета TIC 4206066.

07.10.2026, 13:29:00 · · claude

Ночная смена 07→08.10: банк w42 (14 постов, 10–16.10) написан и загружен, ready 18 на 9 дней; проверка 550e51f4: ролики m02/m10 вышли в ВК и Ютуб, Instagram/Threads failed «профиль не настроен». Найден пропуск новостного слота 08:30 (03.10, 06.10) — в WAL.

→ Владелец: переподключить Upload-Post (8 слотов до 11.10 упадут). Решить, чинить ли слот 08:30. Банк w43 ≈15.10.

06.10.2026, 05:53:00 · С2 · Пост / ролики v2 партия 4 · claude

Партия 4 новостных рилсов (10 шт., темы 29.09–06.10): факты собрали 3 подагента (facts-A/B/C), тексты plans_news4.py, озвучка Eleven v4 7 934 симв. ≈245 ₽ по «да», прослушка 85–99 %, видеоряд 30 роликов Ютуба + скриншоты первоисточников, рендер, свой круг проверки (срез бегущих строк, замена кадров). Страница /lab/news-reels/ обновлена. В скилл news-reels занесены грабли партии 4.

→ 1) «ок» владельца на очередь: python make_queue.py в tools/reel/2026-10-06, пережать m04/m08/m10 до <50 МБ (crf 21), scp на cfru:/opt/channel/reels/2026-10-06/, zavod-reel-queue.py --dry, потом без --dry. 2) m06: «смеётся» проглочено, переозвучка ~25 ₽ по решению владельца. 3) Проверить факт выхода партии 3 по smm_network_posts (нужен доступ к базе). 4) Перед выходом m07 перепроверить справку Google про Deep Think.

02.10.2026, 19:46:58 · · claude

Ночная смена 02→03.10: банк w41 (14 постов, 03–09.10) написан в сессии и загружен на cfru (с 27.09 банк был пуст, 2 слота в день пропускались); проверки 02.10: охват MAX 80→54→38 на пост, Threads 0/30 и карусели/ролики в Инстаграм/Threads не выходят (Upload-Post не подключён), ВК не принимает альбомы. План docs/PLAN-2026-10.md.

→ Владелец: переподключить Upload-Post; решить частоту MAX (2/день); карусели по «да» (≈45 ₽); партия роликов по «ок». Техника: не пропускать слот при пустом банке (вторая новость через API), вернуть упавшие слоты в pending после переподключения, починить альбомы ВК.

01.10.2026, 16:17:59 · С2 ролики, партия 3 · claude

Партия 3 в очереди Завода по решению владельца: n01 01.10 21:15, далее 02–06.10 по 2 в день (12:00, 17:00 Екб), сети ВК+Инстаграм+Ютуб+Threads. n01: ВК вышел; Инстаграм и Threads не вышли (Upload-Post: сессия/токен истекли), помечены failed; Ютуб в обработке. Формат принят владельцем как стандарт: скилл news-reels, библиотека лиц faces (по умолчанию красная кофта), озвучка Eleven v4 по умолчанию.

→ Владельцу переподключить Instagram и Threads в Upload-Post (профиль MyVIsion), затем вернуть n01 IG/Threads в pending. 02.10 проверить выход. Следующие партии — по скиллу news-reels с красной кофтой.

01.10.2026, 14:57:04 · С2 ролики, партия 3 · claude

Новостные рилсы v2: композиция News на Remotion по эталону «Мысли утра» (карточка первоисточника с маркером, счётчик, столбики, «против», цитата, кружок-реакция и перебивка лицом владельца, караоке на плашке, музыка кодом). Сборщик news.py: Eleven v4 с тегами эмоций (тест 3 голосов: v4 на 30% живее v2), Ютуб целиком в кэш и нарезка локально, апскейл Real-ESRGAN animevideov3 (не на лицах). 7 новостей + 3 находки собраны, страница /lab/news-reels/. Потрачено ElevenLabs ≈275 ₽.

→ Владелец смотрит /lab/news-reels/ → правки → «ок» на очередь Завода. Решить: переозвучка n09/n10 с «нейросеть» вместо «ИИ» (~46 ₽), Suno-музыка (~12 ₽), минута реакций лицом для перебивок.

28.09.2026, 07:10:28 · S4 · claude

Инцидент 28.09: кнопка «стоп» в Лии не работала с 19.09 (news-ctl держал в памяти старый config без BANK_DIR, нажатие падало ImportError, пустая страница). Пост 13:00 про GitHub AgentVerse снят руками через newsctl veto. Починено: действие кнопки выполняет свежий дочерний процесс ctl_server.py --act, сбой = страница «НЕ сработало» + сообщение в Лию. Выкачено на cfru, news-ctl перезапущен, проверено подписанными ссылками через myvisionagency.ru/news-ctl: veto и keep отвечают 200, очередь корректна. Грабли в docs/NEWS-FACTORY.md, бэкап /opt/backups/ctl_server.py.20260928-bak.

→ Живьём не проверен путь сбоя (страница НЕ сработало + алерт в Лию). Пост 19:30 «Тёмная фабрика» по плану.

25.09.2026, 05:07:04 · С4 · Новости: полуавтомат · claude

Разбор «посты в MAX/ТГ перестали выходить, карусели идут». Причина: с 20.09 отбор новостей DeepSeek V4 Flash уходил в размышления, съедал max_tokens=1200, возвращал пустой content, parse_json(None) валил сборку дня целиком, вместе с постами банка; утреннее сообщение Лии молчало, лог писал ложное «нет бота». Посты вышли только 22.09. Починено и выкачено 25.09: reasoning выключен, max_tokens 3000 (ответ ~250-400), chat() даёт внятную ошибку на пустом ответе, сбой отбора пропускает только новостные слоты, банк выходит, Лия пишет о сбое, при несобранной очереди говорит «не собрана». Очередь 25.09 собрана руками: 13:00 и 19:30 из банка. Экзамены s4: 17 из 23; отбор и тексты зелёные, 6 красных не от правки (устарели после решения 19.09 про банк, ручной критерий, известные по устройству теста). Потрачено 8,6 ₽ за день, из них ~8 ₽ экзамены без согласования.

→ 28.09 проверка по сроку. Решение владельца: обновить экзамены s4 под расписание с банком (Расписание 1 и 3 не знают вида слота bank). В банке 10 постов, хватит до ~30.09, потом «напиши банк на неделю».

21.09.2026, 12:32:50 · Пост + ролики · claude

Вторая партия роликов: 10 штук по темам из news.db и HN 18-21.09, озвучка ElevenLabs ≈200 ₽, прослушка 87-97 %. Ютуб с машины владельца замедлен (5 КБ/с), скачивание клипов переведено на cfru через прокси (/opt/reel). По слову владельца MAX и Телеграм с видео сняты, ВК руками (папка tools/reel/2026-09-21/для ВК). Очередь 30 слотов 22-26.09 по 2 в день (instagram, youtube, threads). Первая партия по факту: Ютуб 5/5, Инстаграм и Threads 0/5 (reauth_required).

→ 1) Владелец переподключает Instagram и Threads в Upload-Post, после этого вернуть 10 упавших слотов первой партии. 2) Проверить выход 22.09 12:00 (q05-fight) на Ютубе. 3) Автокритик кадров: из 40 сцен 11 перевыбраны руками. 4) Баг Завода published-по-приёму (DECISIONS 10).

20.09.2026, 13:06:36 · С2 Пост · claude

20.09 пост «Импланты из Киберпанка, только на ИИ» ОПУБЛИКОВАН по «ок, публикуем»: MAX https://max.ru/id667356686365_biz/AaC-65OAI8Y, ТГ https://t.me/MyVisionagency/169, ВК https://vk.com/wall-232702789_69 (текстом). Завод content_item 14ad9d30, пункт плана связан. Картинка v2 без людей (кресло риппердока + каталог имплантов), v1 с лицом владельца отклонена. Всего 2 картинки ~6 ₽. Первый живой пост через скилл в оба канала плюс ВК.

→ ВК с картинкой: токен сообщества не умеет photos.getWallUploadServer (ошибка 27), нужен пользовательский токен с photos+wall или загрузка через Завод. Через 1-2 дня channel-stats по посту. Референсы владельца для image-to-image класть на скрытый путь и удалять после генерации (сделано).

20.09.2026, 12:58:06 · С2 Пост · claude

20.09: пост «Импланты из Киберпанка, только на ИИ» (тип разбор, 2815 знаков, post-check прошёл). Три круга правок с владельцем: убрано «уже стоит» и рабочий контекст (канал читают оба работодателя), везде «начальный аналог». Файлы content/2026-09-20-implanty-kiberpanka.{json,txt,jpg}, пункт плана Завода 72aa009b-caf1-4554-ad85-c219a603a346. Картинка: gpt-image-2-image-to-image по кадру из ролика владельца (dubl-2.mov, 5 с), 4:3 1K, оплачена 1 раз (~3 ₽, ключ 6bfa2958460a0163), принята с первого раза. kiegen.mjs научен пробрасывать input_urls (поле input в задании, учтено в хеше), бэкап kiegen.mjs.bak-0920.

→ Ждём «ок, публикуем» от владельца → MAX → Телеграм → ВК (vk_post.py из новостного конвейера) → zavod-post.py. После публикации удалить референс /opt/mv-home/lab/ref-7k2p9x/. Через 1-2 дня channel-stats по посту.

19.09.2026, 17:18:16 · Пост + ролики · claude

Ролики: очередь Завода отработала слоты 19.09 12:00 и 17:00: ТГ (156, 158), MAX, ВК-клипы, Ютуб-шортс (xffwdg-4pUQ, _YMyUCd8PZw) вышли; Инстаграм и Threads упали у Upload-Post (session expired, account_reauth_required), Завод при этом показал published (баг, DECISIONS 10). По слову владельца ВК отключён: 3 слота сняты, папка для ручной загрузки tools/reel/2026-09-19/для ВК (mp4 + txt). Инста/Threads у r5, r3 помечены failed с причиной. Проверка по сроку переведена в blocked.

→ 1) Владелец переподключает Instagram и Threads на app.upload-post.com/manage-users (профиль MyVIsion) → вернуть 4 упавших слота в pending. 2) Слоты 20.09 12:00/17:00 и 21.09 12:00 в ТГ, MAX, Ютуб идут сами; Инста/Threads упадут до переподключения. 3) Баг Завода: published по приёму задания, а не по results[].success; чинить на стейдже, прод по «да». 4) Автокритик кадров и регулярное производство роликов из news.db.

19.09.2026, 06:11:36 · Пост + ролики · claude

Разобран ролик Нины (Codex + yt-dlp + TTS + ffmpeg). Собран свой конвейер reel.py: сценарий → ElevenLabs (словарь произношения pronounce.json, прослушка GigaAM) → клипы с Ютуба и скриншоты первоисточников → сабы → ffmpeg. Пять роликов (2 новости, 2 истории, 1 приём) приняты владельцем, озвучка ElevenLabs Nikolay «гораздо лучше». Потрачено ≈100 ₽ ElevenLabs. Очередь в Заводе: 5 роликов × 6 сетей, 19-21.09 по 2 в день (12:00 и 17:00 Екб).

→ 1) Проверить первый выход 19.09 12:00 по сетям (задача-проверка). 2) Баг клиента Upload-Post: title режется до 100 знаков, а для Инстаграма и Threads это вся подпись; чинить на стейдже (instagram_title/threads_title/youtube_description), прод только по «да». 3) Автокритик кадров для автоподбора видео. 4) Регулярное производство: тема из news.db → сценарий → ролик, по 2 в день.

19.09.2026, 04:44:24 · С2 Пост / Threads · claude

19.09: Threads. 30 постов (забавное/новость/польза/байт/мысль, голос автора, ≤500 знаков, факты из его постов и news.db) поставлены в очередь Завода: отдельная фабрика «Жизнь с ИИ · Threads» с автопубликацией по 5 в день 20-25.09. Карусели получили пятую сеть threads с короткой подписью. Всё видно на /lab/karuseli-ii.

→ 20.09: проверка первого выхода в Threads (пост 09:30 и карусель 09:00). Баг продукта на заметку: планировщик фабрики отбрасывает threads_post без media_url.

19.09.2026, 01:10:51 · С2 Пост / карусели · claude

19.09 (вечер): по слову владельца карусели поставлены в очередь Завода по 2 в день (20-24.09, 09:00 и 19:30 Екб) на MAX, ТГ, ВК и Инстаграм: к фабрике «Жизнь с ИИ» подключены Инстаграм и ВК (копия настроек фабрики «Контент»), слайды в хранилище product-images/zhizn-s-ii/carousels, 9 content_items + 36 smm_network_posts (pending). Публикует штатный планировщик прода (каждые 5 минут со старого сервера). Скрипт посева scripts/zavod-carousel-queue.py (идемпотентный). Карусель 8 в очередь не ставил (слайд 2 не проходит политику).

→ Проверка 20.09 после 09:10 Екб: первая карусель вышла в 4 сети (задача в «Проверках по сроку»). Решение владельца по карусели 8.

19.09.2026, 00:49:34 · С2 Пост / карусели · claude

19.09: сделаны 10 каруселей для Инстаграма и ВК (новости из news.db, польза, байт, комикс). Первая в скетче принята, по слову владельца стилистика переведена на его карусели из Завода: у каждой свой стиль (нуар, натюрморт, доска, комикс, газета, тёмный SaaS, мел, брутализм, блюпринт). 59/60 слайдов на странице согласования, потрачено около 192 ₽.

→ Владелец смотрит /lab/karuseli-ii и говорит, что переделать. Открыто: слайд 8-2 не проходит политику (4 попытки), календарь 9-5 с английскими днями. Публикует владелец сам.