Awesome-openclaw-skills apple-photos

Apple Photos.app integration for macOS. List albums, browse photos, search by date/person/content, export photos.

install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/apple-photos" ~/.claude/skills/sundial-org-awesome-openclaw-skills-apple-photos && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/apple-photos" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-apple-photos && rm -rf "$T"
manifest: skills/apple-photos/SKILL.md
source content

Apple Photos

Access Photos.app via SQLite queries. Run scripts from:

cd {baseDir}

Requirements

  • Full Disk Access for terminal (System Settings → Privacy → Full Disk Access)

Commands

CommandUsage
Library stats
scripts/photos-count.sh
List albums
scripts/photos-list-albums.sh
Recent photos
scripts/photos-recent.sh [count]
List people
scripts/photos-list-people.sh
Search by person
scripts/photos-search-person.sh <name> [limit]
Search by content
scripts/photos-search-content.sh <query> [limit]
Search by date
scripts/photos-search-date.sh <start> [end] [limit]
Photo info
scripts/photos-info.sh <uuid>
Export photo
scripts/photos-export.sh <uuid> [output_path]

Output

  • Recent/search:
    Filename | Date | Type | UUID
  • People:
    ID | Name | Photo Count
  • Default export:
    /tmp/photo_export.jpg

Workflow: View a Photo

  1. Get UUID:
    scripts/photos-recent.sh 1
  2. Export:
    scripts/photos-export.sh "UUID"
  3. View at
    /tmp/photo_export.jpg

Notes

  • Date format:
    YYYY-MM-DD
    or
    YYYY-MM-DD HH:MM
  • Content search uses ML, slower (~5-10s) than date/person (~100ms)
  • HEIC auto-converts to JPEG on export
  • Name search is case-insensitive, partial match