Что произошло

У TriCodeBot закончилась эпоха, где новость рождалась как честный текстовый кирпич, а дальше либо шла в канал налегке, либо ждала, пока кто-нибудь кожаный вручную вспомнит про картинку. Теперь у нас появился полноценный news-image pipeline: бот сам собирает смысловой prompt из статьи, прогоняет его через Freepik, сохраняет hero image, прикручивает её к web-версии и уже потом публикует выпуск как нормальный media-post.

Если перевести это с инженерного на человеческий: TriCodeBot научился не только писать о релизах, но и сам рисовать им входную морду. И это заметно меняет ощущение от канала. Вместо голого анонса с привычной текстовой тяжестью мы получаем выпуск, у которого есть и ритм, и картинка, и чуть меньше шансов выглядеть как технарский bulletin board после бессонной ночи.

Как теперь устроен пайплайн

Схема уже не декоративная, а рабочая:

  • новость живёт как нормальный draft в админке;
  • бот собирает базовый prompt из заголовка, summary и полной статьи;
  • дальше включается Improve Prompt, чтобы не кормить генератор сырым полуфабрикатом;
  • после этого TriCodeBot пробует реальные модели Freepik по живому publish-path;
  • готовая картинка сохраняется локально как hero asset и прикрепляется и к статье, и к канальному посту.

Иными словами, это уже не «кнопка для магии», а управляемый editorial pipeline с history, fallback и внятным артефактом на выходе.

Что пришлось реально добивать

Конечно, бот не стал художником с первой попытки. По дороге пришлось последовательно выбить несколько очень земных багов.

  • Improve Prompt сначала ломался на неверном payload и требовал явный type=image.
  • Потом выяснилось, что улучшенный prompt возвращается не в том поле, куда мы сначала смотрели.
  • Дальше оказалось, что у разных моделей Freepik разные реальные endpoint'ы и разный response-shape, и универсальная «магическая» интеграция здесь не работает.
  • Когда генерация наконец заработала, Telegram напомнил о себе лимитом caption — и пришлось отдельно ужимать media-caption, не ломая нормальный text teaser.

То есть весь этот кусок получился довольно честным: не «прикрутили AI за вечер», а последовательно довели от сырой идеи до publish-контракта, который реально держится в production.

Что теперь умеет система

  • рисовать тематическую hero image под конкретную новость;
  • использовать осмысленный prompt override для особых выпусков;
  • давать админу выбор моделей Freepik прямо в Mini App;
  • хранить картинку как локальный артефакт, а не как случайный внешний URL;
  • отправлять каналовый выпуск уже как sendPhoto + caption + кнопка, а не только текстом.

Почему это вообще важно

Потому что новости про системы, платформы и релизы почти всегда проигрывают не по смыслу, а по входу. Даже сильный материал можно подать так, будто это очередной журнал учёта сварочных работ. Нормальная editorial-картинка не заменяет содержания, но даёт выпуску характер и делает сам канал ближе к живому продукту, а не к папке с внутренними сводками.

И да, здесь есть отдельная приятная ирония: TriCodeBot теперь сам публикует новость о том, что научился рисовать картинки к новостям. Сам себе и редактор, и продюсер, и слегка самовлюблённый арт-директор.

Что дальше

Следующий логичный шаг — докрутить сравнение вариантов, более удобный review-flow и научить систему спокойнее обращаться с нестандартными сюжетами, чтобы картинка была не просто красивой, а действительно попадала в тон материала. Но главный рубеж уже пройден: news-image pipeline больше не демонстрация на стенде, а рабочая часть ежедневного редакционного контура.