Skip to content
Back to skills

Dwnldr

ASecurity

Yarr! Plunder videos from the seven seas of the internet — YouTube, TikTok, Instagram, X, Reddit & 1000+ ports o' call. Drop a link, get full quality loot with metadata scrubbed clean. No traces, no evidence, just pure content booty delivered straight to yer Telegram. Supports MP4, MP3, playlists, and more.

  • 16 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 7, 2026
content-marketingbashnodenodejs

Works with

  • cli

Security analysis

A100/100

Scanned June 7, 2026

npx -y skills add modbender/skill-library-mcp --skill dwnldr --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dwnldr?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dwnldr
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-dwnldr/badge)](https://www.skillsdirectory.com/skills/modbender-dwnldr)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dwnldr
description: "Yarr! Plunder videos from the seven seas of the internet — YouTube, TikTok, Instagram, X, Reddit & 1000+ ports o' call. Drop a link, get full quality loot with metadata scrubbed clean. No traces, no evidence, just pure content booty delivered straight to yer Telegram. Supports MP4, MP3, playlists, and more."
metadata:
  openclaw:
    emoji: "🏴‍☠️"
    trigger: "/dl"
    requires:
      bins:
        - yt-dlp
        - ffmpeg
---

# Video Downloader

Download videos from **YouTube, TikTok, Instagram, Twitter/X**, and 1000+ sites. Just paste a link — the video gets downloaded at full quality and sent back to you.

## URL Detection (AUTO-TRIGGER)

**CRITICAL:** When the user sends a message that contains a URL from any of these domains, AUTOMATICALLY treat it as a download request. Do NOT ask "what do you want me to do with this?" — just download it.

**Auto-detect domains:**
- `youtube.com`, `youtu.be`, `m.youtube.com`
- `tiktok.com`, `vm.tiktok.com`
- `instagram.com` (reels, posts, stories)
- `x.com`, `twitter.com`
- `reddit.com` (video posts)
- `twitch.tv` (clips)
- `vimeo.com`
- `facebook.com` (videos, reels)

**Pattern:** If user message contains a URL matching these domains → skip questions, download immediately.

## Download Flow

### Step 1 — Download

```bash
yt-dlp --js-runtimes nodejs \
  -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" \
  --merge-output-format mp4 \
  --no-playlist \
  --output "/home/rami/.openclaw/workspace/_incoming/%(title).50s.%(ext)s" \
  "<URL>"
```

**Fallback for stubborn sites (TikTok, Instagram):**
```bash
yt-dlp --js-runtimes nodejs \
  -f "best" \
  --no-playlist \
  --output "/home/rami/.openclaw/workspace/_incoming/%(title).50s.%(ext)s" \
  "<URL>"
```

### Step 2 — Strip metadata

Remove ALL metadata (title, author, GPS, comments, timestamps, source URL) for clean clips:

```bash
ffmpeg -i "/home/rami/.openclaw/workspace/_incoming/<filename>" \
  -map_metadata -1 \
  -fflags +bitexact \
  -flags:v +bitexact \
  -flags:a +bitexact \
  -c copy \
  "/home/rami/.openclaw/workspace/_incoming/<filename>_clean.mp4" \
  && mv "/home/rami/.openclaw/workspace/_incoming/<filename>_clean.mp4" \
        "/home/rami/.openclaw/workspace/_incoming/<filename>"
```

This strips: title, artist, comment, description, source URL, creation date, encoder info, GPS coordinates — everything.

### Step 3 — Get file info

```bash
ls -lh /home/rami/.openclaw/workspace/_incoming/<filename>
```

### Step 3 — Send to user

**If file is under 50MB** — send directly via Telegram:
```bash
openclaw message send \
  --channel telegram \
  --target <user_id> \
  --message "🎬 Downloaded: <title>" \
  --media /home/rami/.openclaw/workspace/_incoming/<filename>
```

**If file is over 50MB** — use LocalSend:
1. Notify user: "Video is <size> — too big for Telegram. Sending via LocalSend."
2. Start LocalSend send flow:
   ```bash
   localsend-cli send --to "<user_device>" /home/rami/.openclaw/workspace/_incoming/<filename>
   ```

**Buttons after send:**
```json
buttons: [
  [
    { "text": "🎬 Download Another", "callback_data": "dl:another" },
    { "text": "📱 Send via LocalSend", "callback_data": "dl:localsend" }
  ],
  [
    { "text": "🗑️ Delete File", "callback_data": "dl:delete" }
  ]
]
```

### Step 4 — Cleanup

After confirmed delivery, offer to delete the file to save disk space.

## Quality Options

Default is **best quality MP4**. If user asks for specific quality:

| Request | Flag |
|---------|------|
| "1080p" | `-f "bestvideo[height<=1080]+bestaudio/best[height<=1080]"` |
| "720p" | `-f "bestvideo[height<=720]+bestaudio/best[height<=720]"` |
| "audio only" / "mp3" | `-x --audio-format mp3` |
| "thumbnail" | `--write-thumbnail --skip-download` |

## Audio-Only Downloads

If user says "mp3", "audio only", "just the audio":

```bash
yt-dlp --js-runtimes nodejs \
  -x --audio-format mp3 \
  --output "/home/rami/.openclaw/workspace/_incoming/%(title).50s.%(ext)s" \
  "<URL>"
```

## Batch Downloads (Playlists)

If user sends a playlist URL and says "download all":

```bash
yt-dlp --js-runtimes nodejs \
  -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" \
  --merge-output-format mp4 \
  --output "/home/rami/.openclaw/workspace/_incoming/%(title).50s.%(ext)s" \
  "<URL>"
```

Remove `--no-playlist` flag for playlists.

## Error Handling

| Error | Fix |
|-------|-----|
| "Video unavailable" | Private/deleted video — notify user |
| "Sign in to confirm" | Age-restricted — try with `--cookies-from-browser chrome` |
| Geographic restriction | Try with `--geo-bypass` |
| Rate limited | Wait 30s and retry once |
| Merge failed | Fallback to `-f best` (single stream) |

## Callback Reference

| callback_data | Action |
|---------------|--------|
| `dl:another` | Prompt for another URL |
| `dl:localsend` | Send last downloaded file via LocalSend |
| `dl:delete` | Delete the downloaded file |
| `dl:audio` | Re-download as MP3 |

## CLI Reference

| Command | Usage |
|---------|-------|
| Best quality | `yt-dlp -f "bestvideo+bestaudio/best" --merge-output-format mp4 URL` |
| Audio only | `yt-dlp -x --audio-format mp3 URL` |
| List formats | `yt-dlp -F URL` |
| Thumbnail | `yt-dlp --write-thumbnail --skip-download URL` |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.