Visual Media Sourcing Skill
Intelligent image and video sourcing with AI-powered visual review. Finds, downloads, and visually evaluates media using Claude's multimodal capabilities.
When to Source Images
Detect whether image sourcing is needed based on context signals.
AUTO-SOURCE (proceed without asking)
- User explicitly asks for images ("find images", "get photos", "source visuals")
- Carousel plan includes image layouts (image_full, image_left, image_right, image_grid, title_image)
- Post type is Product Launch, Case Study, or Behind the Scenes
- User mentions "with images", "add photos", "include visuals"
RECOMMEND (suggest, don't auto-run)
- Post type is Milestone, Educational, or Personal Story
- Product Demo decks without user-provided screenshots
- Behind the Scenes content without user photos
- Tell user: "An image would boost engagement ~50%. Want me to find relevant images?"
SKIP (do not source)
- User said "text only" or "no images"
- Content type is SOP, runbook, or playbook
- Carousel plan uses only text layouts (content_single, content_bullets, etc.)
- Question/Poll post type (text-only performs better)
ALREADY PROVIDED (use what exists)
- User gave specific file paths to images
media/images/ directory has files matching the current topic
- Research phase already captured relevant screenshots
Image Sourcing Protocol
Phase 1: Search
Build diverse search queries from the topic to maximize coverage.
- Extract 2-3 core concepts from the topic
- Generate 3-5 search queries combining concepts with visual terms:
"[topic] high quality photo"
"[topic] professional image"
"[topic] stock photo free use"
"[topic] [specific aspect] visual"
"[topic] unsplash OR pexels OR pixabay"
- Prioritize free-use sources:
- Unsplash (unsplash.com) — high quality, free commercial use
- Pexels (pexels.com) — free, no attribution required
- Pixabay (pixabay.com) — free, CC0 license
- Use WebSearch for each query
- If imperium-crawl is available, also use:
imperium-crawl search --query "[topic] free stock photo" --count 10
- Collect 8-15 candidate image URLs
Phase 2: Download
- Create download directory:
media/images/[topic-slug]/
- Topic slug: lowercase, hyphens for spaces, no special chars (e.g.,
ai-team-collaboration)
- Download each candidate:
curl -sL -o "media/images/[topic-slug]/candidate_[N].jpg" "[URL]"
- Verify each download:
- File size > 10KB (smaller = broken/placeholder)
- Valid image format (jpg, png, webp)
- File actually exists after download
- Skip broken downloads silently — move to next candidate
- Log: "Downloaded X/Y candidates successfully"
Phase 3: Visual Review
CRITICAL STEP — This is what makes this skill valuable.
For EACH downloaded image, use the Read tool on the file path. Claude's multimodal capability will see the actual image contents.
Evaluate each image on 4 criteria:
RELEVANCE (most important):
- Does the image actually depict the topic?
- Is it specific enough? (not a generic "business" stock photo for an AI topic)
- Would the target audience immediately connect this image to the content?
- Is it the right type? (photo vs illustration vs screenshot — match the need)
QUALITY:
- Sharp and well-composed? (not blurry, cropped badly, or low-res)
- Professional enough for the intended use?
- Good lighting and color? (not washed out or oversaturated)
- Minimum resolution for intended platform (see review-criteria.md)
BRAND FIT (if brand.json exists):
- Read
brand/brand.json for color palette and personality
- Does the image complement (not clash with) the brand colors?
- Does the mood/tone match the brand personality?
- Would this look natural alongside brand content?
CONTENT TRAPS (auto-reject):
- Visible watermarks
- AI-generated artifacts (uncanny hands, text gibberish, weird patterns)
- Copyright indicators or stock photo IDs
- Offensive, misleading, or inappropriate content
- Text-heavy images that won't work at small sizes
Verdict for each image:
- APPROVE — Good relevance, quality, and fit. Ready to use.
- MAYBE — Decent but not great. Keep as backup.
- REJECT — Poor relevance, quality issues, or content traps. Delete.
For detailed scoring criteria: references/review-criteria.md
Phase 4: Select & Present
- Rank approved images by quality (best first)
- Present top 3-5 to user:
## Image Results for "[topic]"
### Image 1 (Recommended)
[Read the image to show it]
- **File:** `media/images/[slug]/candidate_3.jpg`
- **Score:** 8.5/10
- **Why:** [1-line reason — e.g., "Shows diverse team collaborating on laptops — directly depicts remote collaboration"]
### Image 2
[Read the image to show it]
- **File:** `media/images/[slug]/candidate_7.jpg`
- **Score:** 7.8/10
- **Why:** [1-line reason]
### Image 3
...
**Rejected:** X images didn't pass visual review (generic stock, wrong topic, low quality)
- Let user pick, or auto-select top-ranked if they said "just pick the best"
Phase 5: Fallback
If fewer than 2 images approved after Phase 3:
- Try again: Generate 3 more search queries with different angles:
- Different terminology for the same concept
- More specific or more general queries
- Different source focus (e.g., specifically target Unsplash API)
- Repeat Phases 2-3 with new candidates
- Still insufficient? Be honest:
- "I couldn't find strong matches for this specific topic."
- "A photo of YOU performing much better than any stock image on LinkedIn anyway — that's your best bet for this one."
- "Consider creating a custom graphic or screenshot instead."
Video Sourcing
Same pattern as images, adapted for video limitations.
Search
- Search for stock video, b-roll, demo clips, explainer videos
- Use queries:
"[topic] stock video", "[topic] b-roll footage", "[topic] demo clip"
- Sources: Pexels Videos, Pixabay Videos, Coverr, Mixkit
- If imperium-crawl available:
imperium-crawl youtube --action search --query "[topic] b-roll"
Download & Organize
Review Limitations
- Claude cannot watch video files directly
- Review via: metadata, title/description relevance, source credibility
- If thumbnails are available, use Read tool on thumbnails
- Check video duration (15-60 seconds for social, 1-5 minutes for demos)
Output
Curated video reference library:
## Video Library: [topic]
### Recommended
1. **[Title]** — [Source URL]
- Duration: X:XX | Resolution: 1080p
- Relevance: [why it fits]
- License: [free/attribution/paid]
### Alternatives
2. ...
Output Convention
All sourced media follows this directory structure:
media/
images/
[topic-slug]/ # Downloaded + approved images
candidate_1.jpg
candidate_3.jpg # (numbering may skip rejected files)
...
video/
[topic-slug]/ # Downloaded clips or URL references
video-library.md # Curated reference list
clip_1.mp4 # (if small enough to download)
...
Integration Points
With Carousel (skills/carousel)
- Carousel detects image layouts in slide plan → triggers visual-media if no images provided
- Visual-media saves approved images to
media/images/[topic-slug]/
- Carousel references file paths in image layout functions (image_full, image_left, etc.)
With LinkedIn (skills/linkedin)
- LinkedIn post generator evaluates if post type benefits from images
- If sourcing needed → invokes visual-media protocol
- Approved image path included in posting package
- Target format: 1080x1350px portrait for LinkedIn
With Research (skills/research)
- Research Phase 2B (UI/UX Audit) captures competitor screenshots
- Visual-media's review criteria complement research's validation.md
- For competitor screenshots, apply BOTH research validation rules AND visual-media quality checks
- Cross-reference:
skills/research/references/validation.md
Standalone
- User runs
/imperium:find-images directly
- Full protocol: search → download → visual review → present results
- User picks images for any purpose
1---2name: visual-media3description: Image and video sourcing with AI-powered visual review. Searches for relevant visuals, downloads candidates, and uses Claude multimodal Read tool to visually evaluate each image for relevance, quality, and brand fit. Works standalone or as prerequisite for LinkedIn posts, carousels, and research. Use when the user mentions: image, images, photo, find images, find visuals, stock photo, stock video, b-roll, visual media, pictures, find pictures, source images, get images.4---56# Visual Media Sourcing Skill78Intelligent image and video sourcing with AI-powered visual review. Finds, downloads, and visually evaluates media using Claude's multimodal capabilities.910---1112## When to Source Images1314Detect whether image sourcing is needed based on context signals.1516### AUTO-SOURCE (proceed without asking)17- User explicitly asks for images ("find images", "get photos", "source visuals")18- Carousel plan includes image layouts (image_full, image_left, image_right, image_grid, title_image)19- Post type is Product Launch, Case Study, or Behind the Scenes20- User mentions "with images", "add photos", "include visuals"2122### RECOMMEND (suggest, don't auto-run)23- Post type is Milestone, Educational, or Personal Story24- Product Demo decks without user-provided screenshots25- Behind the Scenes content without user photos26- Tell user: "An image would boost engagement ~50%. Want me to find relevant images?"2728### SKIP (do not source)29- User said "text only" or "no images"30- Content type is SOP, runbook, or playbook31- Carousel plan uses only text layouts (content_single, content_bullets, etc.)32- Question/Poll post type (text-only performs better)3334### ALREADY PROVIDED (use what exists)35- User gave specific file paths to images36- `media/images/` directory has files matching the current topic37- Research phase already captured relevant screenshots3839---4041## Image Sourcing Protocol4243### Phase 1: Search4445Build diverse search queries from the topic to maximize coverage.46471. Extract 2-3 core concepts from the topic482. Generate 3-5 search queries combining concepts with visual terms:49 - `"[topic] high quality photo"`50 - `"[topic] professional image"`51 - `"[topic] stock photo free use"`52 - `"[topic] [specific aspect] visual"`53 - `"[topic] unsplash OR pexels OR pixabay"`543. Prioritize free-use sources:55 - **Unsplash** (unsplash.com) — high quality, free commercial use56 - **Pexels** (pexels.com) — free, no attribution required57 - **Pixabay** (pixabay.com) — free, CC0 license584. Use WebSearch for each query595. If imperium-crawl is available, also use: `imperium-crawl search --query "[topic] free stock photo" --count 10`606. Collect 8-15 candidate image URLs6162### Phase 2: Download63641. Create download directory: `media/images/[topic-slug]/`65 - Topic slug: lowercase, hyphens for spaces, no special chars (e.g., `ai-team-collaboration`)662. Download each candidate:67 ```bash68 curl -sL -o "media/images/[topic-slug]/candidate_[N].jpg" "[URL]"69 ```703. Verify each download:71 - File size > 10KB (smaller = broken/placeholder)72 - Valid image format (jpg, png, webp)73 - File actually exists after download744. Skip broken downloads silently — move to next candidate755. Log: "Downloaded X/Y candidates successfully"7677### Phase 3: Visual Review7879**CRITICAL STEP — This is what makes this skill valuable.**8081For EACH downloaded image, use the **Read tool** on the file path. Claude's multimodal capability will see the actual image contents.8283Evaluate each image on 4 criteria:8485**RELEVANCE** (most important):86- Does the image actually depict the topic?87- Is it specific enough? (not a generic "business" stock photo for an AI topic)88- Would the target audience immediately connect this image to the content?89- Is it the right type? (photo vs illustration vs screenshot — match the need)9091**QUALITY:**92- Sharp and well-composed? (not blurry, cropped badly, or low-res)93- Professional enough for the intended use?94- Good lighting and color? (not washed out or oversaturated)95- Minimum resolution for intended platform (see review-criteria.md)9697**BRAND FIT** (if brand.json exists):98- Read `brand/brand.json` for color palette and personality99- Does the image complement (not clash with) the brand colors?100- Does the mood/tone match the brand personality?101- Would this look natural alongside brand content?102103**CONTENT TRAPS** (auto-reject):104- Visible watermarks105- AI-generated artifacts (uncanny hands, text gibberish, weird patterns)106- Copyright indicators or stock photo IDs107- Offensive, misleading, or inappropriate content108- Text-heavy images that won't work at small sizes109110**Verdict for each image:**111- **APPROVE** — Good relevance, quality, and fit. Ready to use.112- **MAYBE** — Decent but not great. Keep as backup.113- **REJECT** — Poor relevance, quality issues, or content traps. Delete.114115For detailed scoring criteria: `references/review-criteria.md`116117### Phase 4: Select & Present1181191. Rank approved images by quality (best first)1202. Present top 3-5 to user:121122```123## Image Results for "[topic]"124125### Image 1 (Recommended)126[Read the image to show it]127- **File:** `media/images/[slug]/candidate_3.jpg`128- **Score:** 8.5/10129- **Why:** [1-line reason — e.g., "Shows diverse team collaborating on laptops — directly depicts remote collaboration"]130131### Image 2132[Read the image to show it]133- **File:** `media/images/[slug]/candidate_7.jpg`134- **Score:** 7.8/10135- **Why:** [1-line reason]136137### Image 3138...139140**Rejected:** X images didn't pass visual review (generic stock, wrong topic, low quality)141```1421433. Let user pick, or auto-select top-ranked if they said "just pick the best"144145### Phase 5: Fallback146147If fewer than 2 images approved after Phase 3:1481491. **Try again:** Generate 3 more search queries with different angles:150 - Different terminology for the same concept151 - More specific or more general queries152 - Different source focus (e.g., specifically target Unsplash API)1532. **Repeat Phases 2-3** with new candidates1543. **Still insufficient?** Be honest:155 - "I couldn't find strong matches for this specific topic."156 - "A photo of YOU performing much better than any stock image on LinkedIn anyway — that's your best bet for this one."157 - "Consider creating a custom graphic or screenshot instead."158159---160161## Video Sourcing162163Same pattern as images, adapted for video limitations.164165### Search166- Search for stock video, b-roll, demo clips, explainer videos167- Use queries: `"[topic] stock video"`, `"[topic] b-roll footage"`, `"[topic] demo clip"`168- Sources: Pexels Videos, Pixabay Videos, Coverr, Mixkit169- If imperium-crawl available: `imperium-crawl youtube --action search --query "[topic] b-roll"`170171### Download & Organize172- Save to `media/video/[topic-slug]/`173- For large video files, save URL references instead of downloading:174 ```175 media/video/[topic-slug]/video-library.md176 ```177178### Review Limitations179- Claude cannot watch video files directly180- Review via: metadata, title/description relevance, source credibility181- If thumbnails are available, use Read tool on thumbnails182- Check video duration (15-60 seconds for social, 1-5 minutes for demos)183184### Output185Curated video reference library:186```markdown187## Video Library: [topic]188189### Recommended1901. **[Title]** — [Source URL]191 - Duration: X:XX | Resolution: 1080p192 - Relevance: [why it fits]193 - License: [free/attribution/paid]194195### Alternatives1962. ...197```198199---200201## Output Convention202203All sourced media follows this directory structure:204205```206media/207 images/208 [topic-slug]/ # Downloaded + approved images209 candidate_1.jpg210 candidate_3.jpg # (numbering may skip rejected files)211 ...212 video/213 [topic-slug]/ # Downloaded clips or URL references214 video-library.md # Curated reference list215 clip_1.mp4 # (if small enough to download)216 ...217```218219---220221## Integration Points222223### With Carousel (`skills/carousel`)224- Carousel detects image layouts in slide plan → triggers visual-media if no images provided225- Visual-media saves approved images to `media/images/[topic-slug]/`226- Carousel references file paths in image layout functions (image_full, image_left, etc.)227228### With LinkedIn (`skills/linkedin`)229- LinkedIn post generator evaluates if post type benefits from images230- If sourcing needed → invokes visual-media protocol231- Approved image path included in posting package232- Target format: 1080x1350px portrait for LinkedIn233234### With Research (`skills/research`)235- Research Phase 2B (UI/UX Audit) captures competitor screenshots236- Visual-media's review criteria complement research's validation.md237- For competitor screenshots, apply BOTH research validation rules AND visual-media quality checks238- Cross-reference: `skills/research/references/validation.md`239240### Standalone241- User runs `/imperium:find-images` directly242- Full protocol: search → download → visual review → present results243- User picks images for any purpose