---
description: "解析分享链接的维护记录：为什么媒体走下载狗、正文作者走 TikHub，为什么写成脚本、B 站为什么并进来；下载狗对小红书各字段稳不稳，正文、作者、点赞收藏都拿不到，轮播视频没有原图；TikHub 补齐这些的实测和单价；作者主页翻页为什么收进来而不单独成 skill、实测；公众号为什么直接取文章页、找号和翻列表走 TikHub，视频号为什么没接；用接口不用看，出问题或想换接口再看"
---

# 解析分享链接的维护记录：下载狗、TikHub、B 站与公众号

这是[解析分享链接](../skills/agent-io/reference/share-link/index.md)背后的维护记录。用接口时不用看，解析出问题或者要换服务时再看。

## 为什么两家一起用 { #why-two }

- **下载狗便宜，媒体给得好**：一次 0.005 元，抖音原画是 4.7 MB 的 HEVC。但对小红书只给标题和媒体，见下面的[字段表](#fields)
- **TikHub 元数据全**：正文、作者、点赞收藏、小红书原图都有。但小红书一次 0.01 美元，抖音原画是一百多 MB 的 H.264
- 所以媒体走下载狗，元数据走 TikHub。按 1 美元 7.2 元算，一条抖音约 2 分钱，一条小红书约 7 分钱
- **不直连小红书网页取数据**：容易触发反爬，2026-10-17 定下只走中转

## 为什么写成脚本 { #why-script }

- **文档够用，缺的是确定性逻辑**：两轮新 agent 只照用法页都能取全，但每轮都在 `/tmp` 里手写一套临时脚本：判平台、先调 TikHub、分真视频和轮播、字符串和数组、WebP 转 JPG。每次重推一遍，费 token 也容易错，对字符串取 `[0]` 只拿到一个 `h`
- **分界线**：跨两家接口、有路由判断、有已知的坑，才写脚本；DeepSeek、生图、转写这类单次调用只写 curl
- **出错留原样返回**：上游一改，脚本只会报错，不会像 AI 那样绕过去；所以先把每家的返回写进 `raw/` 再解析，AI 照各平台的底层页接着调
- **B 站并进来**：B 站的元数据、分P、字幕、评论、图文动态原来只写在视频笔记的脚本和接口笔记里，agent-io 讲不清各家链接怎么取。2026-10-17 用户定下「视频笔记拆成下载、分析、输出，下载和分析归 agent-io」，`extract_bilibili.py`、`extract_bilibili_opus.py` 的取材部分并进 `share_link.py`，接口笔记改写成 [B 站](../skills/agent-io/reference/share-link/bilibili.md)这一页
- **按平台拆开**：并进 B 站后脚本长到 784 行。用户说「不同平台的请求脚本不应该封装在一起，现在这个太大了，而且还要保留提供底层接口」，拆成 `xiaohongshu.py`、`douyin.py`、`bilibili.py`、`xiazaitool.py` 四个，各平台一样的部分放进 `share_common.py`：文件夹格式、下载、下载狗调用和续跑、花费、命令行骨架。每个平台页上面写脚本，下面写底层接口。平台脚本要 import `share_common.py`，所以调用一次也要整包
- **作者主页收进来，不单独成 skill**：2026-10-17 用户问「tikhub 里面有没有办法获取一个人发出的所有内容」，又问「要做成一个独立的skill还是应该收纳在某个skill里」，定下收在 agent-io 里当一个 reference。主页链接也是从 App 分享出来的链接，翻出来的作品落进同一种文件夹，和单独取过的同名就跳过；以后要做账号拆解这类分析，再起一个上层 skill，下载交给这里
- **主页模式的几个取舍**：抖音列表的字段和单条一样，直接拿来写 `meta.json`，不再调详情；小红书列表正文截到 100 字，每条还得调详情。上百个视频占盘也花下载狗的钱，所以默认不下视频。详情超过 1 美元先停，是照「大额批量先报预估」的规矩
- **短链跟一次跳转**：只读跳转返回的 Location，不取页面，和上面「不直连小红书网页」不冲突。代价是单条的短链也多这一次请求
- **统一的文件夹**：各平台都写成同一个形状，视频一律 `video/pNN.mp4`，每P的字幕、视频记在 `meta.json` 的 `parts` 里，后面阅读视频、整理笔记不用分平台；评论、图文转 Markdown 这些各平台独有的，放进文件夹里固定的文件名

## 公众号为什么直接取文章页 { #wechat-mp }

- **收进来，照小红书的作者主页做**：2026-10-18 用户先问「看本仓库的 agent-io 帮我看看能不能获取微信公众号的信息？」，又说「把获取特定账号的内容作为一个 reference，（现在小红书是不是也有这个类似的reference）」。照一个平台一页一个脚本，翻列表沿用 `share_common.py` 的作者主页那套，文件夹、`list.json`、重跑跳过都一样
- **正文直接取文章页，不走 TikHub**：文章页本来就是公开给人转发的，免费，1 秒左右；TikHub 的 `fetch_article_detail_h5` 一次 0.01 美元、8.5 秒，正文一样，多出来的只有头像、几种比例的封面和合集。和小红书「不直连网页」不同，实测连着取了二十来次，没碰到过验证页。页面没有正文才退回 TikHub
- **阅读量要另加 `--stats`**：只有 TikHub 给，每篇多 0.01 美元，读正文用不上
- **没有主页链接，所以用 `--account`**：公众号主页只能在微信里打开，没有能转发的链接。号名要搜一次才知道 `gh_` 号，所以记进 `accounts.json`；只认名字一字不差的 —— 搜「机器之心」会同时搜出「机器之心SOTA」「机器之心PRO会员」和同名的视频号
- **默认只取最新 20 篇**：大号历史动辄上万篇，翻完要上百页，所以 `--limit 0` 要加 `--yes`。小红书、抖音默认翻完，因为一个人一般发几百条
- **一个号的文章隔一秒取一篇**：连着取多快会碰到验证页没测，先留个间隔
- **代码块不带语言**：页面上的 `data-lang` 是编辑器猜的，同一篇里 shell 命令标成 `apache`、`css`、`makefile`

## 接口从哪来 { #upstream }

### 下载狗

按次数买额度，接口文档[^xiazaitool]里用到的是这几点：

- `POST https://api.xiazaitool.com/api/parseVideoUrl`，JSON 正文 `{"url": …, "token": …}`。token 在正文里，不在请求头，所以中转用 `request_body` 改写正文，见 [API 中转的坑](../projects/ai-assistant/api-gateway.md#pitfalls)
- 文档说失败不计费，实测也是这样
- 文档示例里的 `www.xiazaitool.com` 和 `api.xiazaitool.com` 都能用，中转接的是 `api.`
- **文档的字段表里没有正文**。实际返回比文档多 `remark`、`content`、`topic` 三个字段，小红书的这三个都是空的
- **别拿文档的响应示例推断小红书能给什么**：示例是拼起来的，封面在小红书的 `xhscdn.com`，视频却在抖音的 `douyinvod.com`；`title` 里那串话题标签是抖音的写法，抖音没有单独的标题，文案整段放进 `title`

### TikHub

按接口计费，文档[^tikhub]按平台分好几代接口。用到的是这几点：

- 认证是标准的 `Authorization: Bearer`，中转跟 DeepSeek 一样只换请求头，见 [API 中转](../projects/ai-assistant/api-gateway.md)
- 2026-10-17 账单上的单价：

    | 接口 | 单价 |
    |---|---|
    | `douyin/web/get_aweme_id` | 0.001 美元 |
    | `douyin/app/v3/fetch_one_video_v3` | 0.001 美元 |
    | `douyin/app/v3/fetch_video_high_quality_play_url` | 0.005 美元 |
    | `xiaohongshu/app_v2/get_image_note_detail` | 0.01 美元 |
    | `douyin/app/v3/fetch_user_post_videos`（作者主页，20 条一页） | 0.001 美元 |
    | `xiaohongshu/app_v2/get_user_posted_notes`（作者主页，20 条一页） | 0.01 美元 |
    | `xiaohongshu/app_v2/get_user_info` | 0.01 美元 |
    | `tikhub/user/get_user_info`（查余额） | 免费 |
    | `wechat_search/v2/fetch_search`（找公众号、搜文章） | 0.01 美元 |
    | `wechat_mp/v2/fetch_account_articles`（公众号文章列表，约 25 篇一页） | 0.01 美元 |
    | `wechat_mp/v2/fetch_article_stats` | 0.01 美元 |
    | `wechat_mp/v2/fetch_article_detail_h5` | 0.01 美元 |
    | `wechat_channels/v2/fetch_video_detail`（视频号） | 0.01 美元 |

    作者主页那三行和公众号、视频号那几行是调 `tikhub/user/get_endpoint_info?endpoint=<接口路径>` 查的，免费，还能看限流（都是每秒 10 次）；公众号、视频号这几个不能用免费额度。文档里公众号 11 个接口、视频号 12 个、搜一搜 2 个，标价都是 0.01 美元

- 小红书选 `app_v2/get_image_note_detail`，因为文档推荐它，只要 note_id，不用 xsec_token
- 公众号、视频号、搜一搜这几组是 POST JSON，`share_common.py` 的 `tikhub()` 传 `body` 就走 POST
- `api.tikhub.io` 和 `api.tikhub.dev` 从本机都能直连，都在 Cloudflare 后面。中转接的是 `.io`，国内机连它 0.7 秒

## 下载狗各字段稳不稳 { #fields }

2026-10-17 经中转解析 9 条小红书，加上下面[实测](#tests)里的 10-10 小红书、10-17 抖音。✅ 每次都有，⚠️ 有时有、或者拿到了用不了，❌ 字段是空的或者接口不给：

| 内容 | 小红书视频<br>2 条 | 小红书轮播视频<br>4 条 | 小红书图文<br>4 条 | 抖音视频<br>1 条 |
|---|---|---|---|---|
| 解析成功 | ✅ | ✅ | ⚠️ 偶尔 500，重试就好 | ✅ |
| 标题 `title` | ✅ | ✅ | ✅ | ✅ |
| 类型 `isVideo` | ✅ 真 | ⚠️ 也是真，看不出底下是一组图 | ✅ 假 | ✅ 真 |
| 视频 `videoUrls` | ✅ 720p | ✅ 720×960 的轮播视频 | ❌ `null` | ✅ 2160×2880 |
| 图片 `pics` | ❌ `[""]` | ❌ `[""]`，原图拿不到 | ⚠️ 张数对，4 条里 1 条全部 404 | ❌ `[""]` |
| 封面 `coverUrls` | ⚠️ 完整链接有，短链空 | ⚠️ 同左 | ⚠️ 同左 | ✅ |
| 正文 `content` | ❌ | ❌ | ❌ | 没记录 |
| 话题 `topic` | ❌ | ❌ | ❌ | ✅ |
| 点赞、评论、收藏 | ❌ 返回 0 | ❌ 返回 0 | ❌ 返回 0 | ✅ |
| 发布时间 `createTime` | ❌ 空串 | ❌ 空串 | ❌ 空串 | ✅ |
| 剩余额度 `leftTimes` | ✅ | ✅ | ✅ | ✅ |
| 作者 | ❌ 接口没这个字段 | ❌ | ❌ | ❌ |
| 评论内容 | ❌ 接口没这个字段 | ❌ | ❌ | ❌ |

- **轮播视频**是小红书拿一组图自动拼的，20 秒，720×960。网页上同一条笔记有 10 张原图，最大 1920×2560，下载狗不给。实在只能用下载狗时，ffmpeg 按场景切换截帧（`-vf "select='eq(n,0)+gt(scene,0.3)'" -vsync vfr`），每条截出一张拼图封面加 8～9 张单图，分辨率只有 720×960
- **404 的那条图文**：图实际在 `oss-sg/notes/` 路径下，下载狗给成了 `sns-img-hw.xhscdn.com/notes/…`。图在 `notes_pre_post/` 下的几条都正常
- **抖音只有 1 个样本**，✅ 只代表那一次有。B 站只测过解析速度，字段没记，表里没列

## 实测 { #tests }

### 下载狗

从本机经国内中转测，抖音是 2026-10-17 补测的，其余是 2026-10-10：

| 请求 | 结果 |
|---|---|
| B 站视频，走中转和直连各三次 | 都是 200，解析 0.4 秒左右，第一次走中转要建连接，0.78 秒 |
| 下载上面拿到的 B 站直链，57.5 MB | 两边都是 B 站同一个 CDN，都是 1.96 MB/s 左右，像是 CDN 单连接限速 |
| 小红书视频短链 | 200，9.3 秒，只有标题和视频直链，封面、正文、点赞都空；直链 11 MB，8.8 MB/s |
| 小红书图文短链 | 第一次 500「解析失败」，16 秒；重试 200，6.7 秒，`pics` 11 张，941×1672 |
| 同一条图文换成跳转后的完整链接 | 200，1.4 秒，多了封面；图片换了域名，但下下来字节完全一样 |
| 抖音视频短链 `v.douyin.com` | 一次 200，5.9 秒；标题、封面、话题、点赞、评论、收藏、发布时间都有；`videoUrls` 是单个字符串，`pics` 是 `[""]` |
| 下载上面拿到的抖音直链，4.7 MB | 不带 Referer 直接 200，2.3 MB/s，2160×2880 HEVC，45.6 秒；直链路径里带十六进制的过期时间，这次是解析后一小时 |
| 2026-10-17 小红书完整链接 9 条：视频 2、轮播视频 4、图文 3 | 都是第一次就 200；结果见上面的[字段表](#fields) |

### TikHub

2026-10-17 测，抖音用的是上面下载狗测过的同一条视频：

| 请求 | 结果 |
|---|---|
| 抖音 `get_aweme_id`，本机直连 `.io`、`.dev` 各一次 | 都是 200，2.2 秒、2.4 秒，`data` 是作品 ID |
| 抖音 `fetch_one_video_v3` | 200，1.5 秒；正文、作者、赞评藏转、发布时间、话题、背景音乐都有，播放数是 0，抖音本身不公开；视频 5 档，最高 1080×1440 HEVC 1.7 MB；直链路径里的时间约是请求后 3 小时，没等到过期验证 |
| 抖音 `fetch_video_high_quality_play_url`，`region=CN` | 200，6.5 秒；下下来是 2160×2880 H.264，107 MB。返回里的 `file_size` 写 343 字节、`content_type` 是 xml，对不上，但链接照样能下 |
| 小红书 `get_image_note_detail`：下载狗缺正文的 2 条图文、1 条轮播视频 | 都是 200，1.3～2 秒；正文、作者、小红书号、赞藏评转、发布时间、IP 属地都有；下载狗 404 的那条 9 张图、轮播视频的 10 张原图全部下到，原尺寸 WebP |
| 经中转调 `get_user_info`、`fetch_one_video_v3` | 都是 200；错误 token、不带 token 都是 401 |
| 本机用 Python `urllib` 默认请求头调中转 | 403，加上浏览器的 User-Agent 就通；`share_common.py` 本来就带 |
| 抖音 `fetch_user_post_videos`，165 条作品的作者 | 9 页翻完，`has_more` 到 0；第一页 22 条，其中 3 条 `is_top`；拿到 165 条，之前单条接口报这个作者 166 条作品 |
| 小红书 `get_user_posted_notes`，33 条笔记的作者 | 2 页翻完，33 条，和 `get_user_info` 的 `note_num_stat.posted` 一致；`desc` 都截到 100 字，`original` 全是空的 |
| 小红书 6 条比 `type` 能不能分出真视频和轮播视频 | 分不出，都是 `video`；标量字段里也没有能分开的。能分开的是 `images_list`：真视频只有 1 张封面，地址在 `spectrum/` 下；轮播视频有多张，地址在 `notes_pre_post/` 下 |

### 脚本

2026-10-17 写完 `share_link.py` 后测：

| 请求 | 结果 |
|---|---|
| 6 条小红书加 1 段抖音分享文案，一次跑完 | 7 条都成功，2 分 23 秒，0.062 美元加 0.01 元；`kind` 分对：图文 3、轮播 1、真视频 2；原图全是 JPEG |
| 下载狗解析同一条抖音 | 上午成功，下午 8 次都是 500「解析失败」；脚本退回 TikHub 的播放地址，第一次挑了 `play_addr_265` 只有 576×768，改成挑最大一档后拿到 1080×1440 |
| 原样重跑，链接参数换成只带 xsec_token | 都认成同一个文件夹，全部跳过，花费 0 |
| 并入 B 站后：B 站单P 31 秒、2P 公测 PV | 都成功，视频每P一个，扣 0.005 元一P；34 秒跑完 |
| B 站图文动态加 `--comments`（程序员鱼皮的 RAG 长文） | 正文转成 Markdown，25 张图下到本地并替换成相对路径；评论 6 条，和接口报的总数一致 |
| B 站 50 分钟的课加 `--no-video` | 只取元数据，花费 0 |
| B 站字幕：上面 3 个加另 4 个热门视频 | 7 个都拿不到：5 个 `need_login_subtitle` 为真、字幕轨为空，2 个没有字幕。字幕下载的代码照视频笔记原样移植，这次没走到 |
| 并入 B 站后回归：小红书图文、真视频，抖音短链 | 都成功，视频改存 `video/p01.mp4`；抖音这次下载狗又能解析了 |
| 续跑：删掉 B 站单P的视频、把 `meta.json` 改成缺视频，原样重跑 | 从 `raw/` 里的直链补下，花费 0 |
| 按平台拆开后：四个脚本各跑一遍，加一条抖音链接传给 `xiaohongshu.py` | 都成功；传错平台的那条单独报错、提示换脚本，其余照常；抖音封面按文件头存成 `.webp` |
| 加作者主页后：抖音 165 条的主页 | 0.009 美元，1 分 38 秒，大半时间在下封面；`list.json` 165 条，作品文件夹 165 个 |
| 原样重跑这个主页，同时传一条抖音短链 | 主页只翻 1 页就碰到见过的，0.001 美元，165 条全跳过；短链那条 `fetch_one_video_v3` 返回 400「请重试」，不扣钱 → TikHub 调用统一重试三次，再跑成功 |
| 小红书 33 条的主页，`--limit 3` | 1 页加 3 次详情，0.04 美元；详情给的正文是全文，381、437 字 |
| 闸门：阈值临时调到 0.05 美元再跑 | 翻完 2 页停下，退出码 1，提示约 0.3 美元。第一版把已取过的 3 条也算进条数，`list.json` 里那 3 条丢了 `dir`，改掉；再跑只翻 1 页 |
| 抖音图文 `/note/<ID>`，10 张图的配色帖 | 0.001 美元。原来取 `url_list[0]`，下下来是 HEIC，文件名却是 `.jpg`，浏览器打不开；`url_list` 最后一个是同尺寸 1080×1815 的 JPEG，改成跳过 `.heic` 后正常。同一条第一次重取 TikHub 返回 400「请重试」，不扣钱，再跑就好了 |

### 微信公众号

2026-10-18 测，从本机，TikHub 经中转：

| 请求 | 结果 |
|---|---|
| 直接取量子位一篇文章的短链 | 200，1.2 秒，3.5 MB；正文、号名、`gh_` 号、署名、发布时间都在页面里 |
| 同一篇调 `fetch_article_detail_h5` | 200，8.5 秒；正文 2997 字，和直接取的一样 |
| 同一篇调 `fetch_article_stats` | 3.7 秒；阅读 28528、点赞 22、在看 111、分享 978、收藏 34、评论 26 |
| `fetch_account_articles` 量子位、机器之心第一页 | 3.7、4.3 秒；28 篇、25 篇，量子位约两天的量；有标题、摘要、链接、封面、时间，没有阅读量 |
| `fetch_search` 搜文章「国庆 高速免费」 | 4.4 秒，总数 309，一页 36 条，带链接和「阅读 3万+」；同一个词 DeepSeek 搜索是 0 条 |
| `fetch_search` 找号「机器之心」 | 3.4 秒；同名的公众号一个、同名的视频号一个，另有「机器之心SOTA」「机器之心PRO会员」 |
| 同一张图 `/640` 和 `/0` | 1080×845 和 1610×1260，都不用 Referer |
| 截掉 `chksm` 等参数的长链 | 页面只回 2 KB 的「未知错误，请稍后再试」；整条链接再取正常 |
| 脚本 `--account 机器之心 --limit 5` | 0.02 美元（搜一次、列表一页），32 秒；5 篇正文、44 张原图，代码块保留了换行 |
| 原样加 `--force` 重跑 | 号名走缓存，只花列表 0.01 美元 |
| `--account gh_114e76fd6e5d --limit 2` | 0.01 美元；`list.json` 的号名从第一篇补上 |
| 量子位那篇短链加 `--stats` | 0.01 美元，数字和单调接口一致；重跑跳过，0 |
| 截掉参数的长链加 `--force` | 页面没正文，退回 TikHub，0.01 美元，`warnings` 写着「未知错误」，正文和直接取的一样 |
| 用一篇文章链接找号，`--limit 1` | 找号不花钱，列表 0.01 美元，那篇之前取过，跳过 |
| `--account 机器之`（名字对不上） | 搜一次 0.01 美元，`error` 列出 5 个候选 |
| `--limit 0` 不带 `--yes` | 不调接口，直接报错 |
| 改完 `share_common.py` 回归：抖音、B 站各一条，`--no-video` | 都成功 |

### 视频号

| 请求 | 结果 |
|---|---|
| `wechat_search/v2/fetch_search_videos` 搜「RTX 5070 评测」 | 3.0 秒，总数 209；每条只有 `exportId`，没有视频地址 |
| `wechat_channels/v2/fetch_video_detail` 传 `export_id` | 3.3 秒；点赞、收藏、转发、评论都有，播放数是 0；`media` 给直链、`url_token` 和 `decode_key` |
| 下载直链 | 7.7 MB，接口写的 `file_size` 是 79.7 MB，没查下到的是不是低码率那档；文件头不是 MP4 |
| 解密文件头 | 文档说只加密了前 128 KB，和一段密钥流异或。纯 Python 写的 ISAAC64 拿 `decode_key` 当种子，每个输出按大端取 8 字节，文件头解出 `ftyp isom` |

### 新 agent 只照用法页跑

开一个没有上下文的 agent，只给最初那句「这是我的一些收藏，看看如何收纳到本wiki……读取方式看本wiki的 agent-io 部分」和 6 条小红书链接，看文档够不够用。

| 轮次 | 结果 | 卡在哪、改了什么 |
|---|---|---|
| 2026-10-17 第一轮 | 6 条全部读全：正文、作者、点赞收藏、36 张原图、2 个视频；TikHub 6 次加下载狗 2 次，0.06 美元加 0.01 元 | 自己用 grep、cut 抠 key，被 Claude Code 权限检查当成数据外泄拦下，改 source `.env` 才过 → 用法写上载入命令；用法页写成「媒体走下载狗」，调用顺序要自己摸 → 改成按平台的先后表；`type` 分不出轮播视频 → 写进小红书选项卡；阅读视频没有退路 → 能力表指向视频笔记；下原图要不要 Referer 没写 → 补上 |

## 没做的 { #not-done }

- 快手、微博等平台没测；抖音、小红书的评论都没接，TikHub 有评论接口，没测。
- 小红书传完整链接更快，但要 Agent 先自己跟一次跳转，用法页没写。
- 下载狗文档说额度不够返回 429，没遇到过。
- 下载狗给的小红书视频直链里 `t=` 换算出来正好是解析后 84 小时，像是有效期，没等到过期验证。
- TikHub 的 B 站接口没接：B 站公开接口直连就够，不花钱。
- B 站匿名拿得到字幕的视频一条也没碰到，脚本里字幕下载那段没实测。
- TikHub 小红书的视频地址接口 `get_video_note_detail`、评论接口没测；`share_text` 传短链没测。
- TikHub 小红书更便宜的接口没比：`web_v3/fetch_note_detail` 要 note_id 加 xsec_token，单价没查。
- TikHub 每次返回都带 `cache_url`，说 24 小时内再取不另收费，没测；同一条要反复取时可以先试它。
- 脚本的小红书短链、`b23.tv` 短链两条路没测。
- 作者主页的短链没测：手上没有抖音、小红书的主页短链，跟跳转那段只拿抖音作品短链试过；小红书 `share_text` 传主页链接也没测。
- 主页模式加 `--video` 没测，走的是单条那条路。
- 抖音作者少的那 1 条作品没查是不是私密或删了；作者删掉的作品，翻到底的新列表里不再有，文件夹还留着。
- 别的平台的作者主页接口只查了价没接：B 站 `bilibili/web/fetch_user_post_videos` 0.001 美元，快手 `kuaishou/app/fetch_user_post_v2` 0.01 美元，微博 `weibo/web_v2/fetch_user_posts` 0.001 美元，另有视频号、知乎、TikTok、X、Instagram。
- 抖音图文的 `download_url_list` 带水印、模板写的是 3000:3000，没下下来比过是不是比 `url_list` 的大。
- TikHub 小红书视频笔记的 `native_voice_info.url` 是音轨直链（m4a 或 wav），按理能跳过下视频直接转写，没测。
- 视频号没接：整段解密在本机被 Claude Code 的权限检查拦下，没解完，也就没验证能不能播。
- 公众号的评论、二级回复、资料页、菜单、广告、关联文章接口没测；`fetch_article_detail`（非 H5）没测，文档说更快但不稳。
- 公众号的贴图、音频、视频类文章没碰到，`kind` 照 `item_show_type` 分，正文能不能取到没测；`fetch_account_articles` 按 `item_show_type` 取视频、音频、贴图栏也没测。
- 被删、违规的文章没碰到，脚本按页面上「已被发布者删除」这几句话判断；付费文章没测，脚本看到 `appmsg_needpay` 只加一条 `warnings`。
- 连着直接取多少篇会碰到验证页没测，一次最多连取过 5 篇。
- 同一篇公众号文章传短链和长链会落进两个文件夹：短链只认得出短码，`meta.json` 的 `id` 是一样的。

[^xiazaitool]: [下载狗 API 接口文档](https://www.xiazaitool.com/jiekou)，2026-10-10 读，2026-10-17 复核字段表和响应示例。
[^tikhub]: [TikHub 文档](https://docs.tikhub.io/)，2026-10-17 读，公众号、视频号部分 2026-10-18 从 `https://api.tikhub.io/openapi.json` 读；单价取自同日 TikHub 后台的账单明细，作者主页那几个接口取自 `get_endpoint_info`。
