Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add zJay26/douyin-skills --skill douyin-interactgit clone --depth 1 https://github.com/zJay26/douyin-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zjay26/douyin-skills/douyin-interact)<a href="https://agentmods.dev/skills/zjay26/douyin-skills/douyin-interact"><img src="https://agentmods.dev/badge/skills/zjay26/douyin-skills/douyin-interact/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zjay26/douyin-skills/douyin-interact"><img src="https://agentmods.dev/badge/skills/zjay26/douyin-skills/douyin-interact.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00053 | $0.01060 |
| Opus 5 | $0.00026 | $0.00530 |
| Sonnet 5 | $0.00011 | $0.00212 |
| Haiku 4.5 | $0.00005 | $0.00106 |
Grade A, and why
douyin-interact scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.
执行基础互动
只使用 python "{baseDir}/../../scripts/cli.py" <子命令>。如果系统只有 python3,替换命令名。
前置确认
- 根据用户指定账号传
--account <名称>,并检查登录状态。 - 确认唯一目标作品。接受纯数字 ID、
douyin.com/video/...或douyin.com/note/...公开链接。 - 对刚发布的作品优先使用主页作品卡片中的公开链接,不使用创作者中心内部记录 ID。
- 不批量互动,不连续重复同一操作。
点赞
python "{baseDir}/../../scripts/cli.py" like-video --video-id <作品ID或公开链接>
网页按钮是切换开关。CLI 会先读取平台显式状态;state: already_active 表示没有重复点击。若点击前仍为 state: unknown,CLI 应返回 clicked: false 并安全停止,不要改用坐标或文字匹配盲点。只有 clicked: true 且 state_verified: false 才能报告“已点击点赞按钮,最终状态未稳定确认”,且不得重试。
收藏
python "{baseDir}/../../scripts/cli.py" favorite-video --video-id <作品ID或公开链接>
同样先判定状态再操作。点击前状态不可靠时保持 clicked: false;按钮已点击但最终状态未确认时,交给用户在页面核对。
state: already_active表示目标状态本来就已激活,CLI 没有再次点击。state_verified: true表示页面通过适配器声明的data-e2e-state、ARIA、文案或样式暴露了明确证据;不要把一次普通点击自动等同于最终状态。
只读核对点赞与收藏状态
python "{baseDir}/../../scripts/cli.py" get-interaction-state --video-id <作品ID或公开链接>
- 该命令只读取当前按钮状态,不点击切换控件。
state_verified: true且state: active/inactive表示页面提供了明确状态证据。state: unknown或state_verified: false仍需用户在页面核对,不要改用点赞/收藏命令试探。
评论
python "{baseDir}/../../scripts/cli.py" comment-video --video-id <作品ID或公开链接> --comment "评论内容"
- 只在页面明确提供评论输入框和发送控件时尝试一次。
state: comment_confirmed表示评论文本已在评论区出现。state: comment_clicked_unconfirmed表示发送控件已点击但未确认评论出现;不要自动重试。state: comment_outcome_unknown、clicked: null表示发送指令期间异常,无法确认是否发送;不要重试,先检查评论区。comment_input_not_found、comment_text_not_applied或comment_submit_not_found表示没有发送评论,不要把填写输入框报告为已评论。comment_input_not_empty表示评论框中已有其他草稿;保留草稿且不要覆盖。
分享链接
python "{baseDir}/../../scripts/cli.py" share-video --video-id <作品ID或公开链接>
优先返回 JSON 的 share_url。copied_to_clipboard: false 只表示当前环境没有确认剪贴板写入;只要 share_url 有值,仍可把链接交给用户。
失败处理
-
点赞、收藏在图文和视频页面都必须先有可靠状态证据;图文操作栏缺少状态时不能按位置点击。
-
outcome_unknown: true、clicked: null或retry_safe: false表示不能自动重复操作;连接错误不等于没有执行。 -
needs_user_verification: true:停在 headed 浏览器,等待人工验证;risk_recovered: true且logged_in: true时继续,不要沿用切换前的风险判断。 -
作品不可访问:说明可能私密、已删除或链接错误。
-
按钮未找到:报告页面结构可能变化,不要用坐标盲点或其他自动化工具兜底。
-
不支持回复评论、私信分享或批量互动。
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago Changed · +4 lines 6ca15ed6e160
- 11d ago First seen · 72 lines · 53 tokens per session scan A 963cdbef9be9
douyin-interact is a skill published in the GitHub repository zJay26/douyin-skills (53 stars, last pushed 2d ago), licensed MIT. It adds 53 tokens to every session and 1,060 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
owb
Open Web Bridge (OWB) — drive the user's own real browser with the owb command. Read pages behind their existing logins, gather and cross-check information, fill forms, walk multi-step flows, debug their site, audit responsive/accessibility behavior, and capture or reverse-engineer network traffic. Use this whenever…
chrome-agent
Local browser automation with structured, verified outcomes. Use for web navigation, scraping and extraction, form interaction, screenshots and downloads, network or console checks, responsive testing, or page-scoped device emulation.
scrape-structured-data
Get the repeating records off a web page (product grids, search results, job listings, news feeds, tables) as JSON, without writing CSS selectors and without spending a model call to read the HTML. Works on sites with no API, including ones behind a login or bot protection. Runs locally, one binary, no API key. Use…
browser-bridge
Token-efficient Chrome tab inspection, interaction, and patching via local bridge extension (CLI: bbx). Reads live DOM, styles, console, network, and storage from a real Chrome tab with lower token cost than screenshots.
rever
Reverse-engineer web APIs by driving a running Rever Browser instance — connect to its published MCP endpoint and use its browser-automation, network-capture, and JS-bundle-analysis tools. Use when the user types /rever, asks to reverse or analyze a website's API, capture or inspect its network traffic, deobfuscate…
unbrowser
Cheap first-pass web discovery without launching Chrome — fetch SSR pages, run bounded JS, find routes/forms/API endpoints, extract structured data, and detect bot-wall or browser-only escalation points.