Автоматизированный пайплайн: собирает новости → генерирует авторские комментарии через Claude API → публикует в Telegram, Facebook, Instagram.
Проект реализован в рамках учебного курса: Создание ИИ Агентов и приложений для бизнеса, роста, дохода и кайфа. Хотите научиться делать такое же, а не смотреть как баран на новые ворота? Попробуйте этот курс. 14 дней пробный период: https://alexeykrol.com/ai_full/
- У вас установлено приложение Perplexity на телефоне — в нём есть удобный дайджест новостей (Discover)
- Вы открываете Perplexity, переходите в Discover и прокручиваете новости
- Понравилась новость — нажимаете «Поделиться» → Telegram → выбираете вашего бота
- Когда накопилось 13+ статей — Claude API автоматически генерирует дайджест, и на дашборде появляется готовый текст с кнопками публикации
- Заходите в Dashboard, находите нужный дайджест и нажимаете куда хотите опубликовать: 📨 TG (Telegram), 📘 FB (Facebook) или оба
Без ручного копирования, без вёрстки, без рутины.
Примеры готовых дайджестов: Facebook ・ Telegram ・ YouTube
| Шаг | Что сделать | Инструкция |
|---|---|---|
| 1 | Настроить VPS-сервер (Ubuntu, Docker, Traefik) | vps-setup.md |
| 2 | Создать Telegram-бота через @BotFather и настроить webhook | telegram-setup.md |
| 3 | Получить Claude API ключ на console.anthropic.com | — |
| 4 | (опционально) Создать Facebook App и получить Page Access Token | facebook-page-setup.md |
| 5 | (опционально) Настроить Facebook Profile автопубликацию (Patchright) | facebook-setup.md |
| 6 | Заполнить .env файл и запустить docker compose up -d |
Быстрый старт |
graph TB
subgraph "📱 Вход"
A[iPhone / Telegram] -->|URL ссылки| B[Telegram Bot]
A2[Chrome Extension] -->|JSON batch| C[API]
end
subgraph "☁️ VPS"
B --> D[(SQLite)]
C --> D
E[Queue Manager<br/>каждые 60 сек] -->|13+ статей?| F[Claude API]
D --> E
F -->|Phase A: комментарий| G[Opus 4]
G -->|Phase B: сборка| H[Готовый дайджест]
H --> I[(SQLite)]
I --> J[Dashboard]
end
subgraph "📤 Публикация"
J -->|📨 TG| O[Telegram канал]
J -->|📘 FB| P[Facebook Page]
J -->|📋 Copy| Q[Буфер обмена]
end
subgraph "🖥️ Mac"
L[local-fetcher.js] -->|Chrome| D
M[fb-publish.js] -->|Patchright| N[Facebook Profile]
end
style A fill:#0088cc,color:#fff
style F fill:#d97706,color:#fff
style J fill:#059669,color:#fff
style O fill:#0088cc,color:#fff
style P fill:#1877f2,color:#fff
git clone https://github.com/YOUR_USERNAME/news.git
cd news/news-digest-pipelinecp .env.example .envЗаполните .env:
# Обязательные
ANTHROPIC_API_KEY=sk-ant-... # Claude API ключ
TELEGRAM_BOT_TOKEN=123456:ABC... # Токен от @BotFather
TELEGRAM_CHAT_ID=123456789 # Ваш Telegram user ID
# Опционально (для публикации)
TELEGRAM_PUBLISH_CHAT_ID=-100... # ID канала для публикации
FACEBOOK_PAGE_ID=... # ID Facebook Page
FACEBOOK_PAGE_ACCESS_TOKEN=... # Page Access Token
# Безопасность
API_SECRET_KEY=... # Сгенерируйте: openssl rand -base64 32
DASHBOARD_PASSWORD=... # Отдельный пароль для дашбордаnpm install
npm startДашборд: http://localhost:3000 (логин: admin / ваш DASHBOARD_PASSWORD)
docker compose up -d --buildflowchart LR
subgraph "Phase A — Комментарии"
A1[Статья 1] -->|prompt.md| C1[Claude Opus]
A2[Статья 2] -->|prompt.md| C2[Claude Opus]
A3[Статья N] -->|prompt.md| C3[Claude Opus]
C1 --> R1[80-150 слов]
C2 --> R2[ироничный тон]
C3 --> R3[скептика]
end
subgraph "Phase B — Сборка"
R1 --> ASM[Claude Opus]
R2 --> ASM
R3 --> ASM
CFG[config.md] --> ASM
ASM --> DIGEST["#новости 1. ...<br/>2. ...<br/>Курс<br/>Граница<br/>Хэштеги"]
end
style C1 fill:#d97706,color:#fff
style C2 fill:#d97706,color:#fff
style C3 fill:#d97706,color:#fff
style ASM fill:#d97706,color:#fff
style DIGEST fill:#059669,color:#fff
Два промпта управляют стилем:
- prompt.md — как писать комментарий (тон, длина, формат)
- assembly_prompt.md — как собирать дайджест (порядок, курс, подвал)
- config.md — хэштеги, упоминание курса, граница
| Функция | Описание |
|---|---|
| 👁 Смотреть | Превью первых 3 новостей |
| 📨 TG | Публикация в Telegram канал |
| 📘 FB | Публикация на Facebook Page |
| 📋 Копировать | Текст в буфер обмена |
| ✕ Удалить | Удалить дайджест |
| Статус | Черновик / Опубликован (с датой) |
Защищён HTTP Basic Auth + rate limiting.
⚠️ ВНИМАНИЕ: ВЫСОКИЙ РИСК БАНА АККАУНТААвтоматическая публикация в личный профиль Facebook через browser automation (Patchright, Playwright, Puppeteer, Selenium) может привести к silent ban вашего аккаунта. Facebook детектирует автоматизацию и без предупреждения начинает удалять все ваши посты — даже те, которые вы публикуете вручную. При этом Account Quality остаётся чистым, никакого уведомления о нарушении нет.
Что мы обнаружили на собственном опыте:
- Тестовые посты через Patchright (особенно с текстом вроде «test», «automation») вызвали срабатывание спам-фильтра
- Фильтр распространился на ВСЕ публикации с аккаунта — включая ручные
- Ограничение затронуло даже второй аккаунт с того же IP
- Восстановление заняло 3-7 дней полного молчания
Рекомендации:
- Публикация на Facebook Page через API — безопасна (Graph API, другой механизм модерации)
- Публикация в Telegram — безопасна (Bot API)
- Публикация в личный профиль — только вручную (копировать текст с дашборда)
- Никогда не публикуйте тестовые посты с вашего основного аккаунта
- Никогда не делайте rapid publish/delete циклы — это главный триггер
Полное исследование проблемы: facebook-shadow-ban-research.md
Код для browser automation сохранён в проекте как экспериментальный — используйте на свой страх и риск, только с тестовыми аккаунтами:
# Первый раз — залогиниться
node scripts/fb-publish.js --login
# Публикация (⚠️ РИСК БАНА — только тестовые аккаунты!)
node scripts/fb-publish.js latestПодробнее: docs/facebook-setup.md — детальное описание борьбы с Facebook bot detection.
flowchart LR
D[Дайджест] --> H[Claude Opus<br/>5-step headlines]
H --> T[Заголовок + буллеты]
TPL[Шаблон-референс] --> IMG[fal.ai / Recraft V3]
T --> OVR[Sharp: текст на плашке]
IMG --> OVR
OVR --> FINAL[1080×1350 PNG]
FINAL --> IG[Instagram API]
style H fill:#d97706,color:#fff
style IMG fill:#7c3aed,color:#fff
style FINAL fill:#059669,color:#fff
flowchart LR
D[Дайджест] --> S[Claude: Storyboard<br/>6 shots × 5-15 сек]
S --> V[Kling 3.0 / Veo 3.1]
V --> C1[shot_01.mp4]
V --> C2[shot_02.mp4]
V --> C3[shot_N.mp4]
C1 --> FF[FFmpeg concat]
C2 --> FF
C3 --> FF
FF --> R[reel_final.mp4<br/>1080×1920]
style S fill:#d97706,color:#fff
style V fill:#7c3aed,color:#fff
style R fill:#059669,color:#fff
Все endpoints (кроме /health) требуют аутентификации: Authorization: Bearer <API_SECRET_KEY>
| Метод | Endpoint | Описание |
|---|---|---|
GET |
/health |
Статус сервера (публичный) |
GET |
/ |
Dashboard (Basic Auth) |
POST |
/api/articles |
Добавить статью по URL |
POST |
/api/articles/batch |
Пакетная загрузка |
GET |
/api/articles/stats |
Статистика |
POST |
/api/digests/generate |
Ручная генерация |
GET |
/api/digests |
Список дайджестов |
GET |
/api/digests/:id/text |
Чистый текст |
POST |
/api/digests/:id/publish |
Публикация {platforms: ["telegram","facebook"]} |
DELETE |
/api/digests/:id |
Удалить дайджест |
- API и Dashboard защищены аутентификацией (Bearer / Basic Auth)
- Раздельные ключи для API и Dashboard
- Rate limiting: 30 req/min (API), 10 attempts/15min (Dashboard)
- SSRF-защита: whitelist только
perplexity.ai - Timing-safe сравнение ключей
.envне в git, права0600
Полный аудит: SECURITY_AUDIT_2026-04-13.md
├── prompt.md # Промпт: комментарий к статье
├── assembly_prompt.md # Промпт: сборка дайджеста
├── config.md # Хэштеги, курс, граница
│
├── news-digest-pipeline/
│ ├── src/
│ │ ├── index.js # Express + auth + rate limiting
│ │ ├── middleware/auth.js # Bearer + Basic Auth
│ │ ├── db/ # SQLite (better-sqlite3)
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # Claude API, publishers, queue
│ │ └── public/index.html # Dashboard
│ ├── scripts/
│ │ ├── fb-publish.js # Facebook Profile (Patchright)
│ │ ├── local-fetcher.js # Chrome content extraction
│ │ └── monitor.sh # VPS monitoring
│ ├── production/
│ │ └── image/ # Instagram image pipeline
│ ├── distribution/ # Platform-specific publishers
│ ├── docs/ # Setup guides
│ ├── Dockerfile
│ └── docker-compose.yml
│
└── extension/ # Chrome extension
| Тема | Файл |
|---|---|
| Telegram (бот + канал) | telegram-setup.md |
| Facebook Page (Graph API) | facebook-page-setup.md |
| Facebook Profile (Patchright) | facebook-setup.md |
| VPS + Docker + Traefik | vps-setup.md |
| iOS Shortcut | ios-shortcut-setup.md |
| Instagram Pipeline | instagram/README.md |
| Video Pipeline | distribution/video/README.md |
| Компонент | Технология |
|---|---|
| Backend | Node.js 20, Express, SQLite |
| AI | Claude API (Opus 4), Anthropic SDK |
| Images | fal.ai, Recraft V3, Sharp |
| Video | Kling 3.0, Veo 3.1, FFmpeg |
| Browser | Patchright (stealth Playwright) |
| Deploy | Docker, Traefik, Ubuntu 24.04 |
| Notifications | Ntfy.sh |
MIT
