Search for images on Unsplash and download them. Optionally add text overlay (title/subtitle) to the image.
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
Search Unsplash for images, download them, and optionally add text overlay.
~/.agents/tools/unsplash-search.py~/.agents/tools/.env (contains UNSPLASH_CLIENT_ID)python ~/.agents/tools/unsplash-search.py \
--query "nature landscape" \
--output ./image.jpg
python ~/.agents/tools/unsplash-search.py \
--query "coffee shop" \
--orientation landscape \
--output ./coffee.jpg
python ~/.agents/tools/unsplash-search.py \
--query "technology abstract" \
--output ./cover.png \
--title "My Blog Post Title" \
--subtitle "A short description"
python ~/.agents/tools/unsplash-search.py \
--query "sunset" \
--list
python ~/.agents/tools/unsplash-search.py \
--query "mountains" \
--pick first \
--output ./mountains.jpg
| Option | Description |
|---|---|
--query, -q |
(Required) Search query string |
--output, -o |
(Required unless --list) Output file path |
--orientation |
Filter: landscape, portrait, or squarish |
--color |
Color filter (e.g., blue, green, red, black_and_white) |
--pick |
How to select from results: random (default) or first |
--title |
Title text to overlay on the image |
--subtitle |
Subtitle text to overlay (only used with --title) |
--list |
List search results instead of downloading |
--count |
Number of results to fetch, max 30 (default: 30) |
When --title is provided, the script adds a text overlay to the bottom portion of the image with:
- Semi-transparent dark background behind the text
- White title text with shadow
- Gray subtitle text (if provided)
- Automatic word wrapping and font sizing
Requires Pillow: pip install Pillow
requests (for API calls and image download)Pillow (only needed if using text overlay with --title)Install if needed:
pip install requests Pillow
The script prints: - The download URL - Photographer attribution (required by Unsplash) - The saved file path - Confirmation of text overlay if applied
urls.full or urls.raw.