Skip to main content
skill CX Codex

media-transcoding — Claude Code skill: FFmpeg video conversion

A skill for batch video transcoding with FFmpeg presets aimed at web, mobile and archive output. Useful when a media library needs one consistent format.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a claude-code
Open on GitHub

What media-transcoding does

The skill covers two scripts: a plain bash one, ffmpeg_convert.sh, and a more capable convert_video.py. The first checks your environment, converts a single file, and runs batch jobs. The second adds progress monitoring, metadata inspection, overwrite control, and preset listing.

Presets set resolution, CRF and audio bitrate. web_standard caps at 1080p with CRF 23 and 128k audio, web_high at 1080p with CRF 20 and 192k, mobile at 720p with CRF 25 and 96k, ultra_compact at 480p with CRF 28 and 64k, and archive keeps the original resolution with CRF 18 and 256k. Every preset encodes H.264 + AAC and adds +faststart so the MP4 streams without a full download.

Output lands in converted/ with a suffix like _web_standard, originals are copied to backup/, and the run is logged to conversion.log. FFmpeg has to be installed first — nothing runs without it, and on macOS you get it with brew install ffmpeg. If the script refuses to execute, chmod +x ffmpeg_convert.sh fixes that.

What it helps with

  • transcode videos for web delivery with fast start playback
  • shrink a large media library to mobile-friendly sizes
  • standardise mixed files to one format and resolution
  • keep an archival copy at high quality and original resolution
  • verify the environment before running a batch job

Example prompts for the agent

  • run ./ffmpeg_convert.sh check and tell me what is missing
  • convert My Video.mp4 using the web_standard preset
  • run batch_mobile over the whole folder and show me the output sizes

How to install media-transcoding

1Skills CLI (Vercel)

npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a claude-code

2Manually: put the files in place

~/.claude/skills/media-transcoding/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/media-transcoding/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about media-transcoding

How do I install media-transcoding in Claude?

Run npx skills add bobmatnyc/claude-mpm-skills --skill media-transcoding -a claude-code. The skill file then sits at ~/.claude/skills/media-transcoding/SKILL.md.

What does media-transcoding do?

It documents FFmpeg transcoding workflows driven by presets for web, mobile and archive output, with batch runs, backups and logging.

What do I need before using it?

FFmpeg installed on the machine — conversion will not start without it. On macOS, brew install ffmpeg handles that.

Source text

SKILL.md · MIT
---
name: media-transcoding
description: FFmpeg-based media transcoding workflows with preset-driven conversions, batch processing, and safe backups for web/mobile/archive outputs.
user-invocable: false
disable-model-invocation: true
version: 1.0.0
category: toolchain
author: Claude MPM Team
license: MIT
progressive_disclosure:
  entry_point:
    summary: "Use FFmpeg presets to convert videos for web/mobile/archive with batch scripts, backups, and faststart MP4s."
    when_to_use: "Optimizing video files for web delivery, compressing large media libraries, or standardizing outputs with repeatable presets."
    quick_start: "1. Run ./ffmpeg_convert.sh check 2. Convert one file with web_standard 3. Batch convert with batch_web_standard"
tags:
  - ffmpeg
  - media
  - video
  - transcoding
  - encoding
---

# Media Transcoding (FFmpeg)

## Overview

Use FFmpeg presets to normalize video outputs for web streaming, mobile delivery, or archival quality. Your `hf-videos` repo already includes a simple bash script and a more advanced Python script with presets, backups, and logging.

## Quick Start (hf-videos)

```bash
./ffmpeg_convert.sh check
./ffmpeg_convert.sh web_standard "My Video.mp4"
./ffmpeg_convert.sh batch_web_standard
```

Outputs are written to `converted/` with backups in `backup/` and logs in `conversion.log`.

## Preset Summary (hf-videos)

- **web_standard**: 1080p max, CRF 23, 128k audio, `+faststart`
- **web_high**: 1080p max, CRF 20, 192k audio
- **mobile**: 720p max, CRF 25, 96k audio
- **ultra_compact**: 480p max, CRF 28, 64k audio
- **archive**: original res, CRF 18, 256k audio

All presets use H.264 + AAC with `+faststart` for streaming-friendly MP4s.

## Batch Workflow

1. Run a single-file conversion first to validate output.
2. Run batch conversion once the preset is confirmed.
3. Verify output sizes and playback.

Batch commands:

```bash
./ffmpeg_convert.sh batch_web_standard
./ffmpeg_convert.sh batch_mobile
./ffmpeg_convert.sh batch_ultra_compact
```

## Advanced Script (convert_video.py)

Use `convert_video.py` when you need:

- Progress monitoring
- Metadata inspection
- Overwrite control
- Preset listing and batch automation

```bash
python3 convert_video.py --list-presets
python3 convert_video.py --file "My Video.mp4" --preset web_standard
python3 convert_video.py --preset mobile --overwrite
```

## Output Conventions

- Converted files use suffixes like `_web_standard`.
- Backups preserve original filenames.
- Logs go to `conversion.log` for audit and troubleshooting.

## Troubleshooting

- **FFmpeg missing**: `brew install ffmpeg` (macOS) or install from ffmpeg.org.
- **Permission errors**: `chmod +x ffmpeg_convert.sh`.
- **Disk pressure**: clean `converted/` and `backup/` after validation.

## Related Skills

- `toolchains/universal/infrastructure/docker`

© Claude MPM Team · MIT · bobmatnyc/claude-mpm-skills

Similar skills

All skills for Automation and no-code: n8n, Zapier, Make →

From the same set65

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor