SmugMug automation · runs weekly
Add captions and keywords to SmugMug photos
You uploaded 400 photos from an event. Captions and keywords make them findable in search, but typing them one photo at a time is the job that never gets done.
Cotlet does it in your own SmugMug account with list_gallery_photos and update_photo_details, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can SmugMug do this on its own?
SmugMug edits title, caption and keywords in bulk from the Organizer and the Library, and the Image resource of the API has writable Caption, Keywords and Title fields (checked 17 Oct 2026). Both write the text you give them. Neither looks at each photo and picks different words, which is the gap this job fills.
How you do it in SmugMug today
- For one photo, open it in the Lightbox, click the photo details icon and then Edit Photo Details to set title, caption and keywords.
- In the Library, select several photos with the checkmark, click the pencil icon and add a keyword to all of them.
- In the Organizer, go to My Site > Site Organizer, select the gallery and photos, and click the wrench icon Title, Caption, and Keywords.
- If the selected photos already have different captions, SmugMug asks whether to replace them or add the new text before or after.
- The same text lands on every photo you selected, so photos that need different words still mean many rounds by hand.
How to add captions and keywords to SmugMug photos
Take the gallery "Lakeview 10K race" in SmugMug. Look at each photo and add the keywords "running" and "lakeview", plus "finish line" on the ones that show it. Keep the captions that exist and add the race name after them. - 01
Read the gallery
list_gallery_photos pages through the whole gallery and returns each photo with its current title, caption, keywords and a thumbnail link, so the agent works from what is there now.
- 02
Look at the photos
The agent opens the thumbnails and sorts photos into groups by what they show, for example the finish line, the start, the crowd. Filenames alone are not used as the description.
- 03
Write per group
update_photo_details runs once per group with the photo IDs of that group. Keywords are added without removing the ones already there.
- 04
Keep what you wrote
Where a caption exists, the agent sets caption_mode to after, so your text stays and the new line follows it. Empty captions are filled.
- 05
Keep a way back
Each call returns the previous caption of every photo it changed. The agent keeps them in its report, so a wrong caption is put back with one more call.
What you get back
Gallery "Lakeview 10K race": 412 photos read
Keywords added to 412: running, lakeview
"finish line" added to 96 photos
Caption extended on 38 photos (existing text kept)
Left for you 7: photos with no clear subject, listed by filename Other ways to ask
- Only fill photos that have no caption yet and leave every existing caption alone.
- Add the keyword "headshots" to every photo in the folder "Studio 2026", without looking at them.
- Show me the captions you would write for the first 20 photos and write nothing yet.
- Remove the keyword "test" from every photo in the gallery "Smith wedding".
What SmugMug allows, and what to know first
- A caption can be up to 65,000 characters long, so a full story fits.
- Original filenames are shown under the thumbnails and cannot be edited.
- Separate keywords with semicolons, and put phrases in quotes or separate them with semicolons.
- Keywords need time to index in the background, so search shows them a little later.
- SmugMug reads IPTC keywords at upload, but keywords you add on SmugMug are not written back into the IPTC data of your file.
update_photo_details changes only your own SmugMug data and reach no one else, so it runs without asking first.
Sources: SmugMug Help: Add photo titles, captions, and keywords · SmugMug API v2: Image reference
Call update_photo_details from a script
curl -X PATCH https://cotlet.dev/api/v1/smugmug/photo-details \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"photo_ids":["Qm7xKd","Rt2nWc"],"caption":"Lakeview 10K, finish line.","caption_mode":"after","keywords_add":["running","lakeview","finish line"]}' {
"updated": 2,
"photos": [
{
"photo_id": "Qm7xKd",
"filename": "DSC_3025.jpg",
"caption": "Lakeview 10K, finish line.",
"keywords": [
"running",
"lakeview",
"finish line"
],
"previous_caption": ""
},
{
"photo_id": "Rt2nWc",
"filename": "DSC_3026.jpg",
"caption": "First dance Lakeview 10K, finish line.",
"keywords": [
"wedding",
"running",
"lakeview",
"finish line"
],
"previous_caption": "First dance"
}
]
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is smugmug_write → update_photo_details. Example data.
Schedule it in n8n, Make, Zapier or cronSmugMug tools this automation uses
| Tool | Parameters |
|---|---|
| list_gallery_photos | gallery_id, cursor |
| update_photo_details | photo_ids, title, caption, caption_mode, keywords_add, keywords_remove |
Frequently asked questions
Is it safe to connect SmugMug to Cotlet?
Yes. You sign in to SmugMug yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get SmugMug once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to SmugMug.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with SmugMug.