Search Unsplash for free stock photos, browse by photographer or topic, and download images with proper attribution credit. Trigger phrases: unsplash, stock photo, find an image, download unsplash image.
npx skills add https://github.com/Anil-matcha/awesome-muse-connectors --skill unsplash
Search Unsplash's free stock photo library, browse the latest photos, look up a photo's details, browse a photographer's portfolio or a topic, and download an image while honoring Unsplash's API guidelines. At the Client-ID tier this connector is read-only.
All commands go through bin/unsplash.py:
bin/unsplash.py auth # verify the connection
bin/unsplash.py search --query "desert road" # search photos
bin/unsplash.py search --query "coffee" --orientation portrait --per-page 5
bin/unsplash.py list --per-page 5 # latest photos
bin/unsplash.py photo --id PHOTO_ID # one photo's details and URLs
bin/unsplash.py user-photos --username USERNAME # a photographer's photos
bin/unsplash.py topic --id TOPIC_ID # photos in a topic
bin/unsplash.py download --id PHOTO_ID --out ./photo.jpg # download an image file
download hits the photo's download_location URL first (required by Unsplash's guidelines: it credits the photographer and keeps the API access in good standing), then saves the image bytes to --out. Do not hotlink the CDN URL in production: download and self-host.
unsplash (credential is collected as custom.unsplash)credentials.request_api_access); create a free developer app at unsplash.com/developers. The key is sent as Authorization: Client-ID YOUR_ACCESS_KEY.api.unsplash.combin/unsplash.py authdownload (never raw CDN hotlinking) when an image is used, so the download_location guideline is honored, and include the photographer credit ("Photo by [Name] on Unsplash") wherever the image is shown.🧪 Draft: written from Unsplash's public API docs; not yet live-tested end to end.
Take anil-matcha/unsplash from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.