1实现原理 · 为什么它能做到
任何提取动作之前先跑只读凭证预检,用 credential_state 把能力收窄到当前可用的那一侧。
skills/dbs-video-extract/SKILL.md
python3 scripts/extract_video.py --check-keys
注:四态:complete / data_only / transcript_only / unavailable;SKILL.md 规定只有一个 Key 时允许继续,但必须说明本次只能解决哪一部分。
两个外部服务分工明确:TikHub 负责作品/账号结构化数据,轻抖负责语音文字稿,且平台支持范围写死。
skills/dbs-video-extract/SKILL.md
- 当前 TikHub 专用数据解析支持抖音、小红书和微信视频号;其他轻抖可识别的平台仍可只执行文字稿提取。
注:SKILL.md 数据边界节还规定:抖音优先 App V3、无有效数据只回退 1 次 Web,小红书用 App V2 视频笔记详情,视频号用 Channels V2 作品详情。
TikHub 侧走 MCP(Streamable HTTP),协议版本与三个平台端点写在脚本常量里。
skills/dbs-video-extract/scripts/tikhub_api.py
MCP_PROTOCOL_VERSION = "2024-11-05"
注:MCP_URLS 映射 douyin/xiaohongshu/wechat 到 mcp.tikhub.io 对应路径;REST 默认 https://api.tikhub.dev。
轻抖侧是"提交任务 + 轮询取结果"的 REST 流程,带超时与间隔控制。
skills/dbs-video-extract/scripts/extract_video_transcript.py
url = f"{base_url.rstrip('/')}/web/api/getTaskResult?{query}"
注:commit_task 提交后 poll_task 轮询 batchStatus(0/1 处理中、2 结束),超时由 --transcript-timeout(默认 900s)控制。
Key 按四级顺序查找:环境变量 → 用户指定的本地文件 → ~/.config/dbs/API_Keys.md → macOS 钥匙串。
skills/dbs-video-extract/scripts/extract_video_transcript.py
["security", "find-generic-password", "-s", KEYCHAIN_SERVICE, "-w"],
注:钥匙串服务名为 dbs-tikhub-api-key / dbs-qingdou-api-key;仅在 darwin 且未设 DBS_VIDEO_EXTRACT_DISABLE_KEYCHAIN=1 时尝试。
配套的安全配置脚本用 getpass 隐蔽读取、写入 0600 权限文件并原子替换,Key 不出现在命令、回复或日志里。
skills/dbs-video-extract/scripts/configure_api_key.py
secret = getpass.getpass("使用凭证:").strip()
注:写盘路径为 tempfile.mkstemp 临时文件 → chmod 0600 → os.replace 原子替换 → 目标文件再 chmod 0600,失败时删除临时文件。
请求失败信息在抛出前把 API Key 替换成 [REDACTED],避免凭证经错误信息泄漏到回复。
skills/dbs-video-extract/scripts/tikhub_api.py
detail = detail.replace(api_key, "[REDACTED]")
注:轻抖脚本同样处理(extract_video_transcript.py 中同款替换)。
Base URL 与接口路径做形状校验(只允许纯 HTTPS 域名 + 固定 /api/v1/ 前缀),压缩被改写指向的攻击面。
skills/dbs-video-extract/scripts/tikhub_api.py
raise TikHubError("Base URL 必须是只有域名的 HTTPS 地址。")
注:normalize_api_path 另拒绝含域名、查询串或片段的路径;均为"防误配"性质,不是反爬绕过。
归档规则与用户编辑保护:按 {输出目录}/{作者}/{标题}.md 落盘,已存在默认跳过,只有 --overwrite 才覆盖。
skills/dbs-video-extract/scripts/extract_video_transcript.py
path.write_text(render_markdown(item, title, author), encoding="utf-8")
注:SKILL.md 明文:"同一来源已经存在时默认跳过文稿写入,保护用户编辑"。
缺少凭证时不直接抛技术术语,而是走"解释 API Key → 选择能力 → 购买指引 → 固定法律提示 → 本地安全配置"的连续路径。
skills/dbs-video-extract/SKILL.md
> dbskill 是免费开源项目,与 TikHub、轻抖无隶属、合作或利益关系。充值由用户自主决定,相关交易、服务、争议及风险由用户自行承担;法律另有规定的除外,dbskill 不承担责任。
注:法律提示要求"必须原样展示,不能省略或改写";购买地址来自代码常量 PURCHASE_URLS,只展示当前缺失的服务。
单侧失败不丢结果:任一侧失败仍完成另一侧,并在 JSON 汇总里标 partial_success。
skills/dbs-video-extract/SKILL.md
TikHub 或轻抖任一侧失败时继续完成另一侧,并在汇总中标记 `partial_success`。已经取得的结果不能因单侧失败而丢弃。
注:凭证状态、TikHub 数据摘要与文稿路径同在一个 JSON 汇总里输出,便于上层 agent 决策。
2核心能力
01分享文案复制的链接提取与平台识别(抖音/小红书/视频号)
02TikHub MCP 数据查询(作品/账号),含 --raw-data 原始响应
03轻抖文字稿提交与轮询,正文忠实保存不润色
04按作者/标题归档 Markdown,已存在默认跳过(保护用户编辑)
05凭证状态分级(complete/data_only/transcript_only/unavailable)与单侧降级
06凭证多来源解析(env / 指定文件 / ~/.config/dbs/API_Keys.md / macOS 钥匙串)
07安全配置脚本(隐蔽输入 + 0600 + 原子写)
08计费与法律透明度:执行前告知可能计费,购买页强制原样展示免责声明
09部分成功容错与非破坏性输出(不自动下载媒体/发布/提交 Git)
3外部依赖
| 类型 | 依赖 |
|---|---|
| api | TikHub(作品/账号数据,MCP Streamable HTTP + REST) |
| api | 轻抖(语音文字稿提交与轮询) |
| cli | python3(运行 4 个自带脚本;仅标准库) |
| cli | security(macOS 钥匙串读取,仅 darwin 且未禁用时) |
| network | 购买/充值页(仅展示给用户人工操作,不由脚本访问) |
4风险提醒 风险提醒:橙色 · 评估后使用
风险提醒:橙色 · 评估后使用
- 凭证读取面较大(env / 文件 / 钥匙串) — 任何拥有 Read 权限的 agent 或本机进程都可能读到 ~/.config/dbs/API_Keys.md 的 Key;建议长期用 0600 与钥匙串,并按服务最小充值。
- 第三方付费服务不可控:计费、配额、服务条款与数据合规由服务商决定 — SKILL.md 要求执行前告知可能计费,并强制展示"与 TikHub、轻抖无隶属、合作或利益关系"的免责声明;实际扣费与隐私处理需用户自行判断。
- 第三方返回文本原样落盘构成间接注入面 — 文稿正文按 API 原文保存进 Markdown;若后续 Agent 读取该目录内容,其中的文本可能被视为指令来源——属宿主防护范畴,应在使用侧限制可读范围。
- 平台支持与接口稳定性依赖外部服务 — 数据解析仅覆盖抖音/小红书/视频号,其余平台只能取文字稿;服务端字段变更会导致 App→Web 回退或失败。
- 购买引导链路会展示外部充值地址 — skill 明确要求先展示法律提示再展示官方地址、并禁止使用第三方代理或二手 Key;用户仍需自行确认页面真伪(skill 无法代验)。
风险提醒:橙色,评估后使用。判级依据全部取自本 skill 目录内代码,可自证:自带 4 个 python 脚本会「为自身声明用途读取凭证/私有 token」——find_api_key 依次读 env TIKHUB_API_KEY/QINGDOU_API_KEY、TIKHUB_API_KEYS_FILE/QINGDOU_API_KEYS_FILE、~/.config/dbs/API_Keys.md、macOS 钥匙串 dbs-tikhub-api-key/dbs-qingdou-api-key;并把用户链接与文本送往第三方服务后端 TikHub(mcp.tikhub.io / api.tikhub.dev)与轻抖(www.qingdou.vip),可能计费、可能把素材出网,同时向用户指定目录写 Markdown。对照批4先例(home-assistant 读 $HASS_TOKEN、ai-image-generation/ai-video-generation 等生成后端 = orange),落 🟠。不触 red 线:无逆向 API、无客户端冒充、无 TLS/沙箱降级、无绕过平台限制、无任意代码执行。
5第二遍独立确认
- [ok] 凭证四级来源与钥匙串调用真实存在 — tikhub_api.py / extract_video_transcript.py 中 find_api_key 依次读 env → 指定文件 → ~/.config/dbs/API_Keys.md → subprocess security;KEYCHAIN_SERVICE 分别为 dbs-tikhub-api-key、dbs-qingdou-api-key。
- [ok] 凭证写入按安全实践(0600 + 原子替换) — configure_api_key.py:mkstemp → write → temporary.chmod(0o600) → os.replace → target.chmod(0o600),异常时 unlink 临时文件。
- [ok] 错误信息脱敏(不泄漏 Key) — 两个客户端均含 detail.replace(api_key, "[REDACTED]"),且响应体截断(500/1000 字符)。
- [ok] 外部端點清单无遗漏 — 全量 URL 抽取得到的运行时端點仅 TikHub(REST/MCP)与轻抖;其余为文档/购买页链接。
- [ok] 无第三方 Python 包依赖 — 脚本 import 仅 json/logging/os/re/subprocess/sys/time/urllib/datetime/pathlib/typing/argparse/tempfile/getpass;目录内无 requirements.txt/setup.py/pyproject.toml。
- [ok] 不绕过平台限制、不自动下载/发布 — SKILL.md 原文"公开、删除、私密、版权和可见范围限制以接口返回为准,不尝试绕过。"与"不自动下载媒体、发布内容、提交 Git 或推送。"
- [ok] "已存在默认跳过"的写盘保护属实 — extract_video_transcript.py save_item 依据 overwrite 参数决定是否跳过;SKILL.md 与 agents/openai.yaml 表述一致。
- [ok] 付费与法律提示为强制展示 — SKILL.md"必须先原样展示下面这条提示,不能省略或改写",法律提示文本与脚本 LEGAL_NOTICE 常量同源。
6结论
适合:适合内容创作者/研究者批量提取抖音、小红书、微信视频号的分享链接数据与语音文字稿,并按作者+标题归档成可检索 Markdown 的场景;也适合已有 TikHub/轻抖其中一个凭证、想按可用能力降级使用的用户。
不适合:不适合没有任何凭证且不愿购买外部服务的用户(skill 明确"当前两个服务都没有开通…无法使用",不会绕过);不适合需要下载视频/图片等媒体文件的场景(明确不自动下载媒体);不适合处理平台限制内容(私密/已删除/版权限制以接口返回为准,不绕过);不适合把 Key 直接粘贴到对话里的用法(skill 要求用本地配置脚本)。
安装 agent 直装可复制
① 本站镜像 更新 2026-09-15
方式 A · 人下载镜像包下载 dbs-video-extract.tar.gz
sha256:
方式 B · JSON 格式安装指南,复制给 agent3d8bb7e6cc40716a…agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
② 上游 GitHub · 原始来源
来源信息 GitHub 原始
作者 / 仓库dontbesilent2025 / dontbesilent2025/dbskill
原始 GitHubdontbesilent2025/dbskill ↗
Stars10121
最近推送2026-09-07
本 skill commit
8b8e33f1ec许可CC BY-NC 4.0(非商业授权):仓库根 LICENSE 为 Attribution-NonCommercial 4.0 International (CC BY-NC 4.0),Copyright (c) 2026 dontbesilent;GitHub API license.spdx_id = NOASSERTION (CC BY-NC 4.0 非 SPDX 标准文本,GitHub 无法自动识别),不得用于商业用途
本站信息
收录日期2026-09-06
分类内容创作
侦查报告AI 侦查 · 2 遍 · 2026-09-06
本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。