2392772541/ai-skills/douyin-favorite-links
Claude Code and agent skill by 2392772541/ai-skills
- community
Checking that the SKILL.md file is still in the repository.
从飞书云文档提取并去重 Douyin video/note 链接,在已登录的抖音网页中批量加入指定收藏夹并完成两轮分页核验。Use when the user asks to收藏内刊或飞书文档中的抖音链接、批量添加抖音收藏夹,或复用“抖音收藏视频链接”流程;不用于抖音上传、发布、下载或单条转写。
Install
npx vskill@latest install 2392772541/ai-skills/douyin-favorite-linksSKILL.md
抖音收藏视频链接
把“飞书文档中的抖音链接”变成“指定抖音收藏夹中的已核验作品”。这是一个外部写入工作流:先读取和核对,后按差集逐条写入,最后用两轮新鲜回读证明结果。
适用边界
使用本 Skill 处理:
- 飞书云文档、内刊或知识库页面中的
douyin.com/video/<数字>和douyin.com/note/<数字>链接。 - 将去重后的作品加入用户指定的抖音收藏夹;未指定时默认使用“水球泡视频周报”。
- 已有收藏跳过、缺失作品顺序写入、失败后从新鲜差集恢复、最终双轮验收。
不要用于:
- 抖音视频或图文上传、发布、定时发布;这属于
douyin-upload。 - 下载、转写、保存单条抖音内容;这属于
mrcarlsama-social-transcriber。 - 作者主页批量抓取、搜索、评论采集、读取浏览器 Cookie、绕过登录/验证码或访问无关站点。
- 取消收藏、删除收藏夹、重命名收藏夹、移出作品或任何“纠正性”移动操作。
复用已安装的 lark-doc/lark-drive 处理飞书文档,复用 Browser skill 处理已登录网页;不要复制这些 Skill 的正文。文档读取前遵守 lark-doc 对 lark-shared 和 fetch 参考文档的前置要求。
输入与产物
需要以下信息:
- 飞书文档 URL/token;只有标题时,先用飞书云盘搜索并精确核对标题,不能凭标题猜文档。
- 目标收藏夹名称;缺省为“水球泡视频周报”。
- 可读取该文档的飞书登录态和可操作收藏夹的抖音登录态。
在当前工作区写出不含 Cookie、Token 或密钥的清单 JSON,例如 douyin-favorite-items.json。至少包含:
source_title、source_revision_id、匹配到的链接出现次数;- 去重后的
unique_count; - 按文档首次出现顺序保存的
type、字符串id和规范化url。
最终报告必须给出:源文档与 revision、出现次数、去重数、目标收藏夹、原有/缺失/写入数量、每条业务结果摘要、两轮回读的页数与目标 ID 缺失列表、清单文件路径。
强制工作流
1. 建立检查点并读取文档
- 先用
jielibang建立检查点,记录目标、输入、收藏夹、当前阶段和下一步;不得记录秘密。 - 使用
lark-doc读取文档正文。标题搜索得到多个结果、文档不可访问、revision 不明确或正文为空时停止,不进入抖音写入阶段。 - 用结构化文本处理抽取匹配项。只接受:
``text (https?://)?(www.)?douyin.com/(video|note)/<仅数字> ``
保存首次出现顺序;按数字 ID 去重;ID 必须作为字符串保存。出现次数和去重数必须写入清单并在后续报告中复核。
2. 核对抖音登录态与收藏夹
- 使用 Browser skill。先打开
https://www.douyin.com/并等待首页完整加载,再导航到:
``text https://www.douyin.com/user/self?showSubTab=favorite_folder&showTab=favorite_collection ``
- 从当前页面刚生成的
/aweme/v1/web/collects/list/响应读取收藏夹。不得复用旧 Network request、旧响应对象或旧页面状态。 - 只接受名称完全等于目标名称的收藏夹:
- 恰好一个匹配:继续;
- 零个或多个匹配:停止写入并报告;
- 列表为空、页面结构不明确、HTTP 500、非 JSON 或业务
code=8:停止写入并如实报告。
- 必须使用响应中的
collects_id_str,并在调用前断言它是非空字符串。禁止把数值型collects_id转成字符串冒充正确 ID。
3. 分页读取并计算差集
- 从目标收藏夹的最新
/aweme/v1/web/collects/video/list/响应开始分页读取,保存每页aweme_list[].aweme_id为字符串,直到has_more为假或明确到达末页。 - 每次重试、超时恢复或第二轮验收前都重新捕获请求/响应;不要使用之前已被浏览器回收的响应体。
- 把文档目标 ID 与收藏夹已有 ID 做集合差集:
``text missing = target_ids - existing_ids ``
已存在的 ID 必须跳过,不调用收藏函数,也不调用加入/移动函数。收藏夹总数可以大于目标数,验收要求是目标集合被包含,不是两者数量相等。
- 如果读取到的列表为空,按照用户门禁停止写入;不要把“空列表”解释成“全部缺失”。
4. 逐条写入
对 missing 按清单顺序逐条执行,禁止并发和坐标批量点击:
- 调用抖音页面已验证的官方收藏函数:
``javascript 78209.KM({awemeId: ID, collectAction: 1}) ``
- 解析 JSON 并要求收藏业务字段
statusCode === 0。收到code=8、HTTP 500、非 JSON 或其他非零业务码时立即停止。 - 收藏成功后等待至少 5 秒。
- 调用官方加入收藏夹函数,参数必须是:
``javascript 795568.RX({ item_ids: [ID], item_type: 2, to_collects_id: STRING_FOLDER_ID, update_collects_sort: true }) ``
不得传 move_collects_list,不得传数值型收藏夹 ID。
- 解析 JSON 并要求
status_code === 0;每条记录 ID、两个业务码和必要的响应摘要。 - 当前条完成后、下一条开始前至少等待 5 秒。
如果网络超时或响应不确定,禁止直接重试同一个 ID:先重新分页读取目标收藏夹、重新计算差集,只对新鲜差集中的 ID 操作,避免重复写入已有作品。
5. 双轮回读验收
- 所有写入返回成功后,重新分页读取目标收藏夹全部内容,断言:
``text target_ids <= verified_existing_ids ``
- 任一目标 ID 缺失都只能报告为未完成/部分完成;不要取消、移出、删除或猜测坐标补救。
- 等待至少 5 秒,再从当前页面重新捕获并完整分页读取第二轮。第二轮必须再次确认目标 ID 全部存在。
- 第二轮不通过时,保持收藏夹现状并报告缺失 ID、已确认 ID、失败阶段和可安全恢复的下一步;不要把第一轮结果冒充最终完成。
强制停止条件
遇到以下任一情况,停止所有写入并保留证据:
- 抖音未登录、业务
code=8、出现验证码/安全挑战或需要绕过访问限制; - HTTP 500、非 JSON、收藏夹列表为空、目标名称匹配数不是 1、
collects_id_str缺失或类型不对; - 页面结构或分页出口不明确,无法证明读取的是目标收藏夹全部内容;
- 任一收藏/加入收藏夹业务码非 0、响应与预期 schema 不符、或网络结果不确定;
- 用户临时要求取消、删除、重命名、移出、移动或绕过上述门禁。
停止后如实报告已完成和未完成数量。登录问题只提示用户在同一浏览器完成正常登录后重跑,不读取或索要 Cookie。
反偷懒门禁
| 常见借口 | 必须采取的反证动作 | |
|---|---|---|
| “页面上看着已经有了” | 重新分页到末页,并用目标 ID 集合做断言 | |
| “函数返回成功就算完成” | 同时检查 statusCode、status_code,再做两轮新鲜回读 | |
| “数字 ID 传进去也一样” | 只接受响应里的字符串 collects_id_str,调用前断言类型 | |
| “旧响应还能用” | 丢弃旧请求/响应,重新捕获当前页面响应 | |
| “超时再试一次最快” | 先新鲜回读并重算差集,禁止盲重试 | |
| “时间紧,先跳过等待或验收” | 等待和双轮回读是外部写入的完成条件,不可跳过 |
可观察红旗:未确认源文档就打开写入页面、把收藏夹总数当目标集合、对已有 ID 调用写函数、使用 collects_id、并发调用、传入 move_collects_list、未检查业务码却报告成功、只做一轮回读、把 warning 当成零问题。
触发样例
正向:
- “把这期飞书内刊里的抖音链接都收藏到水球泡视频周报。”
- “读取飞书文档,提取 video/note 链接,去重后批量加入我的抖音收藏夹。”
- “继续使用抖音收藏视频链接流程,把文档里的作品补进指定收藏夹并做两次回读。”
负向:
- “把这个视频上传并发布到抖音。”
- “下载这条抖音并转成逐字稿。”
完成标准
只有同时满足以下条件才报告“完成”:
- 源文档、revision、链接出现次数和去重清单已落盘;
- 目标收藏夹名称精确匹配唯一,使用字符串
collects_id_str; - 已存在作品全部跳过,缺失作品逐条返回两个业务码 0;
- 没有调用取消、删除、重命名、移出、移动或验证码绕过操作;
- 第一轮和等待后的第二轮都完整分页,目标 ID 缺失列表为空;
- 检查点已更新,报告包含清单路径、统计、失败/停止信息和回读证据。
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/douyin-favorite-links/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/2392772541/ai-skills/douyin-favorite-links)