mcpField
T
telegram

telegram

github.com/himself65生产力3.5k53 次安装5 天前更新
代码仓库

关于 telegram

面向金融研究的只读 Telegram skill,借助 tdl 浏览频道和群组消息、筛选新闻并导出历史记录。它不执行发送或其他写入操作。

主要功能

  1. 01列出并筛选聊天与频道
  2. 02按数量、时间或 ID 导出消息
  3. 03导出主题帖与消息内容
  4. 04检查登录状态并指导认证

适用场景

  1. 01汇总金融新闻频道的最新消息
  2. 02按日期范围提取市场研究记录
  3. 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 / 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 默认使用 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
关键规则
  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 步:呈现结果

获取数据后,清晰地呈现结果,以便进行金融研究:

  1. 总结关键信息 — 突出显示最相关的新闻或市场动态
  2. 包含时间戳 — 显示每条消息的发布时间
  3. 按主题分组 — 如果涉及多个频道,按主题整理(宏观经济、财报、加密货币等)
  4. 标记可操作信息 — 注明突发新闻、目标价、业绩意外等
  5. 提供频道背景信息 — 说明每条消息来自哪个频道或群组
  6. 对于频道列表,显示频道名称、成员数和类型

第 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