解析分享链接的维护记录:下载狗、TikHub、B 站与公众号
这是解析分享链接背后的维护记录。用接口时不用看,解析出问题或者要换服务时再看。
为什么两家一起用
- 下载狗便宜,媒体给得好:一次 0.005 元,抖音原画是 4.7 MB 的 HEVC。但对小红书只给标题和媒体,见下面的字段表
- TikHub 元数据全:正文、作者、点赞收藏、小红书原图都有。但小红书一次 0.01 美元,抖音原画是一百多 MB 的 H.264
- 所以媒体走下载狗,元数据走 TikHub。按 1 美元 7.2 元算,一条抖音约 2 分钱,一条小红书约 7 分钱
- 不直连小红书网页取数据:容易触发反爬,2026-10-17 定下只走中转
为什么写成脚本
- 文档够用,缺的是确定性逻辑:两轮新 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 站这一页 - 按平台拆开:并进 B 站后脚本长到 784 行。用户说「不同平台的请求脚本不应该封装在一起,现在这个太大了,而且还要保留提供底层接口」,拆成
xiaohongshu.py、douyin.py、bilibili.py、xiazaitool.py四个,各平台一样的部分放进share_common.py:文件夹格式、下载、下载狗调用和续跑、花费、命令行骨架。每个平台页上面写脚本,下面写底层接口。平台脚本要 importshare_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 这些各平台独有的,放进文件夹里固定的文件名
公众号为什么直接取文章页
- 收进来,照小红书的作者主页做: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
接口从哪来
下载狗
按次数买额度,接口文档1里用到的是这几点:
POST https://api.xiazaitool.com/api/parseVideoUrl,JSON 正文{"url": …, "token": …}。token 在正文里,不在请求头,所以中转用request_body改写正文,见 API 中转的坑- 文档说失败不计费,实测也是这样
- 文档示例里的
www.xiazaitool.com和api.xiazaitool.com都能用,中转接的是api. - 文档的字段表里没有正文。实际返回比文档多
remark、content、topic三个字段,小红书的这三个都是空的 - 别拿文档的响应示例推断小红书能给什么:示例是拼起来的,封面在小红书的
xhscdn.com,视频却在抖音的douyinvod.com;title里那串话题标签是抖音的写法,抖音没有单独的标题,文案整段放进title
TikHub
按接口计费,文档2按平台分好几代接口。用到的是这几点:
- 认证是标准的
Authorization: Bearer,中转跟 DeepSeek 一样只换请求头,见 API 中转 -
2026-10-17 账单上的单价:
接口 单价 douyin/web/get_aweme_id0.001 美元 douyin/app/v3/fetch_one_video_v30.001 美元 douyin/app/v3/fetch_video_high_quality_play_url0.005 美元 xiaohongshu/app_v2/get_image_note_detail0.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_info0.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_stats0.01 美元 wechat_mp/v2/fetch_article_detail_h50.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 秒
下载狗各字段稳不稳
2026-10-17 经中转解析 9 条小红书,加上下面实测里的 10-10 小红书、10-17 抖音。✅ 每次都有,⚠️ 有时有、或者拿到了用不了,❌ 字段是空的或者接口不给:
| 内容 | 小红书视频 2 条 | 小红书轮播视频 4 条 | 小红书图文 4 条 | 抖音视频 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 站只测过解析速度,字段没记,表里没列
实测
下载狗
从本机经国内中转测,抖音是 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;结果见上面的字段表 |
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 没写 → 补上 |
没做的
- 快手、微博等平台没测;抖音、小红书的评论都没接,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_videos0.001 美元,快手kuaishou/app/fetch_user_post_v20.01 美元,微博weibo/web_v2/fetch_user_posts0.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是一样的。
-
下载狗 API 接口文档,2026-10-10 读,2026-10-17 复核字段表和响应示例。 ↩
-
TikHub 文档,2026-10-17 读,公众号、视频号部分 2026-10-18 从
https://api.tikhub.io/openapi.json读;单价取自同日 TikHub 后台的账单明细,作者主页那几个接口取自get_endpoint_info。 ↩