# telegram channel scraper api：Claude 每天汇总俄语频道报价

> 用 Claude 每天汇总俄语批发和货代 Telegram 频道的新品与报价变化；实测 24 次调用，10 个频道接口费每月约 0.18 美元。

- Canonical page: https://everyinfra.com/blog/telegram-channel-scraper-api-claude-russian-sellers
- Published: 2026-11-10T01:31:00+08:00 · Fact-checked: 2026-11-10T01:30:00+08:00

俄语区的手机批发商和货代，很多不建网站、不上平台，新到的货和当天的报价就发在公开 Telegram 频道里。把这些帖子里的价格抽出来按型号比，我们得到三个发现：同一个批发频道里，iPhone 18 Pro 256 GB 黑色港版的单台零售价 47 天跌了 7.2%；如果把同一帖里便宜的纯 eSIM 版混进来比，会算成跌 15.7%，夸大一倍多；另一家批发平台用「у.е.」（约定单位）报价，反推出的汇率比俄罗斯央行当天的美元官方汇率高 3.9%。所以每日摘要的价值不在「抓下来」，而在按同一型号、同一规格、同一单位去比。

样本是四个公开频道。我们在新加坡时间 2026 年 11 月 10 日 00:14 到 00:39 之间，用 EveryInfra 的 `telegram/channel_posts`、`telegram/search` 等能力做了 24 次真调，扣费 17 次，合计 0.010285 美元。下面按选路、配置、真实往返、分页、抽取、成本、定时的顺序写。

> **本文要点**
>
> - `telegram/channel_posts` 一次最多 200 条，没有翻页参数也没有日期参数；实测 limit=200 拉回 200 条，最早一条是 2026-02-22，按次收 0.000556 美元，折合每千条 0.00278 美元。
> - 10 个频道每天各拉一次、再加一次关键词搜索，每月接口费约 0.18 美元；失败、空结果和参数错误都没有扣费。
> - Telegram Bot API 只收到机器人所在频道的消息；自写 MTProto 解析器要用手机号登录、自己处理 FLOOD_WAIT。读的是别人的公开频道、又不想养账号时，按次调用的接口最省事。
> - 价格比较一定要按型号、存储、版本（实体卡还是 eSIM）、单位对齐；混着比，47 天的跌幅会从 7.2% 变成 15.7%。
> - Claude Code 云端定时任务要用连接器，不能用本机 `claude mcp add` 加的服务器；连接器的流量走 Anthropic 的服务器，不用把接口域名加进网络白名单。

## 这件活是什么：俄语卖家和货代的 Telegram 频道每天在发什么

做跨境采购、比价或者货代询价的人，经常要盯一批俄语公开频道：手机和电子产品批发商每天贴一长串型号和价格，货代每周贴几条中欧班列、海铁联运的运价和时效，还有一些行业号定期发集装箱运价指数。这些频道更新频率差别很大，帖子格式五花八门，有的价格写在正文里，有的整张价目表是一张图。人工每天翻一遍很费时间，而且最要紧的信息恰恰是「变化」：哪个型号降价了，哪条线涨了，哪家开始用另一种货币报价。

我们挑了四个公开频道做样本，频道名都是公开的商业账号，帖子里出现的个人联系方式和经理用户名在本文一律不写。`boxb2b` 是一家手机批发和零售商（频道标题写的是「BOX - Телефоны опт и розница」），我们用 `telegram/profile` 读到它有 70,200 个订阅者；`linktek` 自称在迪拜、中国、莫斯科做苹果产品批发（标题「LINKTECH - оптовая платформа Apple」），订阅者 11,700；`logistved` 是一个写中俄物流的货代频道，频道标题叫「ЛОГИСТ」；`teustat` 是一个集装箱运价平台的频道。四个频道都不是认证账号，`is_verified` 都是 false。`telegram/profile` 还会返回频道历史上的媒体总数：`boxb2b` 共发过 370 张图片、218 段视频；`linktek` 是 18,100 张图片、4,190 段视频、15,000 条链接，量级差了几十倍，后面会看到，这决定了一次 200 条能回溯多远。

| 频道 | 类型 | 实测帖数与时间跨度 | 平均每天 | 媒体构成 | 价格写在哪 |
| --- | --- | --- | --- | --- | --- |
| boxb2b | 手机批发与零售 | 200 条，2026-02-22 到 2026-11-09 | 0.77 条 | 视频 89、图片 82、纯文本 29 | 正文逐行写型号和卢布价，129 条带价格 |
| linktek | 苹果产品批发平台 | 50 条，2026-11-04 到 2026-11-09 | 9.49 条 | 图片 32、纯文本 10、视频 8 | 正文写「у.е. / 卢布」两种价，40 条带价格 |
| logistved | 货代资讯 | 50 条，2026-10-20 到 2026-11-09 | 2.48 条 | 纯文本 44 | 正文写运价区间和时效 |
| teustat | 集装箱运价平台 | 50 条，2026-09-11 到 2026-11-09 | 0.85 条 | 图片 44 | 大多在图里，正文只有短标题 |

这张表来自新加坡时间 00:17 到 00:18 的四次 `telegram/channel_posts` 调用，每个数字都能在保存下来的原始响应里复算。表里最需要注意的是最后一列：同样是「报价频道」，`linktek` 和 `boxb2b` 的价格在文字里，正则就能抽；`teustat` 50 条里 44 条是图片，文字只有一两句说明，想要图里的运价表就得另外读图。摘要流程要先按频道分类，不能一套规则吃到底。

![横向柱状图：四个频道平均每天发帖数，linktek 9.49 条最多，logistved 2.48 条，teustat 0.85 条，boxb2b 0.77 条；同一次拉取覆盖的天数相应从 5.3 天到 260 天不等](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-05-cadence-bar.zh.light.svg)

更新频率决定了每天要拉多少条。`linktek` 一天将近 10 条，limit 设 20 大约覆盖两天；`boxb2b` 不到一天一条，limit 20 能回溯一个多月。所以「每天拉一次、每次 20 条、按帖子编号去重」对这四个频道都够用，不需要每次拉 200 条。

## 三条路：Bot API、自写 MTProto 的 telegram api parser、按次调用的 telegram channel scraper api

读 Telegram 公开频道，常见的有三条路。第一条是 Telegram 的 Bot API，用 BotFather 建一个机器人，用 HTTP 接口收消息。第二条是自己写一个基于 MTProto 的解析器，也就是俄语社区常说的「парсер」，一般用 Python 的 Telethon 库，以一个真实用户账号的身份读频道历史。第三条是本文用的办法：调用一个按次计费的数据接口，传频道名，拿回结构化的帖子列表。

![示意插图，三条并排的路径。左边一个机器人拿着钥匙站在几扇门前，只有自己加入过的门是开的；中间一个人背对画面，被一条链子拴在服务器旁，旁边有一只秒表；右边一根青绿色管子从公告板直接把纸条送进一个收纳盒。](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/img-explain.webp)

三条路各自的门槛：机器人要先进频道，用户账号要登录并处理限速，按次调用只要频道名。

