Я сделал Telegram-канал про агро-ИИ, который пишет сам себя. Вот как это устроено изнутри
Идея простая: взять горячую нишу (умное земледелие + ИИ), добавить бесплатный API и получить канал, который публикует контент каждые 4 часа без моего участия. Расскажу, как это работает технически.
Почему именно умное земледелие
Я искал нишу с тремя условиями:
- Реальный спрос, но мало качественного контента в Telegram на русском языке
- Достаточно новостей и материалов для регулярного постинга
- Тема, где ИИ-генерация выглядит органично, а не как спам
Умное земледелие попало в все три. ИИ в сельском хозяйстве — это точное земледелие, дроны, диагностика болезней по фото, IoT-датчики на полях, прогнозирование урожайности. Огромная тема, растущий рынок, и практически ноль нормальных каналов на русском.
Архитектура системы
Весь стек — Python. Никакого сложного инфраструктурного оверхеда.
Компоненты:
- Gemini API (gemini-2.5-flash) — генерация текста постов. Выбрал его из-за щедрого бесплатного тира: 1500 запросов в день бесплатно, что более чем достаточно для 6 постов в сутки
- APScheduler — планировщик задач внутри Python-процесса. Запускает генерацию и публикацию по расписанию каждые 4 часа
- python-telegram-bot (async) — отправка постов в канал через Bot API
- RSS-парсер (feedparser) — сбор свежих новостей из агро-источников для контекста
Пайплайн одного поста:
RSS fetch → выбор темы → промпт в Gemini → парсинг JSON → поиск фото → публикация в Telegram
Каждый шаг занимает 2-5 секунд. Весь цикл — меньше 30 секунд.
Промпт-инжиниринг — самая важная часть
Первая версия давала скучные, однотипные посты. Проблема была в промпте — слишком общем.
Решение: структурированный промпт с жёсткими правилами и ротацией тематик.
Что я задал Gemini:
- Роль: эксперт-агроном и популяризатор технологий
- 6 типов постов с жёсткой ротацией: факт дня, кейс технологии, практический совет, опрос аудитории, мировой тренд, лайфхак
- Список последних 60 постов — чтобы не повторяться по темам и растениям
- Обязательный вывод в JSON: {"title": "...", "content": "...", "image_query": "..."}
- Ограничение контента — не более 650 символов (лимит Telegram на подпись к фото)
Пример промпта (упрощённо):
pythonprompt =f""" Ты — эксперт по агротехнологиям и умному земледелию. Напиши пост для Telegram-канала на одну из тем (выбери случайно): 1. Новость: ИИ-технология в сельском хозяйстве 2. Кейс: как конкретная ферма применяет технологию 3. Практика: совет для фермера 4. Факт: удивительная цифра об агро-ИИ ... Недавние посты (не повторяй эти темы): {recent_titles}Ответь СТРОГО в формате JSON: {{"title": "...", "content": "...", "image_query": "..."}} """
Ключевой момент — передача списка последних постов. Это решает проблему повторений, которая убивает любой автономный канал.
Как публикуется пост с картинкой
Я не храню картинки локально. Вместо этого:
- Gemini возвращает image_query — конкретное название растения или технологии
- Скрипт делает запрос к Wikipedia API и берёт первое фото из статьи
- Если фото нет — публикуется текстовый пост без фото
pythondefget_wikipedia_image(query:str)->str|None: url ="https://en.wikipedia.org/w/api.php" params ={"action":"query","titles": query,"prop":"pageimages","format":"json","pithumbsize":800} response = requests.get(url, params=params) pages = response.json()["query"]["pages"] page =next(iter(pages.values()))return page.get("thumbnail",{}).get("source")
Это даёт бесплатные, качественные, лицензионно чистые фотографии без внешних сервисов.
Что пошло не так и как я это починил
Проблема 1: Gemini иногда возвращал не JSON
Решение: явное указание в промпте «ответь ТОЛЬКО JSON, без пояснений и markdown-блоков». Плюс try/except с повторной попыткой при ошибке парсинга.
Проблема 2: Посты повторяли одни и те же растения
Решение: передача 60 последних заголовков в промпт. После этого повторы пропали полностью.
Проблема 3: APScheduler падал после 2-3 дней работы
Решение: обёртка всего в supervisor + автоперезапуск. Теперь процесс восстанавливается автоматически.
Параллельно: сайт plantai.green
Канал — это только верхушка. Параллельно я развиваю сайт plantai.green как полноценный агро-ИИ инструмент:
- Диагностика болезней по фото — загружаешь фото листа, ИИ определяет болезнь и даёт рекомендации
- Умные графики полива — персонализированные под конкретный вид растения
- Защита от заморозков — уведомления на основе прогноза погоды
- Сосед по грядке — планировщик совместимости растений
- AI Дизайнер ландшафта — генерация планировок садового участка
Telegram-канал работает как точка входа — даёт ценный контент бесплатно, а сайт предлагает практические инструменты.
Результат и цифры
- Канал публикует 6 постов в день, 24/7, без ручного участия
- Затраты на API: $0 (Gemini Flash бесплатный тир)
- Время на поддержку: ~30 минут в неделю (проверить логи, иногда подправить промпт)
- Стек: Python 3.11, ~300 строк кода в основном файле
Что дальше
Планирую добавить:
- Мониторинг вовлечённости (какие типы постов собирают больше реакций) и автоматическую корректировку ротации
- Генерацию карточек через API изображений вместо Wikipedia-фото
- Интеграцию с агро-новостными API для более актуального контента
Если интересно — канал: t.me/plant_ai, сайт: plantai.green