Skip to content

juwain/pulse-digest-bot

Repository files navigation

📡 Пульс веб-платформы — OpenClaw Digest Bot

Ежедневный дайджест веб-разработки. Сбор ссылок — скриптами, суммаризация — AI-агентом (OpenClaw + GLM 5), рассылка — подписчикам в личку TG-бота.

Архитектура

[RSS feeds]  ──┐
[Web blogs] ───┤──→ [collect-cli.ts: сбор + dedup] ──→ collected.json
[TG channels]──┘              │
                              ▼
                   [OpenClaw agent (GLM 5)]
                   Читает collected.json,
                   суммаризирует, категоризирует,
                   форматирует в стиле Пульса
                              │
                              ▼
                   [Черновик → админу в TG DM]
                              │
                   ✅ → рассылка подписчикам
                   ❌ → отмена
                   текст → правки + новый черновик

Принцип: Скрипты — механическая работа (fetch, parse, dedup). Агент — интеллектуальная (суммаризация, категоризация, форматирование).

Быстрый старт

pnpm install
cp .env.example .env           # заполнить TG_BOT_TOKEN, TG_ADMIN_CHAT_ID
cp digest-sources.example.json digest-sources.json  # настроить источники
pnpm collect                   # тест сбора

Команды

Команда Описание
pnpm collect Собрать ссылки из RSS, TG-каналов, блогов → data/collected.json
pnpm publish Разослать data/draft.html всем подписчикам
pnpm subscribers Управление подписчиками (add, remove, list)
pnpm test Запустить тесты

OpenClaw Skills

Суммаризация и workflow одобрения выполняются агентом OpenClaw через skills:

Skill Тип Назначение
digest-collector механический Запускает collect-cli.ts
digest-summarizer интеллектуальный Агент читает collected.json, суммаризирует, сохраняет draft.html
digest-publish механический Запускает publish-cli.ts для рассылки
digest-subscribe механический Обрабатывает /subscribe и /unsubscribe

Skills находятся в skills/ — при деплое копируются в ~/.openclaw/workspace/skills/.

Ежедневный workflow

  1. 07:00 MSK — cron запускает OpenClaw: digest-collectordigest-summarizer
  2. Агент отправляет черновик админу в TG DM
  3. Админ отвечает: «ок» → рассылка, текст → правки, «отмена» → стоп
  4. При одобрении — digest-publish рассылает подписчикам

Подписка

Пользователь пишет боту:

  • /subscribe — подписаться на дайджест
  • /unsubscribe — отписаться

Настройка

Telegram

  1. Создать бота: @BotFather → /newbot
  2. Узнать свой chat_id: отправить боту /start, затем https://api.telegram.org/bot<TOKEN>/getUpdates
  3. Заполнить .env: TG_BOT_TOKEN, TG_ADMIN_CHAT_ID

Источники

Файл digest-sources.json:

  • rss — RSS-фиды (Frontend Focus, JS Weekly, CSS Weekly, ...)
  • blogs — блоги (web.dev, developer.chrome.com)
  • telegram_channels — TG-каналы

Переменные окружения

Переменная По умолчанию Описание
TG_BOT_TOKEN Токен Telegram-бота
TG_ADMIN_CHAT_ID Chat ID админа для одобрения
COLLECT_HOURS 24 За сколько часов собирать ссылки
MAX_ITEMS_PER_DIGEST 20 Максимум ссылок в дайджесте
SOURCES_PATH ./digest-sources.json Путь к файлу источников
HISTORY_PATH ./data/history.json Путь к истории дедупликации
DATA_DIR ./data Директория для данных
SUBSCRIBERS_PATH ./data/subscribers.json Путь к файлу подписчиков

Деплой на VPS

# На сервере (Ubuntu 24.04)
bash deploy/setup.sh

Подробности — в deploy/setup.sh.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors