mcpField
T
telegram-reader

telegram-reader

github.com/himself65生产力3.5k1.7k 次安装3 天前更新
代码仓库

关于 telegram-reader

telegram-reader 是通过 tdl 读取 Telegram 频道和群组的只读技能,面向金融新闻与市场研究。它指导查找聊天、导出消息并整理相关信息。

主要功能

  1. 01检查 tdl 安装和登录状态
  2. 02列出并筛选聊天与频道
  3. 03按数量、时间、ID 或主题导出消息
  4. 04读取导出的消息内容
  5. 05按时间和来源整理新闻

适用场景

  1. 01查看金融频道的近期消息
  2. 02导出指定日期范围内的消息
  3. 03对比多个 Telegram 频道的市场动态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/himself65/finance-skills --skill telegram-reader

安装后在 Claude Code 中输入/telegram-reader确认已加载。

附带文件README.mdreferences/commands.md

详细介绍

Telegram 新闻技能(只读)

如果宿主尚未执行下面的 shell 探测(例如在 Codex 中),请先使用其 shell 工具运行 ! 包裹的命令,再选择设置方式。请根据实际输出操作;如果无法访问 shell,请说明此限制。

使用 tdl(Telegram 命令行工具)读取 Telegram 频道和群组中的财经新闻与市场研究内容。

此技能为只读。 它专为财经研究而设计:读取频道消息、监控财经新闻频道,以及导出消息历史记录。不支持发送消息、加入或退出频道,也不支持任何写入操作。


步骤 1:确保已安装 tdl

当前环境状态:

!`(command -v tdl && tdl version 2>&1 | head -3 || echo "TDL_NOT_INSTALLED") 2>/dev/null`

如果上方状态显示版本号,则表示已安装 tdl — 跳到步骤 2。

如果显示 TDL_NOT_INSTALLED,请根据用户的平台安装 tdl:

平台安装命令
macOS / Linuxcurl -sSL https://docs.iyear.me/tdl/install.sh | sudo bash
macOS(Homebrew)brew install telegram-downloader
Linux(Termux)pkg install tdl
Linux(AUR)yay -S tdl
Linux(Nix)nix-env -iA nixos.tdl
Go(任何平台)go install github.com/iyear/tdl@latest

在 macOS 上优先使用 Homebrew。在 Linux 上,安装脚本会使用 sudo 运行,因此使用前请先征得用户同意,或改用其包管理器。


步骤 2:确保 tdl 已通过身份验证

当前身份验证状态:

!`(tdl chat ls --limit 1 2>&1 >/dev/null && echo "AUTH_OK" || echo "AUTH_NEEDED") 2>/dev/null`

如果显示 AUTH_OK,跳到步骤 3。

如果显示 AUTH_NEEDED,请引导用户登录。登录需要交互式输入 — 用户必须手动输入电话号码和验证码。

登录方式

方式 A:二维码(推荐 — 最快)

tdl login -T qr

终端会显示二维码。用户使用 Telegram 移动应用扫描二维码(设置 > 设备 > 关联桌面设备)。

方式 B:手机号 + 验证码

tdl login -T code

用户输入电话号码,然后输入发送到其 Telegram 应用的验证码。

方式 C:从 Telegram Desktop 导入

如果用户已安装并登录 Telegram Desktop:

tdl login

此操作会从现有桌面客户端导入会话。桌面客户端必须来自官方网站,不能来自 App Store 或 Microsoft Store。

命名空间

默认情况下,tdl 使用 default 命名空间。要管理多个账户:

tdl login -n work -T qr      # Login to "work" namespace
tdl chat ls -n work           # Use "work" namespace for commands
重要的登录说明
  • 登录是一次性操作。成功登录后,会话会持久保存在磁盘上。
  • 如果登录失败,请让用户检查网络连接并重试。
  • 切勿以编程方式索取或处理 Telegram 密码/2FA 验证码 — 始终让用户通过交互方式自行输入。

