本 Skill 的抖音视频解析依赖脚本内实现的专用 HTTP 请求链路(重定向跟踪 → _ROUTER_DATA 数据提取),该流程针对抖音分享页结构定制,通用网页抓取工具无法等价替代。
> 若脚本执行失败,请将错误信息反馈给用户协助排查。
douyin-downloader-skill\
├── SKILL.md ← 本文件(Skill说明 + SOP)
├── requirements.txt ← 依赖锁定(版本 + SHA256 hash)
└── scripts\
└── download.py ← 核心下载脚本
> 下载默认保存位置:与 scripts/ 同级的目录下
> 即 douyin-downloader-skill\
> 如需指定其他目录,在调用时传入第二个参数。
用户输入(分享链接/文本)
→ 正则提取短链/长链
→ GET请求跟随301重定向 → 获取真实URL
→ 正则提取 video_id(支持modal_id/note_id/item_id等多种参数名)
→ GET https://www.iesdouyin.com/share/video/{video_id}/
→ 解析 window._ROUTER_DATA JSON
→ 提取 loaderData.*.videoInfoRes.item_list[0].video.play_addr.uri
→ 构造无水印链接:https://www.douyin.com/aweme/v1/play/?video_id={uri}
→ 流式下载到本地 .mp4
关键Headers:
(若403则自动去掉Referer重试)
脚本首次运行时会自动安装依赖(通过 requirements.txt,启用 --require-hashes SHA256 校验)。
如需提前手动安装:
pip install -r requirements.txt --require-hashes
> 安全策略:自动安装依赖时使用 requirements.txt + --require-hashes 进行 SHA256 完整性校验,防止供应链投毒。
import subprocess, sys
import os
script = os.path.join(os.path.dirname(__file__), "scripts", "download.py")
link = '用户提供的抖音链接或分享文本'
subprocess.run([sys.executable, script, link])
import subprocess, sys
import os
script = os.path.join(os.path.dirname(__file__), "scripts", "download.py")
link = '用户提供的抖音链接或分享文本'
output_dir = 'D:\\Videos' # 自定义目录
subprocess.run([sys.executable, script, link, output_dir])
import subprocess, sys
import os
script = os.path.join(os.path.dirname(__file__), "scripts", "download.py")
txt_file = os.path.join(os.path.dirname(__file__), "links.txt")
subprocess.run([sys.executable, script, '--batch', txt_file])
import sys
import os
skill_dir = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(skill_dir, "scripts"))
from download import run, run_batch
# 单个(保存到 Skill 目录)
run('https://v.douyin.com/xxxxxx/')
# 单个(指定目录)
run('https://v.douyin.com/xxxxxx/', 'D:\\Videos')
# 批量
run_batch(os.path.join(skill_dir, 'links.txt'))
.mp4 文件links.txt,再用 --batch 模式[+] 正在解析链接: https://v.douyin.com/xxxxx/
[+] 视频ID: 7562497408383438095
[+] 视频: 所谓"长征",从来不是过去的故事 | 作者: 延安市融媒体中心
[+] 正在下载: 所谓"长征",从来不是过去的故事_7562497408383438095.mp4
[##################################################] 100.0%
[OK] 下载完成!保存至: <保存目录>\所谓"长征",从来不是过去的故事_7562497408383438095.mp4
文件名格式:{视频标题前30字}_{video_id}.mp4
requirements.txt + SHA256 hash 校验)pip install -r requirements.txt --require-hashes_ROUTER_DATA 数据结构是否变更共 3 个版本