google-photos
Google Photos Skill
Google Photos management for AI agents. Browse, search, download, upload, and organize photos and videos.
Features
- List: Browse media items (most recent first), paginated.
- Search: Filter by date range and/or content category (landscapes, food, selfies, etc.).
- Get: Fetch media item metadata by ID.
- Download: Download full-resolution photos/videos to local disk.
- Upload: Upload local photos/videos to Google Photos (with optional album placement).
- Albums: List, create, get details, view contents.
- Album Management: Add/remove media items from albums.
API Limitation: The Photos Library API only allows modifying media items that were uploaded by this application. You cannot delete or reorganize media uploaded via the Photos web/mobile UI.
Prerequisites
- Google Cloud Project with Photos Library API enabled.
- OAuth 2.0 Credentials — either
gcloudADC orcredentials.json.
Setup
⚡ Quick Setup (Recommended)
Set up Gmail, Calendar, Contacts, Drive, and Photos all at once:
uv run ~/.agents/skills/gmail/scripts/setup_workspace.py
Manual Setup
-
Using gcloud ADC:
gcloud auth application-default login \ --scopes https://www.googleapis.com/auth/photoslibrary,https://www.googleapis.com/auth/photoslibrary.sharing,https://www.googleapis.com/auth/cloud-platformThen verify:
uv run skills/google-photos/scripts/google_photos.py verify -
Alternative (credentials.json):
- Place
credentials.jsonin~/.photos_credentials/. - Run
uv run skills/google-photos/scripts/google_photos.py setup
- Place
Usage
List Media Items
# Most recent 25 items
uv run skills/google-photos/scripts/google_photos.py list
# With pagination
uv run skills/google-photos/scripts/google_photos.py list --limit 50 --page-token "TOKEN"
Search Media
# By date range
uv run skills/google-photos/scripts/google_photos.py search \
--date-start "2026-01-01" --date-end "2026-02-16"
# By content category
uv run skills/google-photos/scripts/google_photos.py search --categories LANDSCAPES FOOD
# Combined
uv run skills/google-photos/scripts/google_photos.py search \
--date-start "2025-12-25" --date-end "2025-12-26" \
--categories HOLIDAYS
Available Categories: ANIMALS, ARTS, BIRTHDAYS, CITYSCAPES, CRAFTS, DOCUMENTS, FASHION, FLOWERS, FOOD, GARDENS, HOLIDAYS, HOUSES, LANDMARKS, LANDSCAPES, NIGHT, PEOPLE, PERFORMANCES, PETS, RECEIPTS, SCREENSHOTS, SELFIES, SPORT, TRAVEL, UTILITY, WEDDINGS, WHITEBOARDS
Get Media Item
uv run skills/google-photos/scripts/google_photos.py get --id "MEDIA_ID"
Download a Photo/Video
uv run skills/google-photos/scripts/google_photos.py download --id "MEDIA_ID" --output "./sunset.jpg"
Upload a Photo/Video
uv run skills/google-photos/scripts/google_photos.py upload \
--file "./hologram.jpg" \
--description "Leia's holographic message" \
--album "ALBUM_ID"
Albums
# List all albums
uv run skills/google-photos/scripts/google_photos.py albums
# Get album details and contents
uv run skills/google-photos/scripts/google_photos.py album-get --id "ALBUM_ID"
# Create an album
uv run skills/google-photos/scripts/google_photos.py album-create --title "Tatooine Sunsets"
# Add items to an album
uv run skills/google-photos/scripts/google_photos.py album-add --album "ALBUM_ID" --items "ITEM_1" "ITEM_2"
# Remove items from an album (app-uploaded only)
uv run skills/google-photos/scripts/google_photos.py album-remove --album "ALBUM_ID" --items "ITEM_1"
JSON Output
Media Item:
{
"id": "ABC123...",
"filename": "sunset_tatooine.jpg",
"mimeType": "image/jpeg",
"description": "Binary sunset over the Jundland Wastes",
"baseUrl": "https://lh3.googleusercontent.com/...",
"productUrl": "https://photos.google.com/...",
"creationTime": "2026-02-14T18:30:00Z",
"width": "4032",
"height": "3024",
"isVideo": false,
"cameraMake": "Google",
"cameraModel": "Pixel 9 Pro"
}
Album:
{
"id": "ALB123...",
"title": "Tatooine Sunsets",
"mediaItemsCount": "42",
"isWriteable": true,
"coverPhotoBaseUrl": "https://lh3.googleusercontent.com/..."
}
More from baphomet480/claude-skills
kitchen-sink-design-system
Kitchen Sink design system workflow for Next.js and React projects, with secondary support for Astro, SvelteKit, Nuxt, and static HTML. Use when asked for a Kitchen Sink page, Design System, UI Audit, Style Guide, or Component Inventory, or when a project needs a component inventory plus component creation and a sink page implementation. Covers CVA variant architecture, Tailwind v3/v4 token systems, shadcn/ui integration, and TinaCMS content modeling.
40deep-research
Conduct comprehensive, multi-round research that produces rich visual reports. Use when asked for "deep research", "comprehensive analysis", "compare frameworks", "evaluate options", "research the state of X", or any task requiring investigation across 10+ sources. NOT for quick lookups — this is a 5-15 minute deep dive that produces a briefing-quality artifact with screenshots, diagrams, tables, and cited findings.
37design-lookup
Search and retrieve CSS components, SVG icons, design patterns, and visual inspiration from the web. Use when the user asks to find, look up, or search for CSS snippets, SVG icons, UI components, loading spinners, animations, design inspiration, or any visual/frontend design resource. Triggers on requests like "find me a CSS button", "look up an SVG spinner", "search for a card component", "find a wave divider SVG", or "get design inspiration for a dashboard".
34nextjs-tinacms
Build Next.js 16 + React 19 + TinaCMS sites with visual editing, blocks-based page builder, and complete SEO. Use this skill whenever the user mentions TinaCMS, Tina CMS, Next.js with a CMS, visual editing with Next.js, click-to-edit, content-managed Next.js site, blocks pattern page builder, or migrating to Next.js + TinaCMS. Also trigger for TinaCMS schema design, self-hosted TinaCMS, TinaCMS media configuration, or any TinaCMS troubleshooting. Covers Day 0-2 setup from scaffolding through production deployment on Vercel.
32cloudflare-pages
Deploy static sites to Cloudflare Pages with custom domains and CI/CD. Use when the user wants to deploy a site to Cloudflare Pages, add a custom domain to a Pages project, set up GitHub Actions CI/CD for Cloudflare Pages, roll back a deployment, or verify deployment status. Triggers on "deploy to Cloudflare", "Cloudflare Pages", "add custom domain", "pages deploy", or any Cloudflare Pages hosting workflow.
31local-ocr
Local OCR pipeline for AI agents featuring auto-rotation, deskew, and searchable PDF generation via ocrmypdf and Tesseract.
23