harvest-testimonialslisted
Install: claude install-skill MyAiFreedomSystems/harvest-testimonials
# Harvest Testimonials
Fetches existing client proof and returns, per client: **quote, name, role, face image**. Requires `yt-dlp`, `ffmpeg`, `ffprobe`. Work in a scratch dir inside the project workspace; delete `.mp4` files when done, keep `.txt` transcripts and contact sheets as source material.
## 0. Dedupe first
List what the user already has (existing Canva cards via `get-design-content`; site cards via alt texts) and skip those people. Users hate duplicate proof.
> **Tool fallback:** `get-design-content` is a Canva-specific tool. If you don't have it, use whatever design-listing/export capability you do have (list designs, export thumbnails, screenshot the card gallery), or simply ask the user for the names already on cards and record them manually. Never skip dedupe entirely just because the exact tool is missing.
## 1. YouTube source
```bash
# list every video on the channel
yt-dlp --flat-playlist --print "%(id)s | %(title)s" "https://www.youtube.com/@CHANNEL/videos"
# transcript (auto-captions)
yt-dlp --skip-download --write-auto-subs --write-subs --sub-langs "en.*" --sub-format vtt -o "%(id)s.%(ext)s" "https://www.youtube.com/watch?v=ID"
python3 scripts/clean_vtt.py <id> # reads <id>.en.vtt, writes <id>.txt
# low-res video for face frames
yt-dlp -f "worst[ext=mp4]/worst" -o "%(id)s.%(ext)s" "https://www.youtube.com/watch?v=ID"
python3 scripts/contact_sheets.py <id> [<id>...] # writes sheet_<id>.png
```
- Channel pages are JS-rendered — plain HTTP fetche