---
name: gif-board
description: Build a contact sheet (grid of thumbnails with filenames) from a folder of GIFs, MP4s, MOVs, or WebMs. Static PNG mode and animated GIF mode (all cells loop simultaneously). Dark monospace aesthetic, perfect for browsing clip libraries before a music-video edit. Use when the user asks for a contact sheet, thumbnail grid, clip overview, mood board from videos, "show me all the clips in this folder", or wants to scan a B-roll library at a glance.
---


# gif-board

Folder of clips → one big contact sheet you can scan in 2 seconds.

## Static PNG (default)

```bash
python3 ~/.claude/skills/gif-board/scripts/board.py --input /path/to/clips
# → /path/to/clips/_board.png  (4-col grid, dark bg, mono labels)
```

## Animated GIF (cells loop in sync)

```bash
python3 ~/.claude/skills/gif-board/scripts/board.py --input /path/to/clips --mode animated
# → /path/to/clips/_board.gif
```

## Flags

- `--input` — folder of clips
- `--output` — output file (defaults to `<input>/_board.png` or `_board.gif`)
- `--cols` — columns (default 4)
- `--cell` — cell width in px (default 320)
- `--mode` — `static` (default) or `animated`
- `--label-frame` — frame timestamp for static thumbnails (default 0.5s, skips black starts)

## What it does

- Reads every `.gif`, `.mp4`, `.mov`, `.webm`, `.mkv`, `.m4v` in the folder, sorted alphabetically
- Static mode: extracts one frame per clip via ffmpeg, lays out grid in PIL with filename + duration label
- Animated mode: ffmpeg `xstack` filter graph with palette optimization, ~3s loop, 24fps

## Pairs well with

- `pinterest-gif-scraper` — board your pinned references at a glance
- `clip-hunter` — scan a freshly downloaded clip pack before editing
- `music-video` — pick which clips to use for the next bar
