{"id":"518cefa7-c7fb-4bd9-99b9-32aa5c942b73","entityType":"agent","slug":"clawhub-hith3sh-google-photos-albums","name":"Google Photos","canonicalUrl":"https://www.xpersona.co/agent/clawhub-hith3sh-google-photos-albums","canonicalPath":"/agent/clawhub-hith3sh-google-photos-albums","generatedAt":"2026-10-10T10:45:54.864Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":null},"description":"Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when... Skill: Google Photos Owner: hith3sh Summary: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-09T07:10:25.750Z | user Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.5K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s173vws87a7ss71xf9rq53k5gd8568kv:google-photos-albums","sourceUrl":"https://clawhub.ai/hith3sh/google-photos-albums","homepage":"https://clawhub.ai/hith3sh/skills/google-photos-albums","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/hith3sh/google-photos-albums","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/hith3sh/skills/google-photos-albums","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when... "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":null},"stars":null,"forks":null,"downloads":2522,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"2.5K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T13:59:27.113Z","lastCrawledAt":"2026-10-09T13:59:27.113Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T13:59:27.113Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-06-09T07:10:25.750Z","changelog":"Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic source.","fileCount":3,"zipByteSize":5810},{"version":"1.0.5","createdAt":"2026-06-09T06:09:35.926Z","changelog":"- Documentation updated (SKILL.md): minor edits, including an updated Google Photos logo image link. - Removed the file: skill-card.md. - No changes to logic or behavior of the skill itself.","fileCount":3,"zipByteSize":5790},{"version":"1.0.4","createdAt":"2026-06-09T04:56:12.851Z","changelog":"- Removed the skill-card.md file from the project. - No changes to core functionality, setup, or documentation in SKILL.md. - Maintenance update: this release only removes redundant or unused sample documentation.","fileCount":3,"zipByteSize":5705},{"version":"1.0.1","createdAt":"2026-06-08T16:37:43.314Z","changelog":"- Added a Google Photos logo to the documentation for improved branding. - Removed the file skill-card.md. - No changes to functionality or user-facing features; documentation update only.","fileCount":3,"zipByteSize":5774},{"version":"0.1.1","createdAt":"2026-06-07T13:31:04.521Z","changelog":"Full rewrite to new standard: added tool reference tables, 3-step GIF table, architecture diagram, code examples, error handling, and troubleshooting.","fileCount":3,"zipByteSize":5824},{"version":"0.1.0","createdAt":"2026-05-23T14:19:46.850Z","changelog":"- Initial release of the google-photos-albums skill for OpenClaw. - Enables upload, search, and management of Google Photos albums and media via ClawLink. - Provides clear setup instructions for pairing ClawLink and connecting Google Photos. - Supports listing, searching, uploading, downloading, and managing albums and media items. - Includes important usage guidelines and rules to ensure secure and correct operation.","fileCount":3,"zipByteSize":3665}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173vws87a7ss71xf9rq53k5gd8568kv:google-photos-albums","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:45:54.862Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-hith3sh-google-photos-albums/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":null},"readme":"Skill: Google Photos\n\nOwner: hith3sh\n\nSummary: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when...\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-06-09T07:10:25.750Z | user\n\nAdd UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic source.\n\nv1.0.5 | 2026-06-09T06:09:35.926Z | auto\n\n- Documentation updated (SKILL.md): minor edits, including an updated Google Photos logo image link.\n- Removed the file: skill-card.md.\n- No changes to logic or behavior of the skill itself.\n\nv1.0.4 | 2026-06-09T04:56:12.851Z | auto\n\n- Removed the skill-card.md file from the project.\n- No changes to core functionality, setup, or documentation in SKILL.md.\n- Maintenance update: this release only removes redundant or unused sample documentation.\n\nv1.0.1 | 2026-06-08T16:37:43.314Z | auto\n\n- Added a Google Photos logo to the documentation for improved branding.\n- Removed the file skill-card.md.\n- No changes to functionality or user-facing features; documentation update only.\n\nv0.1.1 | 2026-06-07T13:31:04.521Z | user\n\nFull rewrite to new standard: added tool reference tables, 3-step GIF table, architecture diagram, code examples, error handling, and troubleshooting.\n\nv0.1.0 | 2026-05-23T14:19:46.850Z | auto\n\n- Initial release of the google-photos-albums skill for OpenClaw.\n- Enables upload, search, and management of Google Photos albums and media via ClawLink.\n- Provides clear setup instructions for pairing ClawLink and connecting Google Photos.\n- Supports listing, searching, uploading, downloading, and managing albums and media items.\n- Includes important usage guidelines and rules to ensure secure and correct operation.\n\nArchive index:\n\nArchive v1.0.6: 3 files, 5810 bytes\n\nFiles: skill-card.md (2755b), SKILL.md (13849b), _meta.json (139b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: google-photos-albums\ndescription: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n---\n\n# Google Photos\n\n![Google Photos](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/googlephotos.svg?v=2)\n\nAccess Google Photos via the Google Photos Library API with managed OAuth authentication. Upload media, search photos, create and manage albums, and update media items.\n\nThis skill uses [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=google-photos-albums) for hosted connection flows and credentials so you do not need to configure Google Photos API access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Photos |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Photos |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Google Photos again.\"\n\n## Quick Start\n\n```bash\n# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_items\" --params '{\"page_size\": 50}'\n\n# Create an album\nclawlink_call_tool --tool \"googlephotos_create_album\" --params '{\"album_title\": \"Vacation Photos\"}'\n```\n\n## Authentication\n\nAll Google Photos tool calls are authenticated automatically by ClawLink using the user's connected Google account.\n\n**No API key is required in chat.** ClawLink stores the OAuth token securely and injects it into every Google Photos API request on the user's behalf.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=googlephotos and connect Google Photos.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `googlephotos` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration googlephotos\n```\n\n**Response:** Returns the live tool catalog for Google Photos.\n\n### Reconnect\n\nIf Google Photos tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=googlephotos\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration googlephotos`\n\n## Security & Permissions\n\n- Access is scoped to media items and albums within the connected Google Photos account.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Uploads and album changes must always be confirmed by the user.\n\n## Important API Limitation\n\n**As of March 31, 2025**, the Google Photos Library API only returns media items that were **uploaded or created by this application**. It cannot access photos taken by the user's camera or uploaded from other apps. For accessing the user's full photo library, use the [Google Photos Picker API](https://developers.google.com/photos/picker) instead.\n\n## Tool Reference\n\n### Album Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_albums` | List all albums shown in the user's Albums tab | Read |\n| `googlephotos_get_album` | Get a specific album by its ID | Read |\n| `googlephotos_create_album` | Create a new album with a title | Write |\n| `googlephotos_update_album` | Update an album's title or cover photo | Write |\n\n### Media Item Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_media_items` | List media items created by this application | Read |\n| `googlephotos_search_media_items` | Search media items in the user's library | Read |\n| `googlephotos_batch_get_media_items` | Get specific media items by their IDs | Read |\n| `googlephotos_get_media_item_download` | Download a media item as a file | Read |\n| `googlephotos_update_media_item` | Update a media item's description | Write |\n\n### Upload Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_upload_media` | Upload an image (up to 200MB) or video (up to 20GB) | Write |\n| `googlephotos_batch_create_media_items` | Batch upload and create media items (up to 50 per request) | Write |\n\n### Album Content Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_batch_add_media_items` | Add existing media items to an album | Write |\n| `googlephotos_add_enrichment` | Add an enrichment (text, location, etc.) at a position in an album | Write |\n\n## Code Examples\n\n### List all albums\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_albums\" \\\n  --params '{\n    \"page_size\": 50\n  }'\n```\n\n### List media items\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_media_items\" \\\n  --params '{\n    \"page_size\": 100\n  }'\n```\n\n### Create an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_create_album\" \\\n  --params '{\n    \"album_title\": \"Summer Vacation 2024\"\n  }'\n```\n\n### Batch upload media items from URLs\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_create_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_files\": [\n      {\"url\": \"https://example.com/photo1.jpg\", \"file_name\": \"beach_sunset.jpg\", \"description\": \"Beautiful sunset at the beach\"},\n      {\"url\": \"https://example.com/photo2.jpg\", \"file_name\": \"mountain_view.jpg\", \"description\": \"View from the mountain top\"}\n    ]\n  }'\n```\n\n### Add media items to an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_add_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_item_ids\": [\"MEDIA_ITEM_ID_1\", \"MEDIA_ITEM_ID_2\"]\n  }'\n```\n\n### Update a media item description\n\n```bash\nclawlink_call_tool --tool \"googlephotos_update_media_item\" \\\n  --params '{\n    \"media_item_id\": \"YOUR_MEDIA_ITEM_ID\",\n    \"description\": \"Updated description for this photo\"\n  }'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Google Photos is connected.\n2. Call `clawlink_list_tools --integration googlephotos` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `googlephotos`.\n5. If no Google Photos tools appear, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → call                                 │\n│                                                             │\n│  Example: List albums → Get album → Show results            │\n└─────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview → User approves            │\n│           → Execute upload or update                         │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer list, search, and read operations before writes.\n4. For uploads, album changes, or media item updates, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- Media items created via the API are only visible to the app that created them, not in the user's main Google Photos UI.\n- To display photos in the user's main Photos UI, the user must upload them through the Google Photos app directly.\n- Batch upload supports up to 50 items per request via URLs or pre-uploaded files.\n- Videos up to 20GB are supported for upload.\n- Album enrichment adds contextual content (text, location pins) to albums.\n- Media item IDs should be captured from creation or list responses for subsequent operations.\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration googlephotos`. |\n| Missing connection | Google Photos is not connected. Direct the user to https://claw-link.dev/dashboard?add=googlephotos. |\n| `NOT_FOUND` | Album or media item does not exist. Check the ID. |\n| `INVALID_ARGUMENT` | Invalid parameter or missing required field. Review the tool schema with `clawlink_describe_tool`. |\n| Write rejected | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `googlephotos`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n\n## Resources\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- ClawLink: https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=google-photos-albums\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=google-photos-albums)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1780989025750\n}\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nGoogle Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[hith3sh](https://clawhub.ai/user/hith3sh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to manage Google Photos albums and media through ClawLink-managed OAuth, including listing, searching, uploading, creating albums, and updating media metadata.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses ClawLink-managed OAuth and tool calls for access to a connected Google Photos account.\n\nMitigation: Review the Google account permissions during connection, install only if you trust ClawLink and the ClawHub plugin source, and revoke the Google or ClawLink connection when it is no longer needed.\n\nRisk: Write operations can create albums, upload media, add items, or update media descriptions.\n\nMitigation: Confirm the target resource and intended effect before each write operation, and preview upload, album, or media update calls before execution.\n\nRisk: Google Photos Library API access is limited to media items uploaded or created by this application.\n\nMitigation: Use the Google Photos Picker API instead when the user needs access to photos created by camera uploads or other applications.\n\n## Reference(s):\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Google Photos Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Google Photos Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- [Google Photos Picker API](https://developers.google.com/photos/picker)\n- [ClawLink OpenClaw Documentation](https://docs.claw-link.dev/openclaw)\n- [ClawLink Verification](https://claw-link.dev/verify)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with inline shell commands and JSON tool-call examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May guide authenticated Google Photos read and write tool calls after user connection and confirmation.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.5: 3 files, 5790 bytes\n\nFiles: skill-card.md (2894b), SKILL.md (13630b), _meta.json (139b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: google-photos-albums\ndescription: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n---\n\n# Google Photos\n\n![Google Photos](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/googlephotos.svg?v=2)\n\nAccess Google Photos via the Google Photos Library API with managed OAuth authentication. Upload media, search photos, create and manage albums, and update media items.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Google Photos API access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Photos |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Photos |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Google Photos again.\"\n\n## Quick Start\n\n```bash\n# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_items\" --params '{\"page_size\": 50}'\n\n# Create an album\nclawlink_call_tool --tool \"googlephotos_create_album\" --params '{\"album_title\": \"Vacation Photos\"}'\n```\n\n## Authentication\n\nAll Google Photos tool calls are authenticated automatically by ClawLink using the user's connected Google account.\n\n**No API key is required in chat.** ClawLink stores the OAuth token securely and injects it into every Google Photos API request on the user's behalf.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=googlephotos and connect Google Photos.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `googlephotos` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration googlephotos\n```\n\n**Response:** Returns the live tool catalog for Google Photos.\n\n### Reconnect\n\nIf Google Photos tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=googlephotos\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration googlephotos`\n\n## Security & Permissions\n\n- Access is scoped to media items and albums within the connected Google Photos account.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Uploads and album changes must always be confirmed by the user.\n\n## Important API Limitation\n\n**As of March 31, 2025**, the Google Photos Library API only returns media items that were **uploaded or created by this application**. It cannot access photos taken by the user's camera or uploaded from other apps. For accessing the user's full photo library, use the [Google Photos Picker API](https://developers.google.com/photos/picker) instead.\n\n## Tool Reference\n\n### Album Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_albums` | List all albums shown in the user's Albums tab | Read |\n| `googlephotos_get_album` | Get a specific album by its ID | Read |\n| `googlephotos_create_album` | Create a new album with a title | Write |\n| `googlephotos_update_album` | Update an album's title or cover photo | Write |\n\n### Media Item Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_media_items` | List media items created by this application | Read |\n| `googlephotos_search_media_items` | Search media items in the user's library | Read |\n| `googlephotos_batch_get_media_items` | Get specific media items by their IDs | Read |\n| `googlephotos_get_media_item_download` | Download a media item as a file | Read |\n| `googlephotos_update_media_item` | Update a media item's description | Write |\n\n### Upload Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_upload_media` | Upload an image (up to 200MB) or video (up to 20GB) | Write |\n| `googlephotos_batch_create_media_items` | Batch upload and create media items (up to 50 per request) | Write |\n\n### Album Content Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_batch_add_media_items` | Add existing media items to an album | Write |\n| `googlephotos_add_enrichment` | Add an enrichment (text, location, etc.) at a position in an album | Write |\n\n## Code Examples\n\n### List all albums\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_albums\" \\\n  --params '{\n    \"page_size\": 50\n  }'\n```\n\n### List media items\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_media_items\" \\\n  --params '{\n    \"page_size\": 100\n  }'\n```\n\n### Create an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_create_album\" \\\n  --params '{\n    \"album_title\": \"Summer Vacation 2024\"\n  }'\n```\n\n### Batch upload media items from URLs\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_create_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_files\": [\n      {\"url\": \"https://example.com/photo1.jpg\", \"file_name\": \"beach_sunset.jpg\", \"description\": \"Beautiful sunset at the beach\"},\n      {\"url\": \"https://example.com/photo2.jpg\", \"file_name\": \"mountain_view.jpg\", \"description\": \"View from the mountain top\"}\n    ]\n  }'\n```\n\n### Add media items to an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_add_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_item_ids\": [\"MEDIA_ITEM_ID_1\", \"MEDIA_ITEM_ID_2\"]\n  }'\n```\n\n### Update a media item description\n\n```bash\nclawlink_call_tool --tool \"googlephotos_update_media_item\" \\\n  --params '{\n    \"media_item_id\": \"YOUR_MEDIA_ITEM_ID\",\n    \"description\": \"Updated description for this photo\"\n  }'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Google Photos is connected.\n2. Call `clawlink_list_tools --integration googlephotos` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `googlephotos`.\n5. If no Google Photos tools appear, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → call                                 │\n│                                                             │\n│  Example: List albums → Get album → Show results            │\n└─────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview → User approves            │\n│           → Execute upload or update                         │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer list, search, and read operations before writes.\n4. For uploads, album changes, or media item updates, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- Media items created via the API are only visible to the app that created them, not in the user's main Google Photos UI.\n- To display photos in the user's main Photos UI, the user must upload them through the Google Photos app directly.\n- Batch upload supports up to 50 items per request via URLs or pre-uploaded files.\n- Videos up to 20GB are supported for upload.\n- Album enrichment adds contextual content (text, location pins) to albums.\n- Media item IDs should be captured from creation or list responses for subsequent operations.\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration googlephotos`. |\n| Missing connection | Google Photos is not connected. Direct the user to https://claw-link.dev/dashboard?add=googlephotos. |\n| `NOT_FOUND` | Album or media item does not exist. Check the ID. |\n| `INVALID_ARGUMENT` | Invalid parameter or missing required field. Review the tool schema with `clawlink_describe_tool`. |\n| Write rejected | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `googlephotos`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n\n## Resources\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1780985375926\n}\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\nGoogle Photos Library API integration with managed OAuth for uploading media, searching photos, creating and managing albums, and updating media items. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to connect an OpenClaw agent to Google Photos through ClawLink, then list albums, search or upload media, create albums, and manage album or media metadata. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires OAuth access to a connected Google Photos account and handles sensitive credentials through ClawLink. <br>\nMitigation: Install only when Google Photos access is intended, verify the ClawLink connection, and rely on managed OAuth rather than asking users to paste credentials into chat. <br>\nRisk: Album, upload, and media update operations can modify the connected Google Photos account. <br>\nMitigation: Preview write operations and confirm the target resource and intended effect with the user before calling write tools. <br>\nRisk: The Google Photos Library API may only return media uploaded or created by this application, so results may not represent the user's full photo library. <br>\nMitigation: State the limitation when relevant and direct full-library access requests to the Google Photos Picker API. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Google Photos skill page](https://clawhub.ai/hith3sh/google-photos-albums) <br>\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview) <br>\n- [Google Photos Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems) <br>\n- [Google Photos Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums) <br>\n- [Google Photos Picker API](https://developers.google.com/photos/picker) <br>\n- [ClawLink Docs for OpenClaw](https://docs.claw-link.dev/openclaw) <br>\n- [ClawLink Verification](https://claw-link.dev/verify) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions, API Calls] <br>\n**Output Format:** [Markdown with inline bash commands and JSON tool parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses managed OAuth through ClawLink; write operations require explicit user confirmation.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.4: 3 files, 5705 bytes\n\nFiles: skill-card.md (2645b), SKILL.md (13626b), _meta.json (139b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: google-photos-albums\ndescription: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n---\n\n# Google Photos\n\n![Google Photos](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/googlephotos.svg)\n\nAccess Google Photos via the Google Photos Library API with managed OAuth authentication. Upload media, search photos, create and manage albums, and update media items.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Google Photos API access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Photos |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Photos |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Google Photos again.\"\n\n## Quick Start\n\n```bash\n# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_items\" --params '{\"page_size\": 50}'\n\n# Create an album\nclawlink_call_tool --tool \"googlephotos_create_album\" --params '{\"album_title\": \"Vacation Photos\"}'\n```\n\n## Authentication\n\nAll Google Photos tool calls are authenticated automatically by ClawLink using the user's connected Google account.\n\n**No API key is required in chat.** ClawLink stores the OAuth token securely and injects it into every Google Photos API request on the user's behalf.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=googlephotos and connect Google Photos.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `googlephotos` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration googlephotos\n```\n\n**Response:** Returns the live tool catalog for Google Photos.\n\n### Reconnect\n\nIf Google Photos tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=googlephotos\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration googlephotos`\n\n## Security & Permissions\n\n- Access is scoped to media items and albums within the connected Google Photos account.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Uploads and album changes must always be confirmed by the user.\n\n## Important API Limitation\n\n**As of March 31, 2025**, the Google Photos Library API only returns media items that were **uploaded or created by this application**. It cannot access photos taken by the user's camera or uploaded from other apps. For accessing the user's full photo library, use the [Google Photos Picker API](https://developers.google.com/photos/picker) instead.\n\n## Tool Reference\n\n### Album Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_albums` | List all albums shown in the user's Albums tab | Read |\n| `googlephotos_get_album` | Get a specific album by its ID | Read |\n| `googlephotos_create_album` | Create a new album with a title | Write |\n| `googlephotos_update_album` | Update an album's title or cover photo | Write |\n\n### Media Item Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_media_items` | List media items created by this application | Read |\n| `googlephotos_search_media_items` | Search media items in the user's library | Read |\n| `googlephotos_batch_get_media_items` | Get specific media items by their IDs | Read |\n| `googlephotos_get_media_item_download` | Download a media item as a file | Read |\n| `googlephotos_update_media_item` | Update a media item's description | Write |\n\n### Upload Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_upload_media` | Upload an image (up to 200MB) or video (up to 20GB) | Write |\n| `googlephotos_batch_create_media_items` | Batch upload and create media items (up to 50 per request) | Write |\n\n### Album Content Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_batch_add_media_items` | Add existing media items to an album | Write |\n| `googlephotos_add_enrichment` | Add an enrichment (text, location, etc.) at a position in an album | Write |\n\n## Code Examples\n\n### List all albums\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_albums\" \\\n  --params '{\n    \"page_size\": 50\n  }'\n```\n\n### List media items\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_media_items\" \\\n  --params '{\n    \"page_size\": 100\n  }'\n```\n\n### Create an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_create_album\" \\\n  --params '{\n    \"album_title\": \"Summer Vacation 2024\"\n  }'\n```\n\n### Batch upload media items from URLs\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_create_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_files\": [\n      {\"url\": \"https://example.com/photo1.jpg\", \"file_name\": \"beach_sunset.jpg\", \"description\": \"Beautiful sunset at the beach\"},\n      {\"url\": \"https://example.com/photo2.jpg\", \"file_name\": \"mountain_view.jpg\", \"description\": \"View from the mountain top\"}\n    ]\n  }'\n```\n\n### Add media items to an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_add_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_item_ids\": [\"MEDIA_ITEM_ID_1\", \"MEDIA_ITEM_ID_2\"]\n  }'\n```\n\n### Update a media item description\n\n```bash\nclawlink_call_tool --tool \"googlephotos_update_media_item\" \\\n  --params '{\n    \"media_item_id\": \"YOUR_MEDIA_ITEM_ID\",\n    \"description\": \"Updated description for this photo\"\n  }'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Google Photos is connected.\n2. Call `clawlink_list_tools --integration googlephotos` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `googlephotos`.\n5. If no Google Photos tools appear, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → call                                 │\n│                                                             │\n│  Example: List albums → Get album → Show results            │\n└─────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview → User approves            │\n│           → Execute upload or update                         │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer list, search, and read operations before writes.\n4. For uploads, album changes, or media item updates, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- Media items created via the API are only visible to the app that created them, not in the user's main Google Photos UI.\n- To display photos in the user's main Photos UI, the user must upload them through the Google Photos app directly.\n- Batch upload supports up to 50 items per request via URLs or pre-uploaded files.\n- Videos up to 20GB are supported for upload.\n- Album enrichment adds contextual content (text, location pins) to albums.\n- Media item IDs should be captured from creation or list responses for subsequent operations.\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration googlephotos`. |\n| Missing connection | Google Photos is not connected. Direct the user to https://claw-link.dev/dashboard?add=googlephotos. |\n| `NOT_FOUND` | Album or media item does not exist. Check the ID. |\n| `INVALID_ARGUMENT` | Invalid parameter or missing required field. Review the tool schema with `clawlink_describe_tool`. |\n| Write rejected | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `googlephotos`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n\n## Resources\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1780980972851\n}\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nGoogle Photos Library API integration with managed OAuth for uploading media, searching photos, creating and managing albums, and updating media items. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to connect an agent to Google Photos through managed OAuth, then list albums and media, upload files, create or update albums, and manage media items. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill connects a Google Photos account through hosted OAuth and enables sensitive account access. <br>\nMitigation: Pair only the intended account and approve the connection only when it matches the requested Google Photos workflow. <br>\nRisk: Uploads, album changes, and media updates can modify content in the connected account. <br>\nMitigation: Confirm the target resource and intended effect before every write action. <br>\nRisk: The Google Photos Library API may only return media uploaded or created by this application. <br>\nMitigation: Use the Google Photos Picker API when the task requires access to the user's broader photo library. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Google Photos Skill](https://clawhub.ai/hith3sh/google-photos-albums) <br>\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview) <br>\n- [Google Photos Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems) <br>\n- [Google Photos Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums) <br>\n- [Google Photos Picker API](https://developers.google.com/photos/picker) <br>\n- [ClawLink OpenClaw Docs](https://docs.claw-link.dev/openclaw) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, API calls] <br>\n**Output Format:** [Markdown with inline bash commands and JSON tool-call parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses the live ClawLink tool catalog for exact Google Photos operations; write actions require explicit confirmation.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.1: 3 files, 5774 bytes\n\nFiles: skill-card.md (2883b), SKILL.md (13626b), _meta.json (139b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: google-photos-albums\ndescription: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n---\n\n# Google Photos\n\n![Google Photos](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/googlephotos.svg)\n\nAccess Google Photos via the Google Photos Library API with managed OAuth authentication. Upload media, search photos, create and manage albums, and update media items.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Google Photos API access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Photos |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Photos |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Google Photos again.\"\n\n## Quick Start\n\n```bash\n# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_items\" --params '{\"page_size\": 50}'\n\n# Create an album\nclawlink_call_tool --tool \"googlephotos_create_album\" --params '{\"album_title\": \"Vacation Photos\"}'\n```\n\n## Authentication\n\nAll Google Photos tool calls are authenticated automatically by ClawLink using the user's connected Google account.\n\n**No API key is required in chat.** ClawLink stores the OAuth token securely and injects it into every Google Photos API request on the user's behalf.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=googlephotos and connect Google Photos.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `googlephotos` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration googlephotos\n```\n\n**Response:** Returns the live tool catalog for Google Photos.\n\n### Reconnect\n\nIf Google Photos tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=googlephotos\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration googlephotos`\n\n## Security & Permissions\n\n- Access is scoped to media items and albums within the connected Google Photos account.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Uploads and album changes must always be confirmed by the user.\n\n## Important API Limitation\n\n**As of March 31, 2025**, the Google Photos Library API only returns media items that were **uploaded or created by this application**. It cannot access photos taken by the user's camera or uploaded from other apps. For accessing the user's full photo library, use the [Google Photos Picker API](https://developers.google.com/photos/picker) instead.\n\n## Tool Reference\n\n### Album Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_albums` | List all albums shown in the user's Albums tab | Read |\n| `googlephotos_get_album` | Get a specific album by its ID | Read |\n| `googlephotos_create_album` | Create a new album with a title | Write |\n| `googlephotos_update_album` | Update an album's title or cover photo | Write |\n\n### Media Item Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_media_items` | List media items created by this application | Read |\n| `googlephotos_search_media_items` | Search media items in the user's library | Read |\n| `googlephotos_batch_get_media_items` | Get specific media items by their IDs | Read |\n| `googlephotos_get_media_item_download` | Download a media item as a file | Read |\n| `googlephotos_update_media_item` | Update a media item's description | Write |\n\n### Upload Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_upload_media` | Upload an image (up to 200MB) or video (up to 20GB) | Write |\n| `googlephotos_batch_create_media_items` | Batch upload and create media items (up to 50 per request) | Write |\n\n### Album Content Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_batch_add_media_items` | Add existing media items to an album | Write |\n| `googlephotos_add_enrichment` | Add an enrichment (text, location, etc.) at a position in an album | Write |\n\n## Code Examples\n\n### List all albums\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_albums\" \\\n  --params '{\n    \"page_size\": 50\n  }'\n```\n\n### List media items\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_media_items\" \\\n  --params '{\n    \"page_size\": 100\n  }'\n```\n\n### Create an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_create_album\" \\\n  --params '{\n    \"album_title\": \"Summer Vacation 2024\"\n  }'\n```\n\n### Batch upload media items from URLs\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_create_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_files\": [\n      {\"url\": \"https://example.com/photo1.jpg\", \"file_name\": \"beach_sunset.jpg\", \"description\": \"Beautiful sunset at the beach\"},\n      {\"url\": \"https://example.com/photo2.jpg\", \"file_name\": \"mountain_view.jpg\", \"description\": \"View from the mountain top\"}\n    ]\n  }'\n```\n\n### Add media items to an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_add_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_item_ids\": [\"MEDIA_ITEM_ID_1\", \"MEDIA_ITEM_ID_2\"]\n  }'\n```\n\n### Update a media item description\n\n```bash\nclawlink_call_tool --tool \"googlephotos_update_media_item\" \\\n  --params '{\n    \"media_item_id\": \"YOUR_MEDIA_ITEM_ID\",\n    \"description\": \"Updated description for this photo\"\n  }'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Google Photos is connected.\n2. Call `clawlink_list_tools --integration googlephotos` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `googlephotos`.\n5. If no Google Photos tools appear, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → call                                 │\n│                                                             │\n│  Example: List albums → Get album → Show results            │\n└─────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview → User approves            │\n│           → Execute upload or update                         │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer list, search, and read operations before writes.\n4. For uploads, album changes, or media item updates, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- Media items created via the API are only visible to the app that created them, not in the user's main Google Photos UI.\n- To display photos in the user's main Photos UI, the user must upload them through the Google Photos app directly.\n- Batch upload supports up to 50 items per request via URLs or pre-uploaded files.\n- Videos up to 20GB are supported for upload.\n- Album enrichment adds contextual content (text, location pins) to albums.\n- Media item IDs should be captured from creation or list responses for subsequent operations.\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration googlephotos`. |\n| Missing connection | Google Photos is not connected. Direct the user to https://claw-link.dev/dashboard?add=googlephotos. |\n| `NOT_FOUND` | Album or media item does not exist. Check the ID. |\n| `INVALID_ARGUMENT` | Invalid parameter or missing required field. Review the tool schema with `clawlink_describe_tool`. |\n| Write rejected | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `googlephotos`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n\n## Resources\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1780936663314\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nGoogle Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nOpenClaw users use this skill to connect a Google Photos account through ClawLink and work with albums and media items. It supports discovery of live Google Photos tools, read operations, uploads, album changes, and media updates with explicit confirmation for write actions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Connecting Google Photos through hosted OAuth can expose account media and album access to the integration. <br>\nMitigation: Install only if you trust ClawLink, review the Google consent screen, and keep OAuth access limited to the account and scope you intend to use. <br>\nRisk: Uploads, album changes, and media updates can modify the connected Google Photos account. <br>\nMitigation: Preview each write action and approve it only when the target resource and intended effect match the user's request. <br>\nRisk: The Google Photos Library API may not return photos created outside this application. <br>\nMitigation: Use the Google Photos Picker API when the workflow requires access to the user's broader photo library. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/hith3sh/google-photos-albums) <br>\n- [Google Photos Library API overview](https://developers.google.com/photos/library/guides/overview) <br>\n- [Google Photos media items reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems) <br>\n- [Google Photos albums reference](https://developers.google.com/photos/library/reference/rest/v1/albums) <br>\n- [Google Photos Picker API](https://developers.google.com/photos/picker) <br>\n- [ClawLink documentation](https://docs.claw-link.dev/openclaw) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, API Calls, Guidance] <br>\n**Output Format:** [Markdown with inline shell commands and JSON tool-call parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses ClawLink-managed OAuth; write operations should be previewed and confirmed before execution.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.1.1: 3 files, 5824 bytes\n\nFiles: skill-card.md (3062b), SKILL.md (13504b), _meta.json (139b)\n\nFile v0.1.1:SKILL.md\n\n---\nname: google-photos-albums\ndescription: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n---\n\n# Google Photos\n\nAccess Google Photos via the Google Photos Library API with managed OAuth authentication. Upload media, search photos, create and manage albums, and update media items.\n\nThis skill uses [ClawLink](https://claw-link.dev) for hosted connection flows and credentials so you do not need to configure Google Photos API access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Photos |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Photos |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Google Photos again.\"\n\n## Quick Start\n\n```bash\n# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_items\" --params '{\"page_size\": 50}'\n\n# Create an album\nclawlink_call_tool --tool \"googlephotos_create_album\" --params '{\"album_title\": \"Vacation Photos\"}'\n```\n\n## Authentication\n\nAll Google Photos tool calls are authenticated automatically by ClawLink using the user's connected Google account.\n\n**No API key is required in chat.** ClawLink stores the OAuth token securely and injects it into every Google Photos API request on the user's behalf.\n\n### Getting Connected\n\n1. Install the ClawLink plugin (see Install above).\n2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.\n3. Open https://claw-link.dev/dashboard?add=googlephotos and connect Google Photos.\n4. Call `clawlink_list_integrations` to verify the connection is active.\n\n## Connection Management\n\n### List Connections\n\n```bash\nclawlink_list_integrations\n```\n\n**Response:** Returns all connected integrations. Look for `googlephotos` in the list.\n\n### Verify Connection\n\n```bash\nclawlink_list_tools --integration googlephotos\n```\n\n**Response:** Returns the live tool catalog for Google Photos.\n\n### Reconnect\n\nIf Google Photos tools are missing or the connection shows an error:\n\n1. Direct the user to https://claw-link.dev/dashboard?add=googlephotos\n2. After they confirm, call `clawlink_list_integrations` to verify\n3. Then call `clawlink_list_tools --integration googlephotos`\n\n## Security & Permissions\n\n- Access is scoped to media items and albums within the connected Google Photos account.\n- **All write operations require explicit user confirmation.** Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.\n- Uploads and album changes must always be confirmed by the user.\n\n## Important API Limitation\n\n**As of March 31, 2025**, the Google Photos Library API only returns media items that were **uploaded or created by this application**. It cannot access photos taken by the user's camera or uploaded from other apps. For accessing the user's full photo library, use the [Google Photos Picker API](https://developers.google.com/photos/picker) instead.\n\n## Tool Reference\n\n### Album Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_albums` | List all albums shown in the user's Albums tab | Read |\n| `googlephotos_get_album` | Get a specific album by its ID | Read |\n| `googlephotos_create_album` | Create a new album with a title | Write |\n| `googlephotos_update_album` | Update an album's title or cover photo | Write |\n\n### Media Item Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_list_media_items` | List media items created by this application | Read |\n| `googlephotos_search_media_items` | Search media items in the user's library | Read |\n| `googlephotos_batch_get_media_items` | Get specific media items by their IDs | Read |\n| `googlephotos_get_media_item_download` | Download a media item as a file | Read |\n| `googlephotos_update_media_item` | Update a media item's description | Write |\n\n### Upload Operations\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_upload_media` | Upload an image (up to 200MB) or video (up to 20GB) | Write |\n| `googlephotos_batch_create_media_items` | Batch upload and create media items (up to 50 per request) | Write |\n\n### Album Content Management\n\n| Tool | Description | Mode |\n|------|-------------|------|\n| `googlephotos_batch_add_media_items` | Add existing media items to an album | Write |\n| `googlephotos_add_enrichment` | Add an enrichment (text, location, etc.) at a position in an album | Write |\n\n## Code Examples\n\n### List all albums\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_albums\" \\\n  --params '{\n    \"page_size\": 50\n  }'\n```\n\n### List media items\n\n```bash\nclawlink_call_tool --tool \"googlephotos_list_media_items\" \\\n  --params '{\n    \"page_size\": 100\n  }'\n```\n\n### Create an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_create_album\" \\\n  --params '{\n    \"album_title\": \"Summer Vacation 2024\"\n  }'\n```\n\n### Batch upload media items from URLs\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_create_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_files\": [\n      {\"url\": \"https://example.com/photo1.jpg\", \"file_name\": \"beach_sunset.jpg\", \"description\": \"Beautiful sunset at the beach\"},\n      {\"url\": \"https://example.com/photo2.jpg\", \"file_name\": \"mountain_view.jpg\", \"description\": \"View from the mountain top\"}\n    ]\n  }'\n```\n\n### Add media items to an album\n\n```bash\nclawlink_call_tool --tool \"googlephotos_batch_add_media_items\" \\\n  --params '{\n    \"album_id\": \"YOUR_ALBUM_ID\",\n    \"media_item_ids\": [\"MEDIA_ITEM_ID_1\", \"MEDIA_ITEM_ID_2\"]\n  }'\n```\n\n### Update a media item description\n\n```bash\nclawlink_call_tool --tool \"googlephotos_update_media_item\" \\\n  --params '{\n    \"media_item_id\": \"YOUR_MEDIA_ITEM_ID\",\n    \"description\": \"Updated description for this photo\"\n  }'\n```\n\n## Discovery Workflow\n\n1. Call `clawlink_list_integrations` to confirm Google Photos is connected.\n2. Call `clawlink_list_tools --integration googlephotos` to see the live catalog.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `googlephotos`.\n5. If no Google Photos tools appear, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n\n## Execution Workflow\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  READ OPERATIONS (Safe)                                     │\n│  list → get → search → call                                 │\n│                                                             │\n│  Example: List albums → Get album → Show results            │\n└─────────────────────────────────────────────────────────────┘\n                              │\n                              ▼\n┌─────────────────────────────────────────────────────────────┐\n│  WRITE OPERATIONS (Require Confirmation)                    │\n│  describe → preview → confirm → call                        │\n│                                                             │\n│  Example: Describe tool → Preview → User approves            │\n│           → Execute upload or update                         │\n└─────────────────────────────────────────────────────────────┘\n```\n\n1. For unfamiliar tools, ambiguous requests, or any write action, call `clawlink_describe_tool` first.\n2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.\n3. Prefer list, search, and read operations before writes.\n4. For uploads, album changes, or media item updates, call `clawlink_preview_tool` first.\n5. Execute with `clawlink_call_tool`. Pass confirmation only after the preview matches the user's intent.\n6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## Notes\n\n- Media items created via the API are only visible to the app that created them, not in the user's main Google Photos UI.\n- To display photos in the user's main Photos UI, the user must upload them through the Google Photos app directly.\n- Batch upload supports up to 50 items per request via URLs or pre-uploaded files.\n- Videos up to 20GB are supported for upload.\n- Album enrichment adds contextual content (text, location pins) to albums.\n- Media item IDs should be captured from creation or list responses for subsequent operations.\n\n## Error Handling\n\n| Status / Error | Meaning |\n|----------------|---------|\n| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration googlephotos`. |\n| Missing connection | Google Photos is not connected. Direct the user to https://claw-link.dev/dashboard?add=googlephotos. |\n| `NOT_FOUND` | Album or media item does not exist. Check the ID. |\n| `INVALID_ARGUMENT` | Invalid parameter or missing required field. Review the tool schema with `clawlink_describe_tool`. |\n| Write rejected | User did not confirm a write action. Always confirm before executing writes. |\n\n### Troubleshooting: Tools Not Visible\n\n1. Check that the ClawLink plugin is installed:\n   ```bash\n   openclaw plugins list\n   ```\n2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.\n3. If a fresh chat does not help, run:\n   ```bash\n   openclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\n   openclaw gateway restart\n   ```\n4. After restart, tell the user to send `/new` again and retry.\n\n### Troubleshooting: Invalid Tool Call\n\n1. Ensure the integration slug is exactly `googlephotos`.\n2. Use `clawlink_describe_tool` to verify parameter names and types before calling.\n3. For write operations, always call `clawlink_preview_tool` first.\n\n## Resources\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n\n---\n\n**Powered by [ClawLink](https://claw-link.dev)** — an integration hub for OpenClaw\n\n![ClawLink Logo](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/logo/link_logo_black_small.png)\n\nFile v0.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"0.1.1\",\n  \"publishedAt\": 1780839064521\n}\n\nFile v0.1.1:skill-card.md\n\n## Description: <br>\nGoogle Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to operate Google Photos through OpenClaw with managed OAuth, including listing albums, searching app-created media, uploading files, creating albums, and updating album or media metadata. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires OAuth access to a connected Google Photos account. <br>\nMitigation: Review the OAuth consent screen and install only when the user trusts ClawLink to manage Google Photos access. <br>\nRisk: Uploads, album changes, and media metadata updates can modify the connected account's photo library state. <br>\nMitigation: Confirm the target resource and intended effect with the user before every create, update, upload, or album-content operation. <br>\nRisk: Google Photos Library API results may omit photos that were not uploaded or created by this application. <br>\nMitigation: Treat list and search results as app-scoped and use the Google Photos Picker API when the user needs access to their broader photo library. <br>\nRisk: Ongoing OAuth access may remain available after setup. <br>\nMitigation: Disconnect Google Photos or remove the ClawLink plugin when the user no longer wants continued access. <br>\n\n\n## Reference(s): <br>\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview) <br>\n- [Google Photos Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems) <br>\n- [Google Photos Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums) <br>\n- [Google Photos Picker API](https://developers.google.com/photos/picker) <br>\n- [ClawLink OpenClaw Docs](https://docs.claw-link.dev/openclaw) <br>\n- [Google Photos Skill on ClawHub](https://clawhub.ai/hith3sh/google-photos-albums) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with inline bash commands and JSON tool parameters] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces operational guidance for ClawLink-backed Google Photos tool calls; write actions require user confirmation before execution.] <br>\n\n## Skill Version(s): <br>\n0.1.1 (source: release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v0.1.0: 3 files, 3665 bytes\n\nFiles: skill-card.md (2589b), SKILL.md (5367b), _meta.json (139b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: google-photos-albums\ndescription: Upload, search, and manage photos, albums, and media items in Google Photos — powered by ClawLink.\n---\n\n# Google Photos for OpenClaw\n\nWork with Google Photos from chat — upload media, search photos, manage albums, and update media items.\n\nPowered by [ClawLink](https://claw-link.dev), an integration hub for OpenClaw that handles hosted connection flows and credentials so you don't need to configure Google Photos API access yourself.\n\n## Quick start\n\n1. Install the verified ClawLink plugin: `openclaw plugins install clawhub:clawlink-plugin`\n2. Start a fresh OpenClaw chat if the plugin was just installed and ClawLink tools are not visible yet\n3. If ClawLink is not configured, call `clawlink_begin_pairing`\n4. Tell the user to open the returned pairing URL, sign in to ClawLink if needed, and approve the device\n5. After the user confirms approval, call `clawlink_get_pairing_status`\n6. Tell the user to connect Google Photos at [claw-link.dev/dashboard?add=googlephotos](https://claw-link.dev/dashboard?add=googlephotos)\n7. When the user confirms Google Photos is connected, call `clawlink_list_integrations` and then `clawlink_list_tools` with the `googlephotos` integration slug\n\n## Setup details\n\n### Installing the plugin\n\nIf the ClawLink plugin is not installed yet, tell the user to run:\n\n```\nopenclaw plugins install clawhub:clawlink-plugin\n```\n\nIf the current chat started before the plugin was installed and ClawLink tools are still unavailable, tell the user to start a fresh chat so OpenClaw reloads the plugin tool catalog.\n\n### Pairing ClawLink\n\nIf ClawLink reports that the plugin is not configured, the plugin has not been paired with the user's ClawLink account yet.\n\n1. Call `clawlink_begin_pairing`.\n2. Tell the user to open the returned pairing URL in their browser.\n3. The user signs in to ClawLink if needed and approves the OpenClaw device.\n4. After the user confirms approval, call `clawlink_get_pairing_status` to finish local setup.\n\nPairing stores a local ClawLink credential in OpenClaw's plugin config so future tool calls can work. The user should not paste raw credentials into chat.\n\n### Connecting Google Photos\n\nTell the user to open https://claw-link.dev/dashboard?add=googlephotos and connect Google Photos there. The page opens the add-connection panel filtered to Google Photos. ClawLink's hosted page runs the Google account connection flow — the user clicks through Google sign-in and consent. When they confirm it is done, call `clawlink_list_integrations` to verify, then call `clawlink_list_tools` with integration `googlephotos`.\n\n## Using Google Photos tools\n\nClawLink provides tools dynamically based on what the user has connected. You do not need to know tool names or schemas in advance.\n\n### Discovery\n\n1. Call `clawlink_list_integrations` to confirm Google Photos is connected.\n2. Call `clawlink_list_tools` with integration `googlephotos`.\n3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.\n4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `googlephotos`.\n5. If no Google Photos tools appear, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n\n### Execution\n\n1. Call `clawlink_describe_tool` before using an unfamiliar tool, before any write, or when the request is ambiguous.\n2. Use the returned schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups`.\n3. Prefer list, search, and read operations before writes.\n4. For uploads, album changes, or media item updates, call `clawlink_preview_tool` first, then confirm with the user.\n5. Execute with `clawlink_call_tool`.\n6. If it fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.\n\n## What you can do\n\nTypical Google Photos tasks (actual availability depends on the user's connected account, permissions, scopes, and current ClawLink tool catalog):\n\n- List and search albums and media items\n- Upload and batch-create media items in the library or into albums\n- Add existing media items to an album\n- Create new albums and update album titles or cover photos\n- Download a media item\n- Update a media item's description\n\n**Note:** Due to Google Photos API restrictions (effective March 31, 2025), listing media items only returns content uploaded by this application, not the user's full camera roll or photos from other apps.\n\n## Rules\n\n- Always use ClawLink tools for Google Photos. Do not ask the user for separate Google credentials.\n- Do not claim a capability is missing without checking the live ClawLink catalog in the current turn.\n- Do not invent slash commands or ask the user to paste raw credentials.\n- Ask for confirmation before uploads, album creation, or any media item changes.\n- If Google Photos is not connected, direct the user to https://claw-link.dev/dashboard?add=googlephotos.\n- Never echo or repeat the user's ClawLink credential.\n\n## Resources\n\n- ClawLink: https://claw-link.dev\n- ClawLink Docs: https://docs.claw-link.dev/openclaw\n- ClawLink Verification: https://claw-link.dev/verify\n- ClawLink Source: https://github.com/hith3sh/clawlink\n- Google Photos API: https://developers.google.com/photos/library/guides/overview\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1779545986850\n}\n\nFile v0.1.0:skill-card.md\n\n## Description: <br>\nUpload, search, and manage photos, albums, and media items in Google Photos through ClawLink. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[hith3sh](https://clawhub.ai/user/hith3sh) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nOpenClaw users use this skill to connect Google Photos through ClawLink, discover available Google Photos tools, and perform album and media workflows from chat. It is intended for setup guidance, tool discovery, uploads, downloads, searches, and confirmed album or media-item changes. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: ClawLink is an intermediary for Google Photos access and pairing stores a local ClawLink credential. <br>\nMitigation: Review ClawLink and Google permission prompts, use the hosted pairing flow, and do not paste or echo raw credentials in chat. <br>\nRisk: Uploads, album creation, and media-item updates can change the user's Google Photos library. <br>\nMitigation: Preview write operations with ClawLink and require explicit user confirmation before uploads, album creation, or media-item changes. <br>\nRisk: Available Google Photos operations can vary by account, permissions, scopes, and the current ClawLink catalog. <br>\nMitigation: List, search, and describe live ClawLink tools before acting, and report real tool errors without inventing missing or successful capabilities. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill listing](https://clawhub.ai/hith3sh/google-photos-albums) <br>\n- [ClawLink](https://claw-link.dev) <br>\n- [ClawLink OpenClaw documentation](https://docs.claw-link.dev/openclaw) <br>\n- [ClawLink verification](https://claw-link.dev/verify) <br>\n- [Google Photos Library API overview](https://developers.google.com/photos/library/guides/overview) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, API calls] <br>\n**Output Format:** [Markdown with inline shell commands and tool-call guidance] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses the live ClawLink tool catalog as the source of truth for available Google Photos operations.] <br>\n\n## Skill Version(s): <br>\n0.1.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: Google Photos Owner: hith3sh Summary: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-09T07:10:25.750Z | user Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘"},{"language":"bash","snippet":"openclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart"},{"language":"bash","snippet":"# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_items\" --params '{\"page_size\": 50}'\n\n# Create an album\nclawlink_call_tool --tool \"googlephotos_create_album\" --params '{\"album_title\": \"Vacation Photos\"}'"},{"language":"bash","snippet":"clawlink_list_integrations"},{"language":"bash","snippet":"clawlink_list_tools --integration googlephotos"},{"language":"bash","snippet":"clawlink_call_tool --tool \"googlephotos_list_albums\" \\\n  --params '{\n    \"page_size\": 50\n  }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: google-photos-albums\ndescription: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n---\n\n# Google Photos\n\n![Google Photos](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/brand-logos/googlephotos.svg?v=2)\n\nAccess Google Photos via the Google Photos Library API with managed OAuth authentication. Upload media, search photos, create and manage albums, and update media items.\n\nThis skill uses [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=google-photos-albums) for hosted connection flows and credentials so you do not need to configure Google Photos API access yourself.\n\n### Setup in 3 Steps\n\n| Step 1: Install | Step 2: Pair Account | Step 3: Connect Google Photos |\n|:---:|:---:|:---:|\n| ![Install](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/pairing/initialstep_1.gif) | ![Pair](https://raw.githubusercontent.com/ClawLink-HQ/clawlink/main/public/images/approve_process.gif) | *App-specific connection GIF coming soon* |\n| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Google Photos |\n\n## How It Works\n\n```\n┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   OpenClaw      │────▶│   ClawLink   │────▶│   Google Photos  │\n│   (User Chat)   │     │   (OAuth)    │     │   (Photos API)   │\n└─────────────────┘     └──────────────┘     └──────────────────┘\n         │                       │                       │\n         │  1. Install Plugin    │                       │\n         │  2. Pair Device       │                       │\n         │  3. Connect Photos    │                       │\n         │                       │  4. Secure Token       │\n         │                       │  5. Proxy Requests    │\n         │                       │                       │\n         ▼                       ▼                       ▼\n   ┌──────────┐           ┌──────────┐           ┌──────────┐\n   │  SKILL   │           │ Dashboard│           │  Google  │\n   │  File    │           │ Auth     │           │  Photos  │\n   └──────────┘           └──────────┘           └──────────┘\n```\n\n## Install\n\nInstall the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.\n\n```bash\nopenclaw plugins install clawhub:clawlink-plugin\nopenclaw config set tools.alsoAllow '[\"clawlink-plugin\"]' --strict-json\nopenclaw gateway restart\n```\n\nThen tell the user: \"OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Google Photos again.\"\n\n## Quick Start\n\n```bash\n# List albums\nclawlink_call_tool --tool \"googlephotos_list_albums\" --params '{}'\n\n# List media items\nclawlink_call_tool --tool \"googlephotos_list_media_"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn713pxvayh8fjhb503zjb8yxh815j54\",\n  \"slug\": \"google-photos-albums\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1780989025750\n}"},{"path":"skill-card.md","content":"## Description:\n\nGoogle Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when users want to manage their Google Photos library, create albums, or upload media.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[hith3sh](https://clawhub.ai/user/hith3sh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to manage Google Photos albums and media through ClawLink-managed OAuth, including listing, searching, uploading, creating albums, and updating media metadata.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill uses ClawLink-managed OAuth and tool calls for access to a connected Google Photos account.\n\nMitigation: Review the Google account permissions during connection, install only if you trust ClawLink and the ClawHub plugin source, and revoke the Google or ClawLink connection when it is no longer needed.\n\nRisk: Write operations can create albums, upload media, add items, or update media descriptions.\n\nMitigation: Confirm the target resource and intended effect before each write operation, and preview upload, album, or media update calls before execution.\n\nRisk: Google Photos Library API access is limited to media items uploaded or created by this application.\n\nMitigation: Use the Google Photos Picker API instead when the user needs access to photos created by camera uploads or other applications.\n\n## Reference(s):\n\n- [Google Photos Library API Overview](https://developers.google.com/photos/library/guides/overview)\n- [Google Photos Media Items Reference](https://developers.google.com/photos/library/reference/rest/v1/mediaItems)\n- [Google Photos Albums Reference](https://developers.google.com/photos/library/reference/rest/v1/albums)\n- [Google Photos Picker API](https://developers.google.com/photos/picker)\n- [ClawLink OpenClaw Documentation](https://docs.claw-link.dev/openclaw)\n- [ClawLink Verification](https://claw-link.dev/verify)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with inline shell commands and JSON tool-call examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May guide authenticated Google Photos read and write tool calls after user connection and confirmation.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when... Skill: Google Photos Owner: hith3sh Summary: Google Photos Library API integration with managed OAuth. Upload media, search photos, create and manage albums, and update media items. Use this skill when... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-09T07:10:25.750Z | user Add UTM attribution tags (utm_source=clawhub) to ClawLink branding links so visits from this skill page are tracked as a distinct traffic","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1126,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T13:59:27.113Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:45:54.864Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}