Skills/ClawHub/auto-captions-skill

auto-captions-skill@1.0.0

VERIFIED· install only

Publisher claims: "Auto captions for videos, made on the user's own computer by their AI agent: transcribes speech with a time for every word (free local Whisper by default, or the user's own Groq or Deepgram key, or existing subtitles), proofreads names and numbers, burns creator-style captions into the video (8 presets: word highlight, bold, pill, reveal, two-line, clean subtitles, minimal, one word) in any shape (9:16, 4:5, 1:1, 16:9, crop or blurred background), writes SRT, VTT and a transcript, translates the captions into other languages with the same timing, shows a review sheet with each app's buttons drawn on, and posts or schedules the captioned videos to TikTok, Reels, Shorts, LinkedIn, Facebook, X, Threads and Bluesky through WoopSocial after a yes. Use when someone says "auto captions", "add captions", "add subtitles to my video", "caption generator", "subtitle generator", "burn in subtitles", "TikTok captions", "make an SRT", "translate my subtitles" or "caption this folder of videos". No watermark, no per-minute limits, no paid API needed. Standalone." Observed in sandbox: no network, touches nothing outside the project, writes no memory.

Registry ClawHubPublisher social-media-skills · publishing for 115 daysInstalls 0Last detonated 3d ago
$clawhub install auto-captions-skill
WatchReport an issue

Coverage

Nothing executable in the bundle ran; the trace covers the install step only.
Tested
every file read, file written and host contacted by what ran
Not tested
use of the skill by an agent

Is [email protected] safe to install?

KillerSkills ran it in the KillerSkills honeypot sandbox (1 scenario; nothing executable in the bundle ran; the trace covers the install step only) on 2026-11-11 and scored it 82/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.

Behavior trace

Honeypot run · 0 s · 1 scenarios · 0 deviations
t+CategoryObserved action
0.0sprocessno install scripts in bundle
0.0sprocessscript backend runs setup only
0.0sprocessscript backend runs setup only
0.0sprocessno install scripts to re-run

Static findings

MEDIUM
Python subprocess execution detectedscripts/aclib.py:481 · Python subprocess execution detectedsubprocess.run(["curl", "-sfL", url, "-o", part], check=False, timeout=120)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
HIGH
Privileged sudo commandscripts/aclib.py:257 · Privileged sudo command — agent may execute with elevated privileges"(then open a new terminal). Linux: sudo apt install ffmpeg (or your distro's package).")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
File type combined with upload actionscripts/render.py:6 · File type combined with upload action — agent may exfiltrate local data filespython3 scripts/render.py job.json --only speed --outputs vertical --lang es --forceFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Privileged sudo commandscripts/aclib.py:397 · Privileged sudo command — agent may execute with elevated privileges"--no-binary pillow pillow. Linux: sudo apt install libraqm0 (or libfribidi0). Windows: use "Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
Python subprocess execution detectedscripts/aclib.py:305 · Python subprocess execution detectedr = subprocess.run(["ffprobe", "-v", "error", "-show_streams", "-show_format", "-of", "json", path],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionscripts/render.py:5 · File type combined with upload action — agent may exfiltrate local data filespython3 scripts/render.py job.json # render every video x output x languageFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedscripts/aclib.py:271 · Python subprocess execution detectedr = subprocess.run(["ffmpeg", "-hide_banner", f"-{kind}"], capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/aclib.py:261 · Python subprocess execution detectedr = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionscripts/post_plan.py:5 · File type combined with upload action — agent may exfiltrate local data filespython3 scripts/post_plan.py post.json --media media.json # fill in uploaded mediaIdsFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Privileged sudo commandscripts/check_setup.py:46 · Privileged sudo command — agent may execute with elevated privileges"new terminal). Linux: sudo apt install ffmpeg")Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.
AST05
MEDIUM
File type combined with upload actionscripts/post_plan.py:26 · File type combined with upload action — agent may exfiltrate local data filesWrites plan.md and requests/captions/<video>.<account>.json next to post.json. media.json maps eachFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actionSKILL.md:155 · File type combined with upload action — agent may exfiltrate local data files3. `python3 <skill>/scripts/render.py captions.json` renders every video, output and languageFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actionscripts/post_plan.py:165 · File type combined with upload action — agent may exfiltrate local data filesap.add_argument("--media", help="media.json: {video file: mediaId} after uploading")Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actionevals/evals.json:42 · File type combined with upload action — agent may exfiltrate local data files…n captions with review; never restarts during a script; after render writes post.json for tomorrow 18:00 in the user's time zone, says the plan uses 3 accounts and the free plan covers 2, runs post_plan.py, uploads once, validates, shows p…Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST07
MEDIUM
File type combined with upload actionSKILL.md:172 · File type combined with upload action — agent may exfiltrate local data files1. Write `post.json` (`references/posting.md`) from what you already know: one account per placeFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
File type combined with upload actionevals/evals.json:7 · File type combined with upload action — agent may exfiltrate local data files…check_setup, asks only what it can't see (names to spell, look), writes captions.json with a 9:16 output, transcribes, runs fix.py --report and reads every line, writes fixes.json, sho…Fix: Put hosts, commands and strings in plain source. Decoding at runtime looks identical to malware and costs points on its own.
AST07
MEDIUM
File type combined with upload actionSKILL.md:143 · File type combined with upload action — agent may exfiltrate local data files3. `python3 <skill>/scripts/styles.py captions.json --at <a second with speech>` puts every styleFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedscripts/check_setup.py:33 · Python subprocess execution detectedout = subprocess.run(["ffmpeg", "-version"], capture_output=True, text=True).stdout.split("\n")[0]Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionscripts/captions.py:9 · File type combined with upload action — agent may exfiltrate local data files<id>.<lang>.txt a plain transcript (accessibility, show notes, the post text)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Python subprocess execution detectedscripts/transcribe.py:43 · Python subprocess execution detectedr = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/upload_parts.py:28 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Python subprocess execution detectedscripts/transcribe.py:136 · Python subprocess execution detectedr = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
File type combined with upload actionscripts/upload_parts.py:13 · File type combined with upload action — agent may exfiltrate local data filessession.json is the JSON returned by `media_uploads_create_session`. It must containFix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07

Cost to the agent

Instructions loaded
≈3,493 tok
1 file · 54 in bundle

Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.

Known vulnerabilities

Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.