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.5 | $0.00021 | $0.00424 |
| Sonnet 5.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 1mo 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.
- 1mo ago Changed · +4 lines 6ca15ed6e160
- 1mo 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 (60 stars, last pushed 24d ago), licensed MIT. It adds 53 tokens to every session and 1,060 once invoked, about $0.0002 per session on Opus 5.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
skill
Anti-detection browser automation MCP skill for OpenClaw agents with 47 tools for navigation, interaction, observation, extraction, downloads, profiles, sessions, and stealth web search.
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…
fanqie-publisher
Publish prepared novel chapters from local Markdown files to the Fanqie Novel writer web backend via browser automation. Use when the user wants to upload chapters, continue publishing unpublished chapters, save or reuse login state, or schedule Fanqie chapter releases from a local directory.