Scan Report
20 /100
youtube-transcript
Fetch and summarize transcripts from any YouTube video using yt-dlp
A straightforward YouTube transcript fetcher with minor supply-chain concern (unused dependency) and a doc-to-code mismatch on shell execution capability.
Safe to install
Remove the unused `xml2js` dependency from package.json to reduce attack surface. Consider documenting the shell:WRITE capability in SKILL.md.
Findings 2 items
| Severity | Finding | Location |
|---|---|---|
| Low | Unused dependency increases attack surface Supply Chain | package.json:16 |
| Low | Shell:WRITE capability not declared in SKILL.md Doc Mismatch | SKILL.md:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Shell | NONE | WRITE | ✗ Violation | transcript.js:59 execSync('which yt-dlp'), transcript.js:75 spawnSync(ytdlp, [..… |
| Filesystem | NONE | READ | ✗ Violation | transcript.js:80 fs.readFileSync(outFile), transcript.js:81 fs.unlinkSync(outFil… |
| Network | READ | READ | ✓ Aligned | transcript.js:75 yt-dlp fetches captions via YouTube — correctly declared |
| Environment | NONE | NONE | — | No env access beyond PATH lookup for yt-dlp binary |
3 findings
Medium External URL 外部 URL
https://www.youtube.com/watch?v=LAdJsmTe8LM SKILL.md:37 Medium External URL 外部 URL
https://www.youtube.com/watch?v=$ transcript.js:76 Medium External URL 外部 URL
https://www.youtube.com/watch?v=abc123 transcript.js:118 File Tree
4 files · 13.1 KB · 436 lines JSON 2f · 260L
JavaScript 1f · 138L
Markdown 1f · 38L
├─
package-lock.json
JSON
├─
package.json
JSON
├─
SKILL.md
Markdown
└─
transcript.js
JavaScript
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
xml2js | ^0.6.2 | npm | No | Declared in package.json but NOT imported/used in transcript.js — dead dependency |
Security Positives
✓ No credential harvesting or environment variable enumeration observed
✓ No base64, eval, or obfuscation patterns present
✓ No network calls to third-party hosts — only YouTube via yt-dlp
✓ File operations are scoped to os.tmpdir() only
✓ No persistence mechanisms (no cron, startup hooks, or backdoors)
✓ URL validation present (extractVideoId function)
✓ Clean VTT sanitization with HTML tag stripping and deduplication