Автоматический pipeline для сбора, обработки и публикации AI/tech новостей из Hacker News с генерацией контента через LLM.
- Запуск по расписанию — cron
0 9,18 * * *(дважды в день: 9:00 и 18:00 МСК) - Сбор данных — 8 параллельных запросов к Hacker News Algolia API по ключевым темам:
AI,LLM,GPT,agent,automation,API,startup,open source - Фильтрация — дедупликация по
objectID, сортировка поpoints, отбор топ-5 статей - Генерация контента — GPT-4.1-mini создаёт анонс 150–200 символов на английском и арабском языках
- Сохранение — запись в Google Sheets (appendOrUpdate по заголовку, без дублей)
- Уведомление — отправка в Telegram с inline-кнопками для быстрых действий
Hacker News — наиболее релевантный публичный источник для AI/tech тематики:
- Algolia API бесплатный, без авторизации, стабильный
- Поле
pointsпозволяет фильтровать качественный контент (points > 10) - Поле
num_commentsдаёт сигнал о вирусности материала - Высокая плотность постов по выбранным темам (AI, LLM, agents) — гарантирует результат при каждом запуске
| Компонент | Решение |
|---|---|
| Автоматизация | n8n (self-hosted) |
| Источник данных | Hacker News Algolia API |
| LLM | OpenAI GPT-4.1-mini |
| Хранение | Google Sheets |
| Уведомления | Telegram Bot API |
Schedule Trigger / Manual Trigger
→ Code: генерация поисковых запросов (8 тем)
→ HTTP Request: запрос к HN Algolia API
→ Aggregate: сбор всех ответов в массив
→ Code: дедупликация + топ-5 по points
→ Basic LLM Chain (GPT-4.1-mini): генерация EN + AR текстов
→ Code: парсинг JSON из LLM + сборка финального объекта
→ Google Sheets: appendOrUpdate
→ Telegram: отправка с inline-кнопками
- LLM latency — при 5 статьях и batch size 1 суммарное время генерации может достигать 30–60 сек. При увеличении количества статей возможны таймауты
- Потеря pairedItem через LangChain — LangChain-ноды обрывают цепочку
pairedItem, из-за чего данные из предыдущих нод приходится доставать через$('NodeName').all()[$itemIndex] - Отсутствие дедупликации между запусками — Google Sheets использует
appendOrUpdateпо полюtitle, но при изменении заголовка возможен дубль - Нет обработки пустого
source— часть HN-постов не имеет внешней ссылки (например,Tell HN:), кнопка «Читать статью» в таких случаях нерабочая
- Векторная дедупликация — сравнивать семантическую близость заголовков (embeddings + pgvector), чтобы не публиковать похожие новости
- Очередь обработки — вынести LLM-генерацию в отдельный workflow с очередью (Redis / n8n Queue Mode) для надёжности
- Мультиязычность — параметризовать языки через конфиг, чтобы легко добавлять новые направления без правки кода
- Фильтр по свежести — добавить фильтр
created_at > now - 24h, чтобы исключить старые посты при повторных запусках - Мониторинг — добавить ноду уведомления об ошибках (отдельный Telegram-алерт при падении любого шага)
- A/B тест промптов — логировать какие формулировки дают больше кликов по кнопкам для итерации промпта
workflow.json— экспорт workflow из n8n (credentials заменены на заглушки)
- Импортируй
workflow.jsonв n8n - Подключи credentials:
- OpenAI API → нода
OpenAI Chat Model - Google Sheets OAuth2 → нода
Append or update row in sheet - Telegram API → нода
Send a text message
- OpenAI API → нода
- Укажи свой Google Sheets Document ID и Chat ID в соответствующих нодах
- Активируй Schedule Trigger