步骤 3:确认用户的需求

根据用户的请求,选择以下其中一项只读操作。

用户请求命令关键标志
列出所有聊天/频道tdl chat ls-o json、-f "FILTER"
仅列出频道tdl chat ls -f "Type contains 'channel'"-o json
导出最近的消息tdl chat export -c CHAT -T last -i N--all、--with-content
按时间范围导出消息tdl chat export -c CHAT -T time -i START,END--all、--with-content
按 ID 范围导出消息tdl chat export -c CHAT -T id -i FROM,TO--all、--with-content
从话题/讨论串导出tdl chat export -c CHAT --topic TOPIC_ID--all、--with-content
按名称搜索频道tdl chat ls -f "VisibleName contains 'NAME'"-o json
聊天标识符

-c 标志接受多种格式:

格式示例
用户名(带 @)-c @channel_name
用户名(不带 @)-c channel_name
数字聊天 ID-c 123456789
公开链接-c https://t.me/channel_name
电话号码-c "+1 123456789"
已保存的消息-c ""(空)

步骤 4:执行命令

列出聊天
# List all chats
tdl chat ls

# JSON output for processing
tdl chat ls -o json

# Filter for channels only
tdl chat ls -f "Type contains 'channel'"

# Search by name
tdl chat ls -f "VisibleName contains 'Bloomberg'"
导出消息

始终使用 --all --with-content 获取文本消息(而不只是媒体):

# Last 20 messages from a channel
tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json

# Messages from a time range (Unix timestamps)
tdl chat export -c @channel_name -T time -i 1710288000,1710374400 --all --with-content -o /tmp/tdl-export.json

# Messages by ID range
tdl chat export -c @channel_name -T id -i 100,200 --all --with-content -o /tmp/tdl-export.json
关键规则
  1. 先检查身份验证 — 在运行其他命令前,先运行 tdl chat ls --limit 1,确认会话有效
  2. 导出消息供阅读时始终使用 --all --with-content — 不加这些标志,tdl 只会导出媒体消息
  3. 使用 -o FILE 将导出内容保存到文件,然后读取 JSON — 这比解析标准输出更可靠
  4. 从小规模导出开始 — 除非用户要求更多,否则使用 -T last -i 20
  5. 在 chat ls 中使用筛选条件,帮助用户在导出前找到正确的频道
  6. 只读 — 不要发送消息、加入或离开频道,也不要修改任何内容
  7. 转换时间戳 — 用户提供日期时,将其转换为 Unix 时间戳,以用于 -T time 筛选条件
处理导出的 JSON

导出后,读取 JSON 文件并提取相关信息:

# Export messages
tdl chat export -c @channel_name -T last -i 20 --all --with-content -o /tmp/tdl-export.json

# Read and process the export
cat /tmp/tdl-export.json

导出的 JSON 包含消息对象,其字段包括 id、date、message(文本内容)、from_id、views 和媒体元数据。


步骤 5:呈现结果

优先呈现最相关的新闻或市场动态,而不是直接罗列原始数据。为每条消息注明时间戳和来源频道,将来自多个频道的消息按主题分组(宏观、财报、加密货币),并指出突发新闻、目标价和超预期财报。列出频道时,显示名称、成员数和类型。


步骤 6:诊断

如果遇到问题:

错误原因解决方法
not authorized 或会话错误尚未登录或会话已过期运行 tdl login -T qr 重新进行身份验证
FLOOD_WAIT_X被 Telegram 限流等待 X 秒后重试
CHANNEL_PRIVATE无权访问该频道用户必须先在 Telegram 应用中加入该频道
tdl: command not found未安装 tdl按照步骤 1 进行安装

参考文件

  • references/commands.md — 用于读取频道和导出消息的完整 tdl 命令参考

需要准确的命令语法或标志详细说明时,请阅读参考文件。

评论

支持 Markdown