Telegram快读助手:一款智能Telegram链接摘要机器人
在工作群、学习群或信息群中,经常会被各类链接刷屏:长篇文章、PDF文档、推特线程、LinkedIn帖子、YouTube视频……想快速判断链接里究竟讲了什么?【Telegram快读助手(telegram link summarizer agent)】来帮你!它能够自动识别链接类型,抓取内容并生成简洁摘要,让你一眼知晓要点,是内容过载时代的必备利器。
目录
-
- 克隆仓库
- 安装依赖
- 环境变量配置
项目简介
Telegram快读助手 是一款基于 Telegram Bot 的智能代理(agent),通过LangGraph和各类外部服务,多步归纳推理来完成以下任务:
- 自动路由:判断链接类型(网页、PDF、推特/X、LinkedIn、YouTube 等)。
- 内容提取:针对不同类型的链接调用最合适的抓取手段,如 Playwright、PyMuPDF、twitterapi.io、Tavily Search SDK 等。
- 摘要生成:利用 BAML LLM 函数(如
RouteRequest
)、Deepseek/Gemini 等大模型,生成结构化、简洁的链接摘要。
图:Agent 多步骤执行可视化
图:系统架构示意图
项目源码:https://github.com/MaoTouHU/telegram_link_summarizer_agent
核心功能
- 链接摘要:支持各种 URL,包括标准网页、PDF 文档、Twitter/X 帖子、LinkedIn 帖子及 YouTube 视频。
- 智能路由:使用 LLM 判断链接类型,自动选择最佳抓取 & 处理流程。
- YouTube 支持:通过 Playwright + AgentQL 抓取视频标题与描述。
- Twitter/X 支持:使用
twitterapi.io
获取推特内容(支持线程)。 - LinkedIn 支持:使用 Playwright + AgentQL 解析 LinkedIn 帖子。
- PDF 支持:通过 PyMuPDF(
fitz
)处理并提取 PDF 文本。 - 多步骤 Agentic 工作流:基于 LangGraph,串联多个工具与 LLM,实现稳定可靠的处理流程。
- 静默失败:Telegram Bot 接口可在抓取失败时静默处理,不打扰群聊体验。
技术架构
整个系统由三大部分组成:
- 路由与摘要生成(BAML + LLM)
- 抓取与解析工具链(Playwright、PyMuPDF、Tavily、twitterapi.io、AgentQL)
- Telegram Bot 接口(
python-telegram-bot
+ FastAPI + Uvicorn)
LangGraph 负责将用户输入(链接)经过 RouteRequest
路由至不同子图,再由子图调度相应工具,最终将结果反馈给用户。
技术栈
- Orchestration:LangGraph
- LLM & Routing:BAML 函数,Deepseek/Gemini
- 网页提取:Tavily Search SDK
- YouTube:Playwright + AgentQL
- Twitter/X:twitterapi.io +
requests
- LinkedIn:Playwright + AgentQL
- PDF:PyMuPDF (
fitz
) - Bot 框架:
python-telegram-bot
- Web 框架:FastAPI + Uvicorn
- 部署:Docker、Google Cloud Run
快速上手
1. 克隆仓库
git clone https://github.com/MaoTouHU/telegram_link_summarizer_agent.git
cd telegram_link_summarizer_agent
2. 安装依赖
推荐使用 uv
或者 pip
:
# 使用 uv(推荐)
uv pip install -e .
# 或者使用 pip
pip install -e .
安装 Playwright 浏览器:
playwright install
3. 环境变量配置
在项目根目录新建 .env
文件,并添加以下配置(替换为你的实际值):
# --- 核心 API Key ---
# 任选一种 LLM 提供商
# GEMINI_API_KEY="your_google_gemini_api_key"
DEEPSEEK_API_KEY="your_deepseek_api_key"
GOOGLE_API_KEY="your_google_cloud_api_key"
# 工具 API Key
TAVILY_API_KEY="your_tavily_api_key"
TWITTER_API_IO_KEY="your_twitterapi.io_api_key"
AGENTQL_API_KEY="your_agentql_api_key"
# Telegram Bot
TELEGRAM_BOT_TOKEN="your_telegram_bot_token"
# Webhook(部署时使用)
USE_POLLING="true" # true 则忽略 WEBHOOK_URL 等配置
# WEBHOOK_URL="https://<your-ngrok-or-domain>"
# TELEGRAM_WEBHOOK_SECRET_TOKEN="your_secret_token"
⚠️ 重要:
TWITTER_API_IO_KEY
可在 twitterapi.io 获取。- 保证
.env
不被提交至代码仓库(已在.gitignore
中)。
使用示例
测试脚本
修改agent.py
底部的测试用例后运行:python agent.py
可视化
生成 LangGraph 可视化图:python agent_viz.py # 会输出 agent_graph.png
本地调试(Webhook & Polling)
Polling 模式(推荐)
export USE_POLLING="true"
uvicorn bot:app --reload
Bot 会自动以长轮询方式获取消息,无需公网或 ngrok。
Webhook 模式(开发/测试)
启动本地服务器:
./scripts/run_local.sh
使用 ngrok 暴露端口:
ngrok http 8080
将生成的
https://xxxx.ngrok-free.app
填入.env
中的WEBHOOK_URL
,重启服务。
Docker 运行
chmod +x ./scripts/run_docker.sh
./scripts/run_docker.sh
- 默认映射本地
8080
端口。 - 可通过
docker logs -f telegram-summarizer
查看日志。
自托管部署(Docker)
服务器准备:安装 Git、Docker,并确保 Docker 服务启动。
克隆 & 配置:与上文“快速上手”部分一致,配置好
.env
。运行部署脚本:
chmod +x ./scripts/deploy_server.sh ./scripts/deploy_server.sh
监控管理:
docker ps docker logs -f telegram-summarizer docker restart telegram-summarizer
若采用 Webhook 模式,务必确保 WEBHOOK_URL
与 TELEGRAM_WEBHOOK_SECRET_TOKEN
配置正确,并开放对应端口(如 8080 或 443)。
部署到 Google Cloud Run
配置 Secret Manager
编辑并运行scripts/setup_secrets.sh
,按照提示将.env
中的各 API Key 同步到 GCP Secret Manager。构建 & 部署
在scripts/deploy_cloud_run.sh
中配置好SECRETS_TO_MAP
,然后运行:chmod +x ./scripts/deploy_cloud_run.sh ./scripts/deploy_cloud_run.sh
- 自动构建 Docker 镜像、推送到 Artifact Registry
- 部署到 Cloud Run,自动设置 Telegram Webhook
总结与展望
Telegram快读助手利用 多工具+多模型 的 Agent 架构,实现对常见链接类型的一站式摘要处理。接下来可考虑:
- 支持更多平台:如 Reddit 帖子、GitHub Issue/PR 摘要
- 多语言摘要:自动识别语言并翻译/摘要
- 个性化摘要模板:可配置不同场景下的摘要风格
欢迎在 GitHub 上 ★ 本项目,并提出 PR 或 Issue,让我们一起把它打磨得更好!
仓库地址:https://github.com/MaoTouHU/telegram_link_summarizer_agent
有任何问题或建议,欢迎 Issues 或 Discussions!