SuperAPI AI 工具集

sergei-mikhailov-tg-channel-reader

办公与效率

查看项目

更新于 10-15 11:01

技能介绍

用途

tg-channel-reader(电报频道阅读器)用于读取 Telegram 频道的帖子和评论,基于 MTProto 协议实现,底层支持 Pyrogram 或 Telethon 两个后端。它适用于需要检查、阅读、监控 Telegram 频道,或生成近期帖子摘要与对比的场景。

主要能力

  • 频道信息获取:tg-reader info @channel_name 返回频道标题、描述、订阅数(members_count)和链接。
  • 帖子抓取:tg-reader fetch @channel_name --since 24h 按时间范围抓取帖子,支持 --limit 限制数量、--format text 输出人类可读格式、--text-only 跳过无文字媒体帖。
  • 评论抓取:使用 --comments 可为单条帖子抓取讨论区回复,通过 --comment-limit 和 --comment-delay 控制每帖评论数与延迟。启用评论时默认帖子上限降为 30,可用 --limit 覆盖。
  • 多频道:可一次传入多个频道,依次抓取,默认每频道间隔 10 秒,可用 --delay 调整。注意 --comments 不能与多频道同时使用(会返回 comments_multi_channel 错误)。
  • 未读模式(read_unread):只返回新(未读)帖子,技能会记录已读状态,适合每日摘要和监控工作流。
  • 输出到文件:--output(可指定文件名,默认 tg-output.json)将完整数据写入文件,标准输出只返回简短确认,用于节省 token。
  • 预检诊断:tg-reader-check 为快速离线检查,无需连接 Telegram,验证凭据、会话文件、已安装的 MTProto 后端,并检测过期会话。
  • 后端切换:默认 Pyrogram,可用 --telethon 单次切换,或 export TG_USE_TELETHON=true 持久切换。

使用方式

Step 1 — 获取 API 凭据:前往 https://my.telegram.org → API Development Tools → 创建应用 → 复制 api_id 和 api_hash。

Step 2 — 保存凭据(推荐方式,适用于 agent 与服务器):

cat > ~/.tg-reader.json << 'EOF'
{
  "api_id": YOUR_ID,
  "api_hash": "YOUR_HASH"
}
EOF
chmod 600 ~/.tg-reader.json

也可用环境变量(仅交互式 shell):export TG_API_ID=YOUR_ID、export TG_API_HASH="YOUR_HASH"。建议不要将 TG_API_HASH 写入 shell 配置文件(如 ~/.bashrc),持久存储请使用 ~/.tg-reader.json。

Step 3 — 安装与配置:

npx clawhub@latest install sergei-mikhailov-tg-channel-reader
cd ~/.openclaw/workspace/skills/sergei-mikhailov-tg-channel-reader
bash setup-tg-reader.sh

安装脚本会安装 Python 包(pip install .)、检查凭据与会话、运行 tg-reader-check,并打印需要手动运行的 exec 审批命令。

在 Ubuntu/Debian 等托管 Python 的 Linux 上,建议先创建 venv:

python3 -m venv ~/.venv/tg-reader
echo 'export PATH="$HOME/.venv/tg-reader/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc

cd ~/.openclaw/workspace/skills/sergei-mikhailov-tg-channel-reader
pip install pyrogram tgcrypto telethon && pip install .
openclaw approvals allowlist add --gateway "$(which tg-reader)"
openclaw approvals allowlist add --gateway "$(which tg-reader-check)"

Step 4 — 认证:运行 tg-reader auth 创建会话文件,仅需一次。Pyrogram 会要求确认手机号(回答 y),验证码会发到 Telegram 应用内(非短信)。

Step 5 — 验证:tg-reader-check 应返回 "status": "ok",否则修复报告的问题并重新运行 setup-tg-reader.sh。

Quick Start:

tg-reader-check
tg-reader info @channel_name
tg-reader fetch @channel_name --since 24h

