Getting it into your agent
There is no command for this one: it runs only inside a plugin, and the catalogue could not identify which plugin ships it. The source is linked below.
Wrote 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/yehyakin/hermes-skills/douyin-video-acquisition)<a href="https://agentmods.dev/skills/yehyakin/hermes-skills/douyin-video-acquisition"><img src="https://agentmods.dev/badge/skills/yehyakin/hermes-skills/douyin-video-acquisition/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/yehyakin/hermes-skills/douyin-video-acquisition"><img src="https://agentmods.dev/badge/skills/yehyakin/hermes-skills/douyin-video-acquisition.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00042 | $0.02649 |
| Opus 5 | $0.00021 | $0.01324 |
| Sonnet 5 | $0.00008 | $0.00530 |
| Haiku 4.5 | $0.00004 | $0.00265 |
Grade A, and why
douyin-video-acquisition scanned grade A with 1 finding 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 12d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
# Step 3: 用 Python websocket 库连接(不能用 curl) How it starts
The opening of the file, as written. The whole thing — 222 lines — stays where its author put it; the contents beside it link to each section on GitHub.
抖音视频获取
核心方案
使用 CharlesPikachu/videodl 的 DouyinVideoClient,在 Python 3.11 venv 下运行。
前置条件
videodl 已持久化在 ~/.hermes/scripts/videodl,无需额外安装。
Python 3.11 venv 路径:/Users/yehya/.hermes-guardian/venv/bin/python3
获取视频信息
/Users/yehya/.hermes-guardian/venv/bin/python3 ~/.hermes/scripts/douyin_get.py "https://v.douyin.com/xxxxx"
输出示例:
✅ 标题: 「Spima.铂金」120 支高支棉...
👤 作者: 秦磊男装旗舰店
⏱️ 时长: 64.2秒
🏷️ 话题: 秦磊, 秦磊男装, 男士搭配
🎬 视频ID: 7634125020805057801
📥 下载链接:
http://www.iesdouyin.com/aweme/v1/play/?video_id=xxx&ratio=1080p&line=0
JSON 格式输出
/Users/yehya/.hermes-guardian/venv/bin/python3 ~/.hermes/scripts/douyin_get.py "URL" --json
返回字段:title, author, duration_ms, cover_url, download_url, ext, aweme_id, hashtags
内部数据结构(经验值)
# 重要:raw_data 的路径是 loaderData['video_(id)/page']['videoInfoRes']
# 不是 loaderData['videoInfoRes']!踩坑发现的
info = results[0]
raw = info.raw_data
ld = raw.get('loaderData', {})
vid_page = ld.get('video_(id)/page', {}) # ← 特殊键名,含斜杠
vip = vid_page.get('videoInfoRes', {})
item = vip.get('item_list', [{}])[0]
# item 包含: desc, author.nickname, video.duration, aweme_id, text_extra(话题)
完整获取脚本
~/.hermes/scripts/douyin_get.py — 已封装好上述路径解析,直接调用:
# 文本输出
/Users/yehya/.hermes-guardian/venv/bin/python3 ~/.hermes/scripts/douyin_get.py "URL"
# JSON输出(程序调用)
/Users/yehya/.hermes-guardian/venv/bin/python3 ~/.hermes/scripts/douyin_get.py "URL" --json
下载视频
# Step 1: 获取 download_url(iesdouyin.com 格式)
URL=$(/Users/yehya/.hermes-guardian/venv/bin/python3 ~/.hermes/scripts/douyin_get.py "URL" --json 2>/dev/null | \
/Users/yehya/.hermes-guardian/venv/bin/python3 -c "import sys,json; print(json.load(sys.stdin)['download_url'])")
# Step 2: yt-dlp 下载(加了 User-Agent 和 Referer 才能拿真实CDN链接)
yt-dlp -o "%(title)s.%(ext)s" "$URL" \
--add-header "User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15" \
--add-header "Referer:https://www.douyin.com/"
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 12d ago First seen · 222 lines · 42 tokens per session scan A e0fb6fc64655
douyin-video-acquisition is a skill published in the GitHub repository yehyakin/hermes-skills (9 stars, last pushed 3mo ago), licensed MIT. It adds 42 tokens to every session and 2,649 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
card-xiaohongshu
Xiaohongshu-style knowledge cards, arranged as a swipeable multi-card carousel.
data-report
Turns CSV, Excel, or JSON data into a polished visual report page.
poster-hero
Vertical poster or Moments-style share image with strong visual impact.
union-type-wrappers
Add typed getters and setters over BinaryData properties that represent TypeSpec union types in generated Java models. Use when generated classes expose BinaryData for union-typed fields and you need ergonomic, type-safe accessors instead.
run-tests
Run project tests using Maven (mvn). Use when the user asks to run tests.
search-m2
Search for Java classes inside Maven dependencies in /.m2. Use when the user asks to locate classes or inspect JARs. Cross-reference pom.xml files in the current directory to resolve dependency names/versions.