Bot API 的限制写在 Telegram 自己的机器人常见问题里。「我的机器人会收到哪些消息」一节列出的最后一类是来自它所在频道的全部消息（[Bots FAQ](https://core.telegram.org/bots/faq)）。换句话说，机器人只能读它加入了的频道。Stack Overflow 上一个被大量引用的回答说得更直接：没有管理员权限就收不到频道消息（[Stack Overflow 45002999](https://stackoverflow.com/questions/45002999/how-to-add-telegram-bot-to-public-channel-im-not-admin-of)），python-telegram-bot 社区的讨论也是同样结论：机器人进频道只能以管理员身份（[python-telegram-bot 讨论 3047](https://github.com/python-telegram-bot/python-telegram-bot/discussions/3047)）。你不可能去别人的批发频道当管理员，所以 Bot API 这条路对「盯别人的公开频道」基本走不通；它适合的是你自己的频道，或者对方愿意把你的机器人加进去。

![截图：Telegram 官方 Bots FAQ 页面「What messages will my bot get?」一节，列出机器人能收到的几类消息，最后一行「All messages from channels where they are a member」用青绿色框标出](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/img-shot-bot-faq.webp)

机器人只收它所在频道的消息，这一句决定了 Bot API 读不了别人的频道。 [Telegram Bots FAQ，2026-11-10 截图](https://core.telegram.org/bots/faq)

MTProto 这条路能读任何公开频道的历史，但门槛在账号。Telegram 的「获取 api_id」页面写明，要先用官方应用注册一个账号，再到 my.telegram.org 的开发者工具里创建应用，拿到 api_id 和 api_hash；每个手机号只能有一个 api_id；页面还警告，用非官方客户端的账号会被重点观察，刷消息、伪造浏览量的账号会被永久封禁（[Obtaining api_id](https://core.telegram.org/api/obtaining_api_id)）。Telethon 的入门文档第一步就是「用开发者账号的手机号登录 Telegram」，然后把 api_id 和 api_hash 填进 `TelegramClient`（[Telethon 登录文档](https://docs.telethon.dev/en/stable/basic/signing-in.html)）。读频道历史用的是 `messages.getHistory` 方法，按 `offset_id` 和 `add_offset` 一页一页往回翻（[messages.getHistory](https://core.telegram.org/method/messages.getHistory)）。翻得太快，服务器会回 `420 FLOOD_WAIT_X`，X 是要等的秒数（[Telegram 错误码文档](https://core.telegram.org/api/errors)）。Stack Overflow 上有人问怎么避免 Telethon 的 FloodWaitError，高票回答是唯一的办法就是少发请求，而且每个账号的限额不一样（[Stack Overflow 76198570](https://stackoverflow.com/questions/76198570/python-telethon-how-can-you-prevent-the-floodwaiterror-error-or-reduce-its-tim)）。Telethon 的 FAQ 也专门有一节讲账号被封的问题（[Telethon FAQ](https://docs.telethon.dev/en/stable/quick-references/faq.html)）。

还有一个容易被忽略的点：MTProto 里的全局帖子搜索是收费的。Telegram 的搜索文档写着，全局帖子搜索要付费，Premium 用户有一定免费次数，用完以后每次搜索要花一定数量的 Stars（[Telegram 搜索文档](https://core.telegram.org/api/search)）。自写解析器如果想「按关键词找新频道」，这部分不是免费的。

![截图：Telegram API 搜索文档中关于全局帖子搜索的段落，「Global post searches are paid」一句用青绿色框标出，后文说明 Premium 用户有免费额度、超出后每次搜索花费 Stars](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/img-shot-search-paid.webp)

MTProto 的全局帖子搜索按次收 Stars，自写解析器做「找频道」也有成本。 [Telegram API 文档 Search，2026-11-10 截图](https://core.telegram.org/api/search)

| 对比项 | Telegram Bot API | 自写 MTProto 解析器（如 Telethon） | 按次调用的数据接口（本文） |
| --- | --- | --- | --- |
| 能读哪些频道 | 只有机器人加入的频道（Bots FAQ） | 账号能看到的公开频道和已加入的私密频道 | 公开频道；私密邀请链接回空结果，不扣费（实测） |
| 身份和登录 | BotFather 给的 token，不用手机号 | 真实手机号注册、my.telegram.org 拿 api_id，一个号一个 api_id | 一个接口 Key |
| 历史消息 | 只收加入后的新消息；getUpdates 的更新最多保留 24 小时 | `messages.getHistory` 按 offset 往回翻 | 一次最多 200 条最新帖子，没有翻页参数 |
| 限速 | 按机器人 | 420 FLOOD_WAIT，按账号不同 | 按 Key，每分钟次数固定，429 带等待秒数 |
| 关键词找频道 | 不支持 | 全局帖子搜索收 Stars | `telegram/search`，每次 0.000556 美元 |
| 费用 | 免费 | 软件免费，账号和服务器自理 | 每次 0.000556 美元（`post_detail` 0.000806 美元） |
| 接进 Claude | 自己写 MCP 服务器 | 自己写 MCP 服务器，还要管登录会话文件 | 现成远程 MCP 地址，填进连接器即可 |

表里 Bot API 的「24 小时」来自 Bot API 文档对 `getUpdates` 的说明：未取走的更新不会保存超过 24 小时（[Bot API 文档](https://core.telegram.org/bots/api)）。如果你的机器人确实在频道里，正确做法是设 webhook 或者常驻进程实时接 `channel_post` 更新，python-telegram-bot 的 `Update` 对象里就有 `channel_post` 和 `edited_channel_post` 两个字段（[python-telegram-bot Update 文档](https://docs.python-telegram-bot.org/en/stable/telegram.update.html)）。需要传大文件的团队还可以自建 Bot API 服务器，官方开源的 `telegram-bot-api` 在本地模式下下载文件不限大小、上传最多 2000 MB（[tdlib/telegram-bot-api](https://github.com/tdlib/telegram-bot-api)）。

哪条路适合谁，可以按四种情况分。第一，频道是你自己的，或者合作方愿意加你的机器人当管理员，用 Bot API：免费、实时、Telegram 原生支持，不需要任何第三方。第二，你要读的是你已经加入的私密群或私密频道，只能用 MTProto 自写解析器，按次调用的接口读不了私密邀请链接。第三，你要的是秒级实时推送，比如抢单、抢舱位，常驻的 MTProto 客户端或者机器人比每天拉一次合适。第四，你团队里有人熟悉 Telethon，愿意养账号、处理会话文件和限速，而且频道数量上千，自写解析器的边际成本更低。按次调用的接口适合剩下这一类：要读的是别人的公开频道，几个到几百个，每天看一两次变化，不想为此注册手机号、不想维护登录状态。Telethon 本身很活跃，GitHub 上有 1.2 万多颗星（[LonamiWebs/Telethon](https://github.com/LonamiWebs/Telethon)），PyPI 上最新的 1.45.0 发布于 2026 年 9 月 10 日（[PyPI Telethon](https://pypi.org/project/Telethon/)）；另一个曾经流行的 MTProto 库 Pyrogram 已在 2024 年 12 月 23 日归档，仓库首页写明不再维护（[pyrogram/pyrogram](https://github.com/pyrogram/pyrogram)）。

## 在 Claude 里接上：自定义连接器和 Claude Code 的配置示例

这一节和后面讲定时的一节，Claude 一侧的功能都按 Anthropic 官方文档写，我们本机没跑过的步骤标成「配置示例」。Claude 本身不会去抓 Telegram，要让它调数据接口，得给它一个远程 MCP 服务器。Claude 网页版和桌面版里叫「自定义连接器」。Anthropic 帮助中心在 2026 年 10 月 30 日更新的说明里，步骤是：进入 Customize，打开 Connectors，点「+ Add」，选「Add custom connector」，填一个名字和服务器地址（[自定义连接器文档](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp)）。同一篇还说明了两点：连接从 Anthropic 的云端发起，所以服务器必须能从公网访问；认证可以用 API key 或固定凭据。Anthropic 公布了这些出站请求的 IP 段，做白名单时可以对照（[Anthropic IP 地址文档](https://platform.claude.com/docs/en/api/ip-addresses)）。

可用档位方面，2026 年 11 月 6 日更新的「使用连接器」一文写明，自定义连接器在 Free、Pro、Max、Ultra、Team、Enterprise 各档都能用；连接器多了以后，可以在「Tool access」里选 Auto 或 On demand，文中建议连接器到 10 个以上时考虑按需加载（[使用连接器文档](https://support.claude.com/en/articles/11176164-use-connectors-to-extend-claude-s-capabilities)）。每次对话可以在输入框的「+」里打开或关闭某个连接器。本机只跑 MCP 服务器的另一种方式是桌面扩展，帮助中心有单独的说明（[本地 MCP 文档](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)），但本文要的是定时在云端跑，所以用远程连接器。

Claude Code 一侧，接远程 MCP 用 `claude mcp add --transport http`，可以带请求头（[Claude Code MCP 文档](https://code.claude.com/docs/en/mcp)）。下面是配置示例，Key 放在环境变量里，不写进文件：

```bash
# 配置示例：把 EveryInfra 远程 MCP 加进本机 Claude Code
claude mcp add --transport http everyinfra https://api.everyinfra.com/mcp \
  --header "Authorization: Bearer $EVERYINFRA_API_KEY"

# 不经过 Claude，直接用 curl 调一次 channel_posts，确认 Key 和参数没问题
curl -s https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"telegram","action":"channel_posts","params":{"username":"boxb2b","limit":20}}'
```

这里有一个关键限制要提前知道。Claude Code 的云端定时任务文档写明：用 `claude mcp add` 加的 MCP 服务器只存在本机，云端定时任务用不到；要在定时任务里用，得把它加成 claude.ai 的连接器，或者写进仓库里的 `.mcp.json`（[Claude Code 云端定时任务文档](https://code.claude.com/docs/en/routines)）。如果走仓库文件，写法大致如下，同样是配置示例，Key 用环境变量展开：

```text
{
  "mcpServers": {
    "everyinfra": {
      "type": "http",
      "url": "https://api.everyinfra.com/mcp",
      "headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" }
    }
  }
}
```

两种写法我们更推荐连接器：云端环境文档有一条说明，会话或定时任务里启用的 MCP 连接器，不需要把它的域名加进「Allowed domains」，因为连接器的流量走 Anthropic 的服务器，而不是会话自己的网络（[云端环境文档](https://code.claude.com/docs/en/cloud-environments)）。反过来，如果你让定时任务里的 Claude 直接用 curl 调接口，默认的「Trusted」网络级别只放行包管理源和白名单域名，你得把环境改成 Custom 并加上接口域名，Key 则存成 network secret。连接器省掉了这两步。

![动态流程图，六步排成两行：频道清单、按频道调 channel_posts、按帖子编号去重、抽出型号和价格、和昨天的价格比、写成日报；第二行末尾回到第一行开头，表示每天重复](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-02-digest-flow.zh.light.svg)

图里的六步中，第二、三、四步可以完全不经过模型，模型只负责第四步里正则抽不准的那部分和第六步的写作。

## 一次真实往返：Claude 发出什么调用，接口回了什么

我们用同一把 Key 直接走了一遍 MCP 握手，模拟连接器在 Claude 里做的事。新加坡时间 00:26:27 发 `initialize`，服务器在 0.135 秒内回了协议版本 2025-06-18，这是 MCP 规范里 Streamable HTTP 传输所在的版本（[MCP 传输规范](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports)）。接着 `tools/list` 用 0.094 秒回了 12 个工具，列表本身 16,250 字节（[MCP 工具规范](https://modelcontextprotocol.io/specification/2025-06-18/server/tools)）。和本文有关的是三个：`everyinfra_list_capabilities` 列出能力和参数，`everyinfra_call_api` 调一项能力，`everyinfra_get_job` 取异步任务结果。

新加坡时间 00:26:28 发出 `tools/call`，让它读 `boxb2b` 最新 5 条帖子。这就是 Claude 在对话里决定调用工具时发出的请求形状：

```text
{"jsonrpc":"2.0","id":3,"method":"tools/call",
 "params":{"name":"everyinfra_call_api",
  "arguments":{"platform":"telegram","action":"channel_posts",
               "params":{"username":"boxb2b","limit":5}}}}
```

| MCP 步骤 | 新加坡时间 | 用时（秒） | 大小与结果 |
| --- | --- | --- | --- |
| initialize | 00:26:27 | 0.135 | 协议版本 2025-06-18 |
| tools/list | 00:26:28 | 0.094 | 16,250 字节，12 个工具 |
| tools/call，channel_posts limit 5 | 00:26:28 | 8.313 | 9,698 字节，5 条帖子，0.000556 美元 |

返回的第一条就是 11 月 9 日那份每日价单，节选如下（正文截断，只保留结构）：

```text
{"id":"req_8529285a194244d8","platform":"telegram","action":"channel_posts",
 "results":[{"id":2655,"url":"https://t.me/boxb2b/2655",
   "channel_username":"boxb2b","channel_title":"BOX - Телефоны опт и розница",
   "text":"Ежедневное обновление: 09.11 ... 18 Pro 256 Black (eSim) - 112.000₽ ... 18 Pro 256 Black (sim) - 123.300₽ ...",
   "view_count":2510,"posted_at":"2026-11-09T07:22:04+00:00","media_type":"text",
   "reactions":[{"count":7,"is_paid":false},{"count":1,"is_paid":false}]}, …],
 "count":5,"billing":{"charged":true,"charged_usd":0.000556}}
```

![截图：一张接口返回卡片，显示 telegram/channel_posts 对 linktek 频道的一条帖子，编号 37606，发布于 2026-11-05，正文是港版 iPhone 18 Pro 系列的批发价，每行同时写 у.е. 和卢布两种价格，价格行用青绿色高亮；卡片底部显示 charged_usd 0.000556](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/img-shot-api-linktek.webp)

一条批发帖的原始返回：同一行里写两种单位，这是后面反推汇率的依据。 [EveryInfra 接口真实返回，2026-11-10 00:18 新加坡时间](https://everyinfra.com/telegram-api/channel_posts)

目录里给 `telegram/channel_posts` 列了 16 个返回字段（[能力目录](https://api.everyinfra.com/api/v1/social/catalog)）。实际有没有值，要看频道本身。我们把四个频道 350 条帖子逐字段数了一遍：

| 字段 | 含义 | 实测有值的比例 | 摘要里怎么用 |
| --- | --- | --- | --- |
| `id`、`url` | 帖子编号和链接 | 350 / 350 | 去重的主键；日报里每条价格都带回原帖链接 |
| `channel_username`、`channel_title` | 频道名和标题 | 350 / 350 | 分组 |
| `posted_at` | 发帖时间，UTC | 350 / 350 | 判断「今天的新帖」；莫斯科时间要加 3 小时 |
| `text` | 正文 | 324 / 350 | 抽价格的原料；26 条是没有文字的纯图片或视频 |
| `view_count` | 浏览量 | 349 / 350 | 判断哪条报价被看得多 |
| `media_type`、`media_url` | 媒体类型和链接 | 347 / 350；259 / 350 | `teustat` 的运价表在图里，要靠这个链接去读图 |
| `reactions` | 表情回应 | 299 / 350 | 可选 |
| `reply_to_url`、`link_preview_url` | 回复的原帖、链接预览 | 17 / 350；44 / 350 | 追溯「补充说明」类帖子 |
| `author`、`is_forwarded`、`forwarded_from` | 发送者和转发来源 | 0 / 350 | 频道以频道身份发帖，这四个频道没有转发，所以全空 |

目录的字段说明里有一句：其他来源不可用时，结果会来自一个不返回 `media_url` 和 `reactions` 的备用来源。实测里 `linktek` 50 条只有 1 条带 `reactions`，大概就是这种情况，所以摘要逻辑不要依赖这两个字段一定存在。`posted_at` 统一是 UTC，比如 `linktek` 37606 号帖的时间是 08:50:51 UTC，也就是莫斯科时间 11:50；日报按莫斯科时间切「今天」更符合这些卖家的作息。

![散点图：24 次调用的用时，成功调用在 5.3 到 17.6 秒之间，中位数 10.44 秒；搜索类普遍比频道帖子慢；私密邀请链接 29.4 秒、不存在的频道 87.3 秒，都是空结果不扣费；四次 post_detail 和一次参数错误在 1 秒内返回](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-09-latency-scatter.zh.light.svg)

用时方面，17 次成功扣费的调用里，最快 5.264 秒，最慢 17.613 秒，中位数 10.44 秒，达到了我们动笔前定的「中位数不超过 20 秒」。搜索普遍比读频道慢，六次搜索在 11 到 18 秒之间。两次空结果最慢：一个格式正确但无效的私密邀请链接等了 29.4 秒，一个不存在的频道名等了 87.3 秒，两次都没扣费。所以定时任务里给每个频道留 2 分钟超时是合理的，一个频道失败不影响其他频道。

## 分页和条数：channel_posts 没有翻页参数，limit 怎么选

很多人搜「telegram api parser」时最关心的是能不能把一个频道的历史全拉下来。先说结论：`telegram/channel_posts` 只有两个参数，`username` 和 `limit`，`limit` 默认 20、最多 200，没有 `page_token`，也没有按日期筛选。我们故意传了一个 `since` 参数试探，新加坡时间 00:22 接口回了 422，错误信息原文是 `since` 不是 `telegram/channel_posts` 的参数，必填 `username`、可选 `limit`，并附了一个可以直接用的示例请求；这次没扣费。日期筛选只在 `telegram/search` 上有，它接受 `keyword`、`since`、`until`，单次最多 100 条。

limit=200 实际能拿到多少？新加坡时间 00:17 对 `boxb2b` 发 limit=200，回来正好 200 条，最早一条是 2026 年 2 月 22 日，最新一条是 11 月 9 日，跨度 260 天，原始 JSON 共 217,994 字符，用时 14.0 秒。同一时段对另外三个频道各拉 50 条，用时在 6.6 到 10.4 秒之间；条数多了三倍，用时只多了三到七秒，所以首次建基线时直接用 limit=200 不会拖慢多少。也就是说，对一个更新不频繁的频道，一次调用就能拿到大半年的历史，这对首次建立「价格基线」很有用。对 `linktek` 这样每天近 10 条的频道，200 条也只能回溯三周左右，更早的历史这个能力拿不到；需要深历史的，只能走 MTProto 自写解析器按 `offset_id` 往回翻。

每次调用按次收费，和 limit 无关，所以单价摊到每条帖子上，limit 越大越便宜：limit 20 折合每千条 0.0278 美元，50 是 0.01112 美元，100 是 0.00556 美元，200 是 0.00278 美元。我们动笔前定的目标是「每千条不超过 0.005 美元」，只有 limit 200 达标。但每日摘要的场景里，真正的单位不是「每千条」，而是「每个频道每天一次」：不管频道今天发了 1 条还是 10 条，你都付一次 0.000556 美元。

![柱状图：四个频道每条帖子在返回里平均占多少字符，logistved 1,497、linktek 1,366、boxb2b 1,090、teustat 985；按 Claude Code 5 万字符落盘线，一次返回能装下的帖子数分别是 33、36、45、50 条](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-06-payload-bar.zh.light.svg)

limit 还有一个上限来自 Claude 这边。Claude Code 的 MCP 文档写明：工具输出超过 1 万 token 会给警告，默认上限是 2.5 万 token，可以用 `MAX_MCP_OUTPUT_TOKENS` 调高；结果超过 5 万字符时会存进文件，而不是直接放进上下文（[Claude Code MCP 文档](https://code.claude.com/docs/en/mcp)）。按实测每条帖子在返回里占的字符数，5 万字符装得下 `logistved` 33 条、`linktek` 36 条、`boxb2b` 45 条、`teustat` 50 条。所以在 Claude 里让模型直接调工具时，limit 设 20 到 30 最稳；要拉 200 条做基线，就在脚本里调接口、把结果写文件，再让 Claude 读文件。

去重必须做。新加坡时间 00:30 我们对 `linktek` 再拉一次 limit=20，20 条全部是 12 分钟前那次已经拿到的，新帖 0 条；00:39 对 `boxb2b` 和 `logistved` 各拉 20 条，也都是 0 条新帖。按帖子编号 `id`（同一频道内唯一）记一个「见过」的集合，每天只把新编号交给后面的步骤，模型就不会把同一份价单读两遍、写两遍。这三次复拉一共 60 条、扣费 0.001668 美元，换来的新帖是 0 条，这就是按次计费的代价：拉取间隔要跟着频道的发帖频率定，像 `boxb2b` 这种不到一天一条的频道，一天拉一次已经足够，不必每小时拉。

## 抽报价：正则先跑一遍，Claude 只处理难的部分

批发帖的格式其实很规整。`boxb2b` 的每日价单一行一个型号，形如「18 Pro 256 Black (sim) - 123.300₽」，用 ▫️ 或 🔥 分隔；`linktek` 一行写「型号 (库存) — 1 371 у.е. / 117 849 ₽」。我们先写了一个不经过模型的正则抽取器，从 `boxb2b` 的 200 条和 `linktek` 的 50 条里抽出 1,411 行价格，其中 `boxb2b` 1,048 行（来自 129 条帖子），`linktek` 363 行（来自 40 条帖子），带 у.е. 的有 319 行。核心规则如下：

```text
import re
SEP = re.compile(r"▫️|▪️|•|🔥|✅|📱|💻|🔻|\n|(?<=₽)(?=\S)")
PRICE = re.compile(
    r"(?P<item>[A-Za-zА-Яа-я0-9][^₽]{2,90}?)\s*(?:[-—–:]|\s)\s*"
    r"(?:(?P<ue>\d[\d\s]*)\s*у\.е\.\s*/\s*)?"
    r"(?P<rub>\d{1,3}(?:[.\s ]\d{3})+|\d{4,7})\s*₽")

def extract(post, seen_ids):
    if post["id"] in seen_ids:          # 去重：见过的帖子不再处理
        return []
    rows = []
    for chunk in SEP.split(post.get("text") or ""):
        for m in PRICE.finditer(chunk):
            rub = int(re.sub(r"\D", "", m.group("rub")))
            if rub < 1000:              # 「от 5шт」之类不是价格
                continue
            rows.append({"post_id": post["id"], "date": post["posted_at"][:10],
                         "item": m.group("item").strip(), "rub": rub,
                         "ue": int(re.sub(r"\D", "", m.group("ue"))) if m.group("ue") else None})
    return rows
```

我们动笔前定的标准是「随机抽人工复核，准确率不低于 90%」。实际随机抽了 25 行逐条对原帖：25 行的价格数字全部正确，但只有 20 行能直接用，另外 5 行有问题。3 行是一批货的「Итого」（合计）金额，被当成了单品价；2 行是只写颜色的行，型号写在上面的小标题里，正则只拿到「Silver」这样的颜色，丢了型号。按「能直接用」算是 80%，没有达到 90% 的目标。另外有 2 行 у.е. 被错切（「3 720 у.е.」被拆开），算出来的汇率是 444，我们在汇率统计里按 50 到 150 的合理范围排除了。

问题都出在「上下文」：合计行和颜色行，人一看前后几行就知道是什么，正则不知道。这一步交给 Claude 正合适。Claude 的结构化输出功能可以让模型按你给的 JSON Schema 返回，官方文档写明它通过约束解码保证返回的 JSON 符合 schema，请求里用 `output_config.format`、类型 `json_schema`（[结构化输出文档](https://platform.claude.com/docs/en/build-with-claude/structured-outputs)）。做法是：正则先跑，只把「有价格但缺型号」或「出现 Итого、всего、партия 这类词」的帖子交给模型，并在 schema 里要求每行返回 `model`、`storage`、`variant`（sim 或 eSIM）、`color`、`price_rub`、`price_ue`、`is_lot_total`。这一步本文没有在本机跑，是配置示例；按 Anthropic 定价页，Haiku 5.5 的定位就是分类、抽取这类大批量任务，输入价格在提示词不超过 10 万 token 时是每百万 token 0.10 美元（[Anthropic 定价页](https://platform.claude.com/docs/en/about-claude/pricing)）。四个样本频道按实测的发帖频率和每条字符数算，一天新增的帖子合计约 1.8 万字符，交给模型的只是其中有问题的那一小部分。

## 实测一：同一台 iPhone 18 Pro，47 天降了多少

价格序列是这次最有价值的产出。我们从 `boxb2b` 的 200 条历史里找出同一个型号的所有报价：iPhone 18 Pro 256 GB 黑色港版（帖子里写「sim」，即实体卡加 eSIM 的港版），再对照 `linktek` 的批发价。

| 日期 | 频道与帖子 | 规格与条件 | 价格（卢布） |
| --- | --- | --- | --- |
| 2026-09-17 | boxb2b 2612 | 港版黑色，预订价，5 台起 | 141,000 |
| 2026-09-21 | boxb2b 2621 | 港版黑色，3 台起 | 130,900 |
| 2026-09-23 | boxb2b 2624 | 港版黑色，零售单台 | 132,900 |
| 2026-11-04 | linktek 37584 | 美版纯 eSIM 黑色，批发 | 102,426（1,191 у.е.） |
| 2026-11-05 | linktek 37608 | 美版纯 eSIM 黑色，批发 | 101,821（1,184 у.е.） |
| 2026-11-05 | linktek 37606 | 港版黑色，批发，含运费 | 117,849（1,371 у.е.） |
| 2026-11-09 | boxb2b 2655 | 港版黑色，零售单台 | 123,300 |
| 2026-11-09 | boxb2b 2655 | 纯 eSIM 黑色，零售单台 | 112,000 |

同一规格、同一条件（港版、单台零售）相比，9 月 23 日到 11 月 9 日的 47 天里，黑色从 132,900 降到 123,300，跌 7.2%；同一帖里的冰川色从 131,900 降到 122,300，跌 7.3%；酒红色从 135,900 降到 123,500，跌 9.1%。从 9 月 17 日 5 台起订的预订价算到 11 月 9 日的零售价，跌了 12.6%，但这两个价格条件不同，不能当作降幅。最容易犯的错是把 11 月 9 日帖子里的纯 eSIM 版 112,000 拿来和 9 月的港版比，会得出跌 15.7% 的结论，比真实降幅大了一倍多。

![折线图：iPhone 18 Pro 256 GB 黑色在两个俄语批发频道的报价，横轴 2026 年 9 月 17 日到 11 月 9 日；boxb2b 港版从预订价 141,000 卢布降到 11 月 9 日零售 123,300 卢布，同期纯 eSIM 112,000；linktek 美版 eSIM 批发价 11 月 4 日 102,426、11 月 5 日 101,821，港版批发 117,849](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-03-price-series-line.zh.light.svg)

零售和批发的价差也能直接算出来。11 月 9 日 `boxb2b` 的纯 eSIM 零售 112,000，比 11 月 5 日 `linktek` 的美版 eSIM 批发 101,821 高 10.0%；港版零售 123,300 比港版批发 117,849 高 4.6%。`linktek` 自己的美版 eSIM 价从 11 月 4 日到 5 日一天降了 0.6%。这些数对采购的人有直接用处：同一周里，不同渠道、不同版本之间的差价，往往比一个型号一个月里的跌幅还大。所以日报里每一条「价格变化」都要附上规格和条件，并且只和昨天同规格、同条件的那一行比。

## 实测二：у.е. 到底是多少卢布

`linktek` 的每一行都同时写「у.е.」和卢布两种价格。у.е. 是俄语「условная единица」的缩写，意思是约定单位，俄罗斯的批发商常用它来报一个跟着外币走的价格，具体按多少卢布结算，由卖家自己定。既然同一行两种价都有，就能反推卖家用的汇率。我们从 `linktek` 2026 年 11 月 4 日到 11 月 9 日的 319 行带 у.е. 的价格里排除 2 行切错的，剩下 317 行，算出来的汇率中位数是 85.99 卢布，最低 85.8、最高 87.0，非常集中。

对照俄罗斯中央银行每天公布的官方汇率（XML 原始数据，[俄罗斯央行每日汇率](https://www.cbr.ru/scripts/XML_daily.asp)）：11 月 4 日美元为 81.6699 卢布，11 月 6 日 81.7947，2026 年 11 月 7 日 82.1386，11 月 10 日 82.7536。85.99 比这四天的官方汇率分别高 5.3%、5.1%、4.7%、3.9%。我们只能说 у.е. 对应的卢布数比当天官方美元汇率高 4% 到 5% 左右，至于这个差额里包含了什么（换汇成本、物流、利润），频道没有写，我们也不猜。

![柱状图：俄罗斯央行 2026 年 11 月 4、6、7、10 日的美元官方汇率 81.67 到 82.75 卢布，与 linktek 帖子反推出的 1 у.е. 约 85.99 卢布对比，后者高出 3.9% 到 5.3%](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-08-fx-bar.zh.light.svg)

还有一个只在帖子正文里才看得到的条件：`linktek` 37606 号帖写明，用对公转账（不含增值税）付款要加 12%，并且价格已含运费，物流约 7 天。日报如果只抽价格不抽这些条件，同一台机器的「实际到手价」会差出十几个百分点。这也是我们建议把条件句交给 Claude 读的原因：正则擅长抽数字，不擅长理解「+12%」是加在谁头上。

## 实测三：货代频道的运价和公开指数对得上吗

货代频道的数字更难核，因为线路、箱型、条件写法都不统一。我们从 `logistved` 和 `teustat` 里挑了四条最近的帖子，和英国 Drewry 公开的世界集装箱指数页面做对照。

| 来源与日期 | 线路 | 原帖数字 | 核对情况 |
| --- | --- | --- | --- |
| logistved 5117，2026-11-09 | 中国到俄罗斯直达铁路，40 尺高箱 | 平均 9,500 到 10,000 美元；经满洲里方向的后贝加尔斯克 28 到 30 天，经哈萨克斯坦 22 到 24 天，经霍尔果斯 18 到 22 天，经二连浩特 25 到 28 天 | 和 teustat 10 月的上海到莫斯科直达铁路平均 9,049 美元比，高 5.0% 到 10.5%；两者起点和统计方式不同，只能看方向 |
| logistved 5115，2026-11-06 | 远东港口到莫斯科铁路，40 尺箱 | 11 月平均 40 万卢布，原因是俄铁调价 | 帖子未给出处，无法独立核对 |
| logistved 5100，2026-11-02 | 世界集装箱指数 | 周跌 3%，至 4,429 美元 | Drewry 页面 11 月 5 日一期为 4,389 美元，周跌 1%；4,389 正好比 4,429 低约 1%，说明频道转述的是前一期，数字对得上 |
| teustat 4402，2026-11-02 | 上海到莫斯科，40 尺 COC 箱，10 月均价 | 直达铁路 9,049 美元；经远东 9,376 美元；经圣彼得堡 9,832 美元；经新罗西斯克无数据 | 平台自己的指数，正文直接写出数字 |

Drewry 页面上 2026 年 11 月 5 日那一期还写了上海到鹿特丹 3,615 美元、上海到纽约 9,303 美元（[Drewry 世界集装箱指数](https://www.drewry.co.uk/supply-chain-advisors/supply-chain-expertise/world-container-index-assessed-by-drewry)）。这组对照说明两件事。第一，频道转述的公开指数一般比原始发布晚一期，日报如果要引用指数，最好直接去原始页面取最新一期，频道帖子只用来发现「有新数字了」。第二，货代自己报的线路价（9,500 到 10,000 美元一个 40 尺高箱）和指数类频道的月均价（9,049 美元）方向一致，但不是同一个东西：一个是 11 月的报价区间，一个是 10 月的平均成交水平。日报里这两类数要分开写，不能直接算涨跌。

`teustat` 的另一条帖子（4406 号，11 月 6 日）标题是本周最低运价分析，正文只有两句话，表格全在图片里。我们这次没有读图，所以这条在日报里只能写「有新运价表，见原帖」。要自动读出来，可以把返回里的 `media_url` 交给能看图的模型，这一步本文没有测试。

## 拿 Yandex Market 交叉核对：频道价和平台标价差多少

频道里的价格到底低不低，可以拿俄罗斯最大的电商比价平台之一做参照。新加坡时间 00:38 我们调了一次 `yandex/market`，关键词「iPhone 18 Pro 256 ГБ」，拿回 50 条商品，扣费 0.001389 美元。按「标题含 18 Pro 和 256、不含 Pro Max（也排除连写的 ProMax）和 512」的规则筛出 33 条，标价中位数 209,990 卢布，四分位区间 165,353 到 255,441，最低 115,800，最高 645,990；其中标明纯 eSIM 的 9 条，中位数 186,534。

和频道价比，Yandex Market 的中位数比 `boxb2b` 11 月 9 日的港版零售价 123,300 高 70.3%，比 `linktek` 的美版 eSIM 批发价 101,821 高 106.2%。这个差距大得有点夸张，所以要说明边界：平台上是挂牌价，包含了大量第三方卖家、不同的保修和发票条件，最高那条 645,990 明显不是正常价；频道里是批发商的报价，往往要求转账、自提或者走他们的物流。我们不把这个差值解释为「利润空间」，只说明一件事：对这类商品，平台标价和频道报价不在一个水平上，做比价时不能拿平台的中位数当市场价。这部分的做法在另一篇[1688 选品对 Yandex Market 的毛利核算](/blog/claude-code-1688-sourcing-yandex-market-margin)里写得更细，[Yandex 数据接口](/yandex-api)和 [`yandex/market` 能力页](/yandex-api/market)列了字段。

## 算账：一千条帖子多少钱，一个月多少钱

我们的接口费全部按目录里的 `price_usd` 算，读取时间是新加坡时间 2026 年 11 月 10 日 00:13。`telegram/channel_posts`、`telegram/profile`、`telegram/search`、`telegram/group`、`telegram/members` 每次都是 0.000556 美元，`telegram/post_detail` 每次 0.000806 美元。失败、空结果和参数错误不扣费，这次 24 次调用里有 7 次没扣费，全部写在后面的「要注意的地方」里。

| 场景 | 计算 | 美元 |
| --- | --- | --- |
| 一次拉 200 条（limit=200） | 0.000556 ÷ 200 × 1000 | 每千条 0.00278 |
| 一次拉 20 条（limit=20） | 0.000556 ÷ 20 × 1000 | 每千条 0.0278 |
| 本次全部 7 次 `channel_posts` | 0.003892 ÷ 去重后 350 条 × 1000 | 每千条 0.0111 |
| 关键词搜索 6 次，共 58 条结果 | 0.003336 ÷ 58 × 1000 | 每千条结果 0.0575 |
| 10 个频道每天各 1 次，加 1 次搜索 | 11 × 0.000556 × 30 | 每月 0.18 |
| 50 个频道每天各 1 次，加 1 次搜索 | 51 × 0.000556 × 30 | 每月 0.85 |
| 100 个频道每天 2 次，加每天 2 次搜索 | 202 × 0.000556 × 30 | 每月 3.35 |
| 本文全部真调 | 17 次扣费合计 | 0.010285 |

![柱状图：telegram/channel_posts 按 limit 折算的每千条帖子价格，limit 20 为 0.0278 美元、50 为 0.01112、100 为 0.00556、200 为 0.00278；关键词搜索按实测结果条数折算为每千条 0.0575 美元](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-04-per1k-bar.zh.light.svg)

搜索单价摊下来比读频道贵得多，原因是搜索结果少：六次搜索里最少的只回了 1 条，最多 26 条，平均每次不到 10 条。按次付费的话，结果越少每条越贵。所以搜索适合用来「找新频道」，而不是每天抓价格。

![折线图：每天拉一次和每天拉两次时，频道数从 5 到 100 的每月接口费；每天一次 5 个频道 0.10 美元、10 个 0.18、20 个 0.35、50 个 0.85、100 个 1.68；每天两次分别为 0.18、0.35、0.68、1.68、3.35](https://everyinfra.com/articles/telegram-channel-scraper-api-claude-russian-sellers/fig-07-monthly-cost-line.zh.light.svg)

接口费和 Claude 的订阅费比几乎可以忽略：10 个频道一个月 0.18 美元，不到 Pro 月费的 1%（各档月费见下一节的表）。真正要控制的是模型读了多少字，这就是前面强调「去重后只把新帖交给模型」「正则先跑」的原因。

## 定时到底挂在哪：Cowork 定时任务、Claude Code 云端定时任务，还是 /loop

很多人以为在对话里说一句「每天跑一次」就完事了，其实对话不会产生定时任务，定时要在专门的功能里建。Anthropic 现在有三种和定时有关的功能，适合的人不一样。表里的月费来自 claude.com 定价页：Pro 月付 20 美元（年付折合每月 17 美元），Max 每月 100 美元起，Ultra 每月 200 美元（[Claude 定价页](https://claude.com/pricing)）。

| 功能 | 在哪建 | 档位与最低月费 | 电脑关了还跑吗 | 能用连接器吗 | 要注意 |
| --- | --- | --- | --- | --- | --- |
| Cowork 定时任务 | Claude 桌面版的 Cowork，侧边栏「Scheduled」 | 所有付费档，Pro 起 20 美元 | 跑，远程执行 | 能 | 2026-11-05 更新的帮助文档 |
| Claude Code 云端定时任务（原 routines） | claude.ai/code/routines、桌面版 Code 标签，或命令行 `/schedule` | Pro、Max、Ultra、Team、Enterprise，Pro 起 20 美元 | 跑，在 Anthropic 云端 | 能，默认包含全部连接器 | 研究预览；最短每小时一次；cron 默认按 UTC |
| `/loop` 会话内循环 | 正在运行的 Claude Code 会话里 | 跟会话走，不另收费 | 不跑，会话关了就停 | 能用会话里已有的 | 7 天后自动过期 |

Cowork 的定时任务适合不写代码的人。帮助中心 2026 年 11 月 5 日更新的文档写明：定时任务在所有付费档可用，会远程执行，电脑睡眠时也照跑，可以用你已连接的连接器，在侧边栏的「Scheduled」里管理（[Cowork 定时任务文档](https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork)）。Cowork 本身覆盖 Pro、Max、Ultra、Team 和 Enterprise，桌面版支持 macOS、Windows 和 Linux 测试版（[Cowork 入门文档](https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork)）。另一篇 2026 年 10 月 30 日更新的说明讲，Cowork 和聊天现在是同一个 Claude（[Cowork 与聊天说明](https://support.claude.com/en/articles/16761823-claude-cowork-and-chat-are-one-claude)），所以你在聊天里加的连接器，Cowork 里也能用。做法是：在 Cowork 里新建定时任务，提示词写清楚「每天莫斯科时间 10 点，对清单里每个频道调 channel_posts limit 20，只看今天的新帖，抽出型号、规格、价格和条件，和昨天比，写成一页日报」，再把 EveryInfra 连接器打开。

Claude Code 云端定时任务适合要放脚本、要把结果写进仓库的人。官方文档写明它目前是研究预览，Pro、Max、Ultra、Team、Enterprise 可用，可以在网页、桌面版的 Code 标签或命令行的 `/schedule` 里建；最短间隔一小时，cron 表达式默认按 UTC，除非写 `CRON_TZ`；文档还建议不要排在整点，整点的任务可能延后开始，比如写 9:07 而不是 9:00（[Claude Code 云端定时任务文档](https://code.claude.com/docs/en/routines)）。同一页的用量限制一节写了每个账号每小时最多 100 次定时运行，单个任务的「立即运行」和接口触发每小时 30 次。一个任务能碰到什么，由三样东西决定：选中的仓库、环境的网络设置和变量、包含的连接器；新建任务时默认包含你所有的连接器，文档建议只留任务需要的。云端会话的可用档位另见[云端会话文档](https://code.claude.com/docs/en/claude-code-on-the-web)。

有一个已知问题值得提前避开。GitHub 上 anthropics/claude-code 仓库的 96832 号问题里，有人的定时任务运行时报「This tool is unavailable in unattended sessions」，讨论下来的结论是连接器要保持默认启用，任务无人值守时才能调到（[GitHub 问题 96832](https://github.com/anthropics/claude-code/issues/96832)）。所以建好任务后先手动点一次「立即运行」，确认工具调得到，再交给定时。

`/loop` 是会话内的循环，适合「我这两个小时一直开着终端，想每 30 分钟看一眼」。Claude Code 的定时任务文档写明，这类会话级任务只在会话运行时生效，7 天后过期（[Claude Code 会话定时文档](https://code.claude.com/docs/en/scheduled-tasks)）。每天一次的日报不该用它。站内另外两篇写过两种定时功能的真实坑：[Claude Code 定时任务的 Reddit 抱怨整理](/blog/claude-code-scheduled-tasks-reddit-pain-points)和[用 Cowork 定时任务盯竞品价格和评价](/blog/claude-cowork-scheduled-tasks-competitor-price-reviews)；如果要的是「有新帖就推送」而不是每天汇总，可以看[用 Claude Code channels 推送竞品新帖](/blog/claude-code-channels-competitor-post-alerts)。

## 做不了或要注意的地方

第一，`telegram/post_detail` 这次没有调通。新加坡时间 00:20 到 00:39 之间我们对三个帖子链接调了四次，01:20 又试了一次，五次都回 503，都没有扣费。日报用不到它：`channel_posts` 返回的字段已经覆盖单条帖子的主要内容。要用之前，先看[`telegram/post_detail` 能力页](/telegram-api/post_detail)和[可用性接口](https://api.everyinfra.com/api/v1/social/availability?platform=telegram)的当前状态。

第二，私密频道读不了。我们用一个格式正确但无效的私密邀请链接试了一次，等了 29.4 秒回空结果，没扣费。目录对 `username` 参数的说明也写明不支持私密邀请链接。私密频道只能走 MTProto 自写解析器，用一个已加入的账号去读。

第三，关键词搜索噪声大。六次俄语关键词搜索一共 58 条结果：「карго из Китая цена за кг」（从中国走货的每公斤价）4 条，「оптом прайс поставщик」（批发价单供应商）1 条，「карго」限定 2026 年 10 月 27 日以后 12 条，大多是不相关的频道，「ставка контейнер」（集装箱运价）14 条大多来自招聘频道，「доставка из Китая」（从中国发货）26 条。真正有用的是第六次，「18 Pro 256 опт」限定 10 月 20 日以后只回 1 条，恰好就是 `boxb2b` 的每日价单，我们正是通过它发现了这个频道。日报本身要靠一份人工维护的频道清单。Telegram 自己的 `channels.getChannelRecommendations` 方法可以返回主题相似的公开频道（[getChannelRecommendations](https://core.telegram.org/method/channels.getChannelRecommendations)），走 MTProto 的人可以用它扩充清单。

第四，Telegram 的条款对 AI 用途有专门的限制。Telegram 的 API 条款引用了它的内容授权条款，后者禁止为训练、微调、验证、评测或部署人工智能而抓取、索引、收集、汇总或使用 Telegram 上的数据，例外需要明确的逐项同意（[Telegram API 条款](https://core.telegram.org/api/terms)、[Telegram 内容授权条款](https://telegram.org/tos/content-licensing)）。我们不对你的具体用途做法律判断。本文的做法是读公开频道里商家主动公开的价格，生成给自己看的日报，不拿来训练模型；如果你的用途涉及模型训练或对外发布数据产品，请先自己读条款原文、必要时问律师。

第五，个人信息。`telegram/members` 这项能力的返回字段里有 `phone`，本文完全没有用它。批发帖里经常出现经理的个人用户名和电话，日报里应该去掉，只留频道名和原帖链接。

第六，不要绕过限制。我们的 Key 每分钟有次数限制，遇到 429 就按返回的等待秒数等；Telegram 一侧的 FLOOD_WAIT、频道的访问设置，本文不讲也不建议任何绕过办法。

## 最近的变化：Telegram 和 Claude 这两个月改了什么

Telegram 一侧：Bot API 在 2026 年 11 月 9 日发布了 10.4 版，新增了小组件相关的接口（[Bot API 文档的最近更新](https://core.telegram.org/bots/api)）；Telegram Serverless 让开发者把机器人和小程序的后端代码直接放在 Telegram 的基础设施上跑，它的文档在 10 月 6 日加上了小程序托管（[Telegram Serverless 文档](https://core.telegram.org/bots/serverless)）。这两件事都没有改变「机器人只能读它所在的频道」这个前提。MTProto 一侧，Telethon 在 9 月 10 日发了 1.45.0，仍是最活跃的 Python 库。

Claude 一侧，自定义连接器、使用连接器和 Cowork 定时任务三篇帮助文档都在 2026 年 10 月 30 日到 11 月 6 日之间更新过，routines 也已改名为云端定时任务，本文各节引用的都是更新后的版本。

## 常见问题

**telegram api 免费吗？**

Telegram 自己的 Bot API 和 MTProto API 都不收接口费，但各有前提：Bot API 只能读机器人所在的频道；MTProto 要用手机号注册账号、在 my.telegram.org 拿 api_id，全局帖子搜索超过 Premium 免费次数后按次收 Stars。按次调用的数据接口要付费，`telegram/channel_posts` 每次 0.000556 美元。（问题来源：联想词「is telegram api free」「telegram api pricing」；依据：[Bots FAQ](https://core.telegram.org/bots/faq)、[Obtaining api_id](https://core.telegram.org/api/obtaining_api_id)、[Telegram 搜索文档](https://core.telegram.org/api/search)）

**有没有免费的 Telegram 频道解析器（парсер телеграм каналов бесплатно）？**

有，Telethon 是开源的，MIT 许可，自己写几十行 Python 就能读公开频道历史。成本不在软件，而在账号：要一个手机号、要保管登录会话文件、要处理 FLOOD_WAIT，非官方客户端账号会被 Telegram 重点观察。频道少、用得少，自写最省钱；频道多、不想养号，按次调用更省事。（问题来源：联想词「парсер телеграм каналов бесплатно」；依据：[LonamiWebs/Telethon](https://github.com/LonamiWebs/Telethon)、[Obtaining api_id](https://core.telegram.org/api/obtaining_api_id)）

**用 Python 写 Telegram 频道解析器（парсер телеграм каналов python）该从哪开始？**

从 Telethon 的登录文档开始：在 my.telegram.org 创建应用拿到 api_id 和 api_hash，用 `TelegramClient` 登录，再用 `iter_messages` 读频道。Telethon 的客户端文档写明，`iter_messages` 的 `wait_time` 参数控制两次历史请求之间等几秒，用来避开 FloodWaitError；不设时只有 limit 超过 3000 才默认等 1 秒。如果不想登录账号，也可以用 Python 直接 POST 我们的接口，请求体就是本文代码块里那一行 JSON。（问题来源：联想词「парсер телеграм каналов python」；依据：[Telethon 登录文档](https://docs.telethon.dev/en/stable/basic/signing-in.html)、[Telethon 客户端文档](https://docs.telethon.dev/en/stable/modules/client.html)）

**我不是频道管理员，能把机器人加进别人的公开频道读消息吗？**

不能，机器人进频道只能以管理员身份，而且只收它所在频道的消息。读别人的公开频道，要么用户账号走 MTProto，要么用按次调用的接口，三条路的对比见上文「三条路」一节。（问题来源：[Stack Overflow 45002999](https://stackoverflow.com/questions/45002999/how-to-add-telegram-bot-to-public-channel-im-not-admin-of)）

**Telethon 老是报 FloodWaitError，怎么办？**

按错误里给的秒数等，再降低请求频率；每个账号的限额不同，没有公开的固定数字。错误码和出处见上文「三条路」一节，本文不提供任何绕过办法。（问题来源：[Stack Overflow 76198570](https://stackoverflow.com/questions/76198570/python-telethon-how-can-you-prevent-the-floodwaiterror-error-or-reduce-its-tim)）

**不加机器人，能每天用 AI 总结一个新闻频道吗？**

能。Reddit 的 r/n8n 里有人问能不能每天读一个频道、让 AI 写总结，评论里有人追问「不加机器人也行吗」。用按次调用的接口就不需要加机器人：每天调一次 `telegram/channel_posts`，按编号去重，把新帖交给 Claude 写总结，定时放在 Cowork 或 Claude Code 云端定时任务里。（问题来源：[r/n8n 讨论帖](https://www.reddit.com/r/n8n/comments/1jwpuu5/can_i_read_telegram_texts_from_a_certain_channel/)；依据：本文实测与 [Cowork 定时任务文档](https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork)）

**怎么找到同类频道（парсер похожих каналов телеграм）？**

走 MTProto 的可以调 `channels.getChannelRecommendations`，它返回主题相似的公开频道；不走 MTProto 的用 `telegram/search` 按行业关键词搜，六次实测的结果和噪声见上文「做不了或要注意的地方」第三条。（问题来源：联想词「парсер похожих каналов телеграм」；依据：[getChannelRecommendations](https://core.telegram.org/method/channels.getChannelRecommendations)）

## 上手步骤：从一个频道、一天一次开始

第一步，拿 Key、看价格。按[快速开始](/docs#quickstart)在控制台建一个 Key，放进环境变量；价格在[价格页](/pricing)和目录里都能查到，新账号可以先用很小的金额试。[Telegram 数据接口](/telegram-api)这一页列了全部 6 项能力，常用的是 [`telegram/channel_posts`](/telegram-api/channel_posts)、[`telegram/search`](/telegram-api/search) 和 [`telegram/profile`](/telegram-api/profile)。

第二步，用上面的 curl 对一个频道调一次 limit=200，把结果存下来当基线，用正则抽一遍价格，看看你的频道格式能抽出多少。

第三步，在 Claude 里加连接器：Customize → Connectors → + Add → Add custom connector，地址填 `https://api.everyinfra.com/mcp`，地址和工具列表见 [MCP 服务器页](/mcp-server)，图文步骤见[远程 MCP 接入](/build/remote-mcp-setup)。在一次对话里让 Claude 读你的频道最新 20 条，确认它能调通。

第四步，建定时任务。不写代码的用 Cowork 的「Scheduled」，要写进仓库的用 Claude Code 云端定时任务，时间避开整点，cron 记得是 UTC。连接器保持默认启用，任务里只保留这一个连接器，建好后先手动运行一次。

第五步，跑一周再扩清单。看哪些频道一周都没有新帖，哪些价格抽不准，再决定要不要加频道、要不要把难抽的帖子交给 Claude 的结构化输出。别的平台也能照这个流程做，比如 [VK 数据接口](/vk-api)和 [YouTube 数据接口](/youtube-api)；想看别人做好的现成工具，可以去[基础设施市场](/market)。

## 参考资料

1. Bots FAQ: What messages will my bot get?，Telegram，2026-11-10 读取，https://core.telegram.org/bots/faq
1. Obtaining api_id，Telegram，2026-11-10 读取，https://core.telegram.org/api/obtaining_api_id
1. Telegram API Terms of Service，Telegram，2026-11-10 读取，https://core.telegram.org/api/terms
1. Content Licensing Terms，Telegram，2026-11-10 读取，https://telegram.org/tos/content-licensing
1. Error handling（420 FLOOD_WAIT），Telegram，2026-11-10 读取，https://core.telegram.org/api/errors
1. Telegram Bot API（getUpdates、Recent changes，Bot API 10.4 发布于 2026-11-09），Telegram，2026-11-10 读取，https://core.telegram.org/bots/api
1. messages.getHistory，Telegram，2026-11-10 读取，https://core.telegram.org/method/messages.getHistory
1. Search（Global post searches are paid），Telegram，2026-11-10 读取，https://core.telegram.org/api/search
1. channels.getChannelRecommendations，Telegram，2026-11-10 读取，https://core.telegram.org/method/channels.getChannelRecommendations
1. tdlib/telegram-bot-api README，Telegram, GitHub，2026-11-10 读取，https://github.com/tdlib/telegram-bot-api
1. Telethon 仓库，LonamiWebs, GitHub，2026-11-10 读取，https://github.com/LonamiWebs/Telethon
1. Telethon 1.45.0，PyPI，发布于 2026-09-10，2026-11-10 读取，https://pypi.org/project/Telethon/
1. Telethon: Signing In，Telethon 文档，2026-11-10 读取，https://docs.telethon.dev/en/stable/basic/signing-in.html
1. Telethon: Client reference（iter_messages、wait_time），Telethon 文档，2026-11-10 读取，https://docs.telethon.dev/en/stable/modules/client.html
1. Telethon FAQ，Telethon 文档，2026-11-10 读取，https://docs.telethon.dev/en/stable/quick-references/faq.html
1. pyrogram/pyrogram（2024-12-23 归档），GitHub，2026-11-10 读取，https://github.com/pyrogram/pyrogram
1. telegram.Update（channel_post），python-telegram-bot 文档，2026-11-10 读取，https://docs.python-telegram-bot.org/en/stable/telegram.update.html
1. Discussion 3047: bots in channels，python-telegram-bot, GitHub，2026-11-10 读取，https://github.com/python-telegram-bot/python-telegram-bot/discussions/3047
1. Get started with custom connectors using remote MCP，Anthropic 帮助中心，2026-10-30 更新，2026-11-10 读取，https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp
1. Use connectors to extend Claude's capabilities，Anthropic 帮助中心，2026-11-06 更新，2026-11-10 读取，https://support.claude.com/en/articles/11176164-use-connectors-to-extend-claude-s-capabilities
1. Schedule recurring tasks in Claude Cowork，Anthropic 帮助中心，2026-11-05 更新，2026-11-10 读取，https://support.claude.com/en/articles/13854387-schedule-recurring-tasks-in-claude-cowork
1. Claude Cowork and chat are one Claude，Anthropic 帮助中心，2026-10-30 更新，2026-11-10 读取，https://support.claude.com/en/articles/16761823-claude-cowork-and-chat-are-one-claude
1. Get started with Claude Cowork，Anthropic 帮助中心，2026-11-10 读取，https://support.claude.com/en/articles/13345190-get-started-with-claude-cowork
1. Getting Started with Local MCP Servers on Claude Desktop，Anthropic 帮助中心，2026-11-10 读取，https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop
1. Cloud scheduled tasks（formerly routines），Claude Code 文档，2026-11-10 读取，https://code.claude.com/docs/en/routines
1. Connect Claude Code to tools via MCP，Claude Code 文档，2026-11-10 读取，https://code.claude.com/docs/en/mcp
1. Scheduled tasks（/loop），Claude Code 文档，2026-11-10 读取，https://code.claude.com/docs/en/scheduled-tasks
1. Configure cloud environments，Claude Code 文档，2026-11-10 读取，https://code.claude.com/docs/en/cloud-environments
1. Use Claude Code in the cloud，Claude Code 文档，2026-11-10 读取，https://code.claude.com/docs/en/claude-code-on-the-web
1. Issue 96832: tool unavailable in unattended sessions，anthropics/claude-code, GitHub，2026-11-10 读取，https://github.com/anthropics/claude-code/issues/96832
1. IP addresses，Claude 平台文档，2026-11-10 读取，https://platform.claude.com/docs/en/api/ip-addresses
1. Structured outputs，Claude 平台文档，2026-11-10 读取，https://platform.claude.com/docs/en/build-with-claude/structured-outputs
1. Pricing（Claude Haiku 5.5），Claude 平台文档，2026-11-10 读取，https://platform.claude.com/docs/en/about-claude/pricing
1. Plans and pricing，Anthropic，2026-11-10 读取，https://claude.com/pricing
1. MCP specification 2025-06-18: Transports，Model Context Protocol，2026-11-10 读取，https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
1. MCP specification 2025-06-18: Tools，Model Context Protocol，2026-11-10 读取，https://modelcontextprotocol.io/specification/2025-06-18/server/tools
1. 数据能力目录（price_usd、response_fields），EveryInfra，2026-11-10 00:13 读取，https://api.everyinfra.com/api/v1/social/catalog
1. Telegram 能力可用性，EveryInfra，2026-11-10 读取，https://api.everyinfra.com/api/v1/social/availability?platform=telegram
1. Official exchange rates XML（2026-11-04 至 2026-11-10），Bank of Russia，2026-11-10 读取，https://www.cbr.ru/scripts/XML_daily.asp
1. World Container Index（2026-11-05 一期），Drewry，2026-11-10 读取，https://www.drewry.co.uk/supply-chain-advisors/supply-chain-expertise/world-container-index-assessed-by-drewry
1. How to add telegram bot to public channel I'm not admin of，Stack Overflow，2026-11-10 读取，https://stackoverflow.com/questions/45002999/how-to-add-telegram-bot-to-public-channel-im-not-admin-of
1. Python Telethon: how can you prevent the FloodWaitError，Stack Overflow，2026-11-10 读取，https://stackoverflow.com/questions/76198570/python-telethon-how-can-you-prevent-the-floodwaiterror-error-or-reduce-its-tim
1. Can I read Telegram texts from a certain channel，r/n8n, Reddit，2026-11-10 读取，https://www.reddit.com/r/n8n/comments/1jwpuu5/can_i_read_telegram_texts_from_a_certain_channel/
1. Telegram Serverless（Recent changes，2026-10-06），Telegram，2026-11-10 读取，https://core.telegram.org/bots/serverless