若提示 tg-reader: command not found,可在技能目录运行 bash setup-tg-reader.sh,或手动执行 cd ~/.openclaw/workspace/skills/sergei-mikhailov-tg-channel-reader && pip install .。回退方式:python3 -m tg_reader_unified。

未读模式配置

Option A — 配置文件(~/.tg-reader.json):

{
  "api_id": 12345,
  "api_hash": "...",
  "read_unread": true
}

Option B — 环境变量:export TG_READ_UNREAD=true。环境变量优先于配置文件。

状态存储在 ~/.tg-reader-state.json,可通过配置中的 "state_file"、环境变量 TG_STATE_FILE 或 --state-file 指定。启用后 --since 不再需要;首次运行(无历史状态)仍按 --since(默认 24h)取;后续运行只返回新于上次已读的帖子;--all 绕过未读模式,按 --since 抓取且不更新状态;无新帖时状态不变并返回 count: 0。

输出格式

info 返回字段示例:id、title、username、description、members_count、link。

fetch 返回字段示例:channel、fetched_at、since、count、messages(每条含 id、date、text、views、forwards、link、has_media、media_type)。启用评论时额外含 comments_enabled、comments_available,帖子含 comment_count 与 comments(每条含 id、date、text、from_user)。read_unread 模式下输出含 read_unread 字段;使用 --all 时为 "read_unread": {"enabled": true, "overridden": true}。

适用场景

  • 检查、阅读或监控 Telegram 频道
  • 获取近期帖子的摘要或精华
  • 追踪或对比多个频道
  • 获取频道信息(标题、描述、订阅数)
  • 通过 cron 定时抓取(如 tg-reader fetch @channel --comments --output comments.json),文件定期更新,需要分析时直接读文件而非重新抓取,节省 token

限制与注意事项

  • 安全:需要来自 my.telegram.org 的 TG_API_ID 和 TG_API_HASH。会话文件授予完整 Telegram 账号访问权限,必须安全保管、切勿分享。
  • exec 审批:OpenClaw 默认阻止未知 CLI 命令,用户必须先审批 tg-reader 命令。审批提示出现在 Control UI 或机器人消息中(不在 agent 对话里)。若命令挂起或用户称无反应,很可能是审批待处理。
  • 未读追踪仅到帖子级别——已读帖子的新评论不会被捕获。
  • 频道更改用户名会导致追踪重置(状态以用户名为键)。
  • 同一频道的并发运行是安全的,但以最后写入者为准。
  • 图片/视频不做分析(无 OCR/视觉),只返回文本/说明文字(caption);评论中的图片/视频也不分析,只抓取文本。
  • from_user 对匿名评论可能为 null。
  • comments_available: false 表示频道无关联讨论群(无法评论);某条消息上的 comments_error 表示该帖评论触及速率限制。
  • --comments 与多频道同时使用会报错。
  • 会话过期时:rm -f ~/.tg-reader-session.session 后重新运行 tg-reader auth。验证码未收到时可用 python3 debug_auth.py 获取完整 MTProto 日志(该脚本会先删除现有会话文件,并会先请求确认)。
  • 定时任务:Option A(sessionTarget: "main",推荐)由 cron 向主 agent 会话发送提醒,agent 在已有技能/凭据/会话的环境中执行;Option B(sessionTarget: "isolated")在 Docker 容器中运行,完全自主,但容器初始为空,需要安装与挂载会话文件,且会话文件与机器绑定,Telegram 可能在新环境使其失效,可能不可靠。
  • 错误带有 error_type 和 action 字段。频道错误类型包括:access_denied、banned、not_found、invite_expired、flood_wait(≤60 秒等待会自动重试,更长等待返回该错误)、comments_multi_channel。系统错误包括:会话文件未找到、缺少凭据、命令未找到、AUTH_KEY_UNREGISTERED(会话过期)。
  • 关于该技能的收费、价格与平台支持等信息,资料暂未提供。