关于 telegram
面向金融研究的只读 Telegram skill,借助 tdl 浏览频道和群组消息、筛选新闻并导出历史记录。它不执行发送或其他写入操作。
主要功能
- 01列出并筛选聊天与频道
- 02按数量、时间或 ID 导出消息
- 03导出主题帖与消息内容
- 04检查登录状态并指导认证
适用场景
- 01汇总金融新闻频道的最新消息
- 02按日期范围提取市场研究记录
- 03查找频道并查看消息来源
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ himself65/ finance-skills --skill telegram安装后在 Claude Code 中输入/telegram确认已加载。
附带文件README.mdreferences/commands.md
详细介绍
Telegram 新闻技能(只读)
使用 Telegram CLI 工具 tdl 读取 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 默认使用 curl 脚本。
第 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 命令参考
需要准确的命令语法或详细的标志说明时,请阅读参考文件。