2392772541/ai-skills/douyin-favorite-links

Claude Code and agent skill by 2392772541/ai-skills

Trust tier 3
  • community
Source check pending

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-links

SKILL.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 参考文档的前置要求。

输入与产物

需要以下信息:

  1. 飞书文档 URL/token;只有标题时,先用飞书云盘搜索并精确核对标题,不能凭标题猜文档。
  2. 目标收藏夹名称;缺省为“水球泡视频周报”。
  3. 可读取该文档的飞书登录态和可操作收藏夹的抖音登录态。

在当前工作区写出不含 Cookie、Token 或密钥的清单 JSON,例如 douyin-favorite-items.json。至少包含:

  • source_title、source_revision_id、匹配到的链接出现次数;
  • 去重后的 unique_count;
  • 按文档首次出现顺序保存的 type、字符串 id 和规范化 url。

最终报告必须给出:源文档与 revision、出现次数、去重数、目标收藏夹、原有/缺失/写入数量、每条业务结果摘要、两轮回读的页数与目标 ID 缺失列表、清单文件路径。

强制工作流

1. 建立检查点并读取文档
  1. 先用 jielibang 建立检查点,记录目标、输入、收藏夹、当前阶段和下一步;不得记录秘密。
  2. 使用 lark-doc 读取文档正文。标题搜索得到多个结果、文档不可访问、revision 不明确或正文为空时停止,不进入抖音写入阶段。
  3. 用结构化文本处理抽取匹配项。只接受:

``text (https?://)?(www.)?douyin.com/(video|note)/<仅数字> ``

保存首次出现顺序;按数字 ID 去重;ID 必须作为字符串保存。出现次数和去重数必须写入清单并在后续报告中复核。

2. 核对抖音登录态与收藏夹
  1. 使用 Browser skill。先打开 https://www.douyin.com/ 并等待首页完整加载,再导航到:

``text https://www.douyin.com/user/self?showSubTab=favorite_folder&showTab=favorite_collection ``

  1. 从当前页面刚生成的 /aweme/v1/web/collects/list/ 响应读取收藏夹。不得复用旧 Network request、旧响应对象或旧页面状态。
  2. 只接受名称完全等于目标名称的收藏夹:
  • 恰好一个匹配:继续;
  • 零个或多个匹配:停止写入并报告;
  • 列表为空、页面结构不明确、HTTP 500、非 JSON 或业务 code=8:停止写入并如实报告。
  1. 必须使用响应中的 collects_id_str,并在调用前断言它是非空字符串。禁止把数值型 collects_id 转成字符串冒充正确 ID。
3. 分页读取并计算差集
  1. 从目标收藏夹的最新 /aweme/v1/web/collects/video/list/ 响应开始分页读取,保存每页 aweme_list[].aweme_id 为字符串,直到 has_more 为假或明确到达末页。
  2. 每次重试、超时恢复或第二轮验收前都重新捕获请求/响应;不要使用之前已被浏览器回收的响应体。
  3. 把文档目标 ID 与收藏夹已有 ID 做集合差集:

``text missing = target_ids - existing_ids ``

已存在的 ID 必须跳过,不调用收藏函数,也不调用加入/移动函数。收藏夹总数可以大于目标数,验收要求是目标集合被包含,不是两者数量相等。

  1. 如果读取到的列表为空,按照用户门禁停止写入;不要把“空列表”解释成“全部缺失”。
4. 逐条写入

对 missing 按清单顺序逐条执行,禁止并发和坐标批量点击:

  1. 调用抖音页面已验证的官方收藏函数:

``javascript 78209.KM({awemeId: ID, collectAction: 1}) ``

  1. 解析 JSON 并要求收藏业务字段 statusCode === 0。收到 code=8、HTTP 500、非 JSON 或其他非零业务码时立即停止。
  2. 收藏成功后等待至少 5 秒。
  3. 调用官方加入收藏夹函数,参数必须是:

``javascript 795568.RX({ item_ids: [ID], item_type: 2, to_collects_id: STRING_FOLDER_ID, update_collects_sort: true }) ``

不得传 move_collects_list,不得传数值型收藏夹 ID。

  1. 解析 JSON 并要求 status_code === 0;每条记录 ID、两个业务码和必要的响应摘要。
  2. 当前条完成后、下一条开始前至少等待 5 秒。

如果网络超时或响应不确定,禁止直接重试同一个 ID:先重新分页读取目标收藏夹、重新计算差集,只对新鲜差集中的 ID 操作,避免重复写入已有作品。

5. 双轮回读验收
  1. 所有写入返回成功后,重新分页读取目标收藏夹全部内容,断言:

``text target_ids <= verified_existing_ids ``

  1. 任一目标 ID 缺失都只能报告为未完成/部分完成;不要取消、移出、删除或猜测坐标补救。
  2. 等待至少 5 秒,再从当前页面重新捕获并完整分页读取第二轮。第二轮必须再次确认目标 ID 全部存在。
  3. 第二轮不通过时,保持收藏夹现状并报告缺失 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

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
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/2392772541/ai-skills/douyin-favorite-links/badge)](https://verified-skill.com/skills/2392772541/ai-skills/douyin-favorite-links)

Something wrong with this skill or its page? Tell us.