关于 telegram-reader
telegram-reader 是通过 tdl 读取 Telegram 频道和群组的只读技能,面向金融新闻与市场研究。它指导查找聊天、导出消息并整理相关信息。
主要功能
- 01检查 tdl 安装和登录状态
- 02列出并筛选聊天与频道
- 03按数量、时间、ID 或主题导出消息
- 04读取导出的消息内容
- 05按时间和来源整理新闻
适用场景
- 01查看金融频道的近期消息
- 02导出指定日期范围内的消息
- 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 / Linux | curl -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
关键规则
- 先检查身份验证 — 在运行其他命令前,先运行
tdl chat ls --limit 1,确认会话有效 - 导出消息供阅读时始终使用
--all --with-content— 不加这些标志,tdl 只会导出媒体消息 - 使用
-o FILE将导出内容保存到文件,然后读取 JSON — 这比解析标准输出更可靠 - 从小规模导出开始 — 除非用户要求更多,否则使用
-T last -i 20 - 在
chat ls中使用筛选条件,帮助用户在导出前找到正确的频道 - 只读 — 不要发送消息、加入或离开频道,也不要修改任何内容
- 转换时间戳 — 用户提供日期时,将其转换为 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 命令参考
需要准确的命令语法或标志详细说明时,请阅读参考文件。