[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73184":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},73184,"gogcli","openclaw\u002Fgogcli","openclaw","Google Workspace in your terminal.","https:\u002F\u002Fgogcli.sh",null,"Go",7705,604,25,16,0,27,83,345,81,39.35,"MIT License",false,"main",true,[27,28,29,30,31],"gcal","gcontacts","gdrive","gmail","google","2026-06-12 02:03:10","# gogcli\n\n`gog` is a script-friendly Google CLI for Gmail, Calendar, Drive, Docs, Sheets,\nSites, Slides, Forms, Meet, Apps Script, Analytics, Search Console, Contacts,\nTasks, People, Classroom, Chat, YouTube, and Workspace admin flows.\n\nIt is built for terminals, shell scripts, CI, and coding agents:\n\n- predictable `--json` and `--plain` output on stdout\n- human hints and progress on stderr\n- multiple Google accounts and OAuth clients\n- OAuth, direct access tokens, ADC, and Workspace service accounts\n- runtime command allowlists\u002Fdenylists and baked safety-profile binaries\n- read-only audit\u002Freporting commands for risky surfaces like Drive and Contacts\n- [generated docs](docs\u002Fcommands\u002FREADME.md) for every command\n\nRendered docs: \u003Chttps:\u002F\u002Fgogcli.sh\u002F>\n\nStart here:\n\n- [Install](docs\u002Finstall.md)\n- [Quickstart](docs\u002Fquickstart.md)\n- [Auth clients and service accounts](docs\u002Fauth-clients.md)\n- [Command index](docs\u002Fcommands\u002FREADME.md)\n- [Gmail watch \u002F Pub\u002FSub push](docs\u002Fwatch.md) (\u003Chttps:\u002F\u002Fgogcli.sh\u002Fwatch.html>)\n\n## Install\n\nSee the full [Install](docs\u002Finstall.md) guide for Homebrew, Docker, Windows\nZIPs, source builds, and headless\u002Fcontainer keyring setup.\n\n### Homebrew\n\n```bash\nbrew install gogcli\ngog --version\n```\n\n### Docker\n\n```bash\ndocker run --rm ghcr.io\u002Fopenclaw\u002Fgogcli:latest version\n```\n\nAuthenticated container runs should use a persistent config volume and the\nencrypted file keyring:\n\n```bash\ndocker volume create gogcli-config\n\ndocker run --rm -it \\\n  -e GOG_KEYRING_BACKEND=file \\\n  -e GOG_KEYRING_PASSWORD \\\n  -v gogcli-config:\u002Fhome\u002Fgog\u002F.config\u002Fgogcli \\\n  ghcr.io\u002Fopenclaw\u002Fgogcli:latest \\\n  auth add you@gmail.com --services gmail,calendar,drive\n```\n\n### Windows\n\nDownload `gogcli_\u003Cversion>_windows_amd64.zip` or\n`gogcli_\u003Cversion>_windows_arm64.zip` from the\n[latest release](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fgogcli\u002Freleases), extract\n`gog.exe`, and put that directory on `PATH`.\n\n### Build from source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fgogcli.git\ncd gogcli\nmake\n.\u002Fbin\u002Fgog --version\n```\n\nSource builds require the Go version declared in `go.mod`.\n\n## Quick Start\n\nThe full walkthrough lives in [Quickstart](docs\u002Fquickstart.md). For named OAuth\nclients, remote OAuth, direct access tokens, ADC, and Workspace service\naccounts, see [Auth clients](docs\u002Fauth-clients.md).\n\nCreate a Google Cloud project, enable the APIs you need, create a Desktop OAuth\nclient, then store that client JSON in `gog`.\n\n```bash\ngog auth credentials ~\u002FDownloads\u002Fclient_secret_....json\ngog auth add you@gmail.com --services gmail,calendar,drive,docs,sheets,contacts\ngog auth doctor --check\n\nexport GOG_ACCOUNT=you@gmail.com\ngog gmail search 'newer_than:7d' --max 10\n```\n\nUseful Google setup links:\n\n- [Create a Cloud project](https:\u002F\u002Fconsole.cloud.google.com\u002Fprojectcreate)\n- [OAuth clients](https:\u002F\u002Fconsole.cloud.google.com\u002Fauth\u002Fclients)\n- [OAuth consent screen](https:\u002F\u002Fconsole.cloud.google.com\u002Fauth\u002Fbranding)\n- [API library](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Flibrary)\n- [Places API (New)](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fplaces.googleapis.com)\n- [Drive Labels API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fdrivelabels.googleapis.com)\n- [Photos Library API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fphotoslibrary.googleapis.com)\n- [Google Analytics Admin API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fanalyticsadmin.googleapis.com)\n- [Google Analytics Data API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fanalyticsdata.googleapis.com)\n- [Google Search Console API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fsearchconsole.googleapis.com)\n- [YouTube Data API v3](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Fapi\u002Fyoutube.googleapis.com)\n- [Apps Script user setting](https:\u002F\u002Fscript.google.com\u002Fhome\u002Fusersettings)\n\nEnable APIs in the same Cloud project that owns your OAuth client. If Google\nreturns `accessNotConfigured`, enable that API and retry after propagation.\n\nConsumer `gmail.com` accounts work for normal user APIs such as Gmail, Calendar,\nDrive, Docs, Sheets, Slides, Forms, Apps Script, Analytics, Search Console,\nContacts\u002FPeople, Tasks, and Classroom. Workspace-only APIs such as Admin\nDirectory, Cloud Identity Groups, Chat, and Keep\u002Fdomain-wide-delegation flows\nrequire a managed domain.\n\nIf your OAuth app is External + Testing, Google refresh tokens for user-data\nscopes can expire after 7 days. Publish the personal OAuth app if you want\nlong-lived refresh tokens.\n\n## Daily Examples\n\nEvery command below has generated reference docs in the\n[Command index](docs\u002Fcommands\u002FREADME.md). The feature guides linked under each\nsection explain the workflow shape and safety notes.\n\n### Gmail\n\nDocs: [Gmail workflows](docs\u002Fgmail-workflows.md),\n[Gmail watch](docs\u002Fwatch.md), [email tracking](docs\u002Femail-tracking.md),\n[`gog gmail`](docs\u002Fcommands\u002Fgog-gmail.md).\n\n```bash\n# Search mail and get sanitized message content for agents\u002Fscripts.\ngog gmail search 'from:boss newer_than:30d' --json\ngog gmail get \u003CmessageId> --sanitize-content --json\n\n# Export Gmail filters in the format the Gmail web UI can import.\ngog gmail settings filters export --out filters.xml\n\n# Hard block send operations during automation.\ngog --gmail-no-send gmail drafts create --to you@example.com --subject test\n```\n\n### Calendar\n\nDocs: [`gog calendar`](docs\u002Fcommands\u002Fgog-calendar.md),\n[`calendar create`](docs\u002Fcommands\u002Fgog-calendar-create.md),\n[`calendar update`](docs\u002Fcommands\u002Fgog-calendar-update.md),\n[`calendar move`](docs\u002Fcommands\u002Fgog-calendar-move.md),\n[Zoom setup](docs\u002Fzoom-auth-setup.md).\n\n```bash\ngog calendar events --today\ngog calendar create --summary \"Review\" \\\n  --from \"2026-05-06T10:00:00+02:00\" \\\n  --to \"2026-05-06T10:30:00+02:00\"\ngog calendar create primary --summary \"Coffee\" \\\n  --from \"2026-05-06T10:00:00+02:00\" \\\n  --to \"2026-05-06T10:30:00+02:00\" \\\n  --location-search \"Elysian Coffee Vancouver\"\ngog calendar update primary \u003CeventId> --with-meet\ngog zoom auth setup\ngog calendar create primary --summary \"Client sync\" \\\n  --from \"2026-05-06T11:00:00+02:00\" \\\n  --to \"2026-05-06T11:30:00+02:00\" \\\n  --with-zoom\ngog calendar move primary \u003CeventId> team-calendar@example.com\ngog calendar appointments\n```\n\n### Drive\n\nDocs: [Drive audits](docs\u002Fdrive-audits.md), [raw API dumps](docs\u002Fraw-api.md),\n[`gog drive`](docs\u002Fcommands\u002Fgog-drive.md),\n[`drive changes`](docs\u002Fcommands\u002Fgog-drive-changes.md),\n[`drive activity`](docs\u002Fcommands\u002Fgog-drive-activity.md).\n\n```bash\n# Read-only folder audits.\ngog drive tree --parent \u003CfolderId> --depth 2\ngog drive du --parent \u003CfolderId> --max 20 --json\ngog drive inventory --parent \u003CfolderId> --json\ngog drive audit sharing --parent \u003CfolderId> --internal-domain example.com --json\ngog drive audit user clawdbot@gmail.com --parent \u003CfolderId> --json\ngog drive bulk remove-public --parent \u003CfolderId> --dry-run\ngog drive share \u003CfileId> --to user --email person@example.com --notify --dry-run\ngog drive labels list --json\ngog drive labels file list \u003CfileId> --json\ngog drive labels file apply \u003CfileId> \u003ClabelId> --text fieldId=value\n# Drive Labels requires a Google Workspace customer.\n\n# Ask Drive for non-default fields.\ngog drive get \u003CfileId> --fields 'id,name,mimeType,size,owners,emailAddress' --json\n\n# Track changes and audit activity.\ngog drive changes start-token\ngog drive changes list --token \u003Ctoken> --json\ngog drive activity query --file \u003CfileId> --actions edit,share --from 2026-01-01T00:00:00Z --json\n\n# Lossless raw API JSON.\ngog drive raw \u003CfileId> --pretty\n```\n\n### Maps\n\nDocs: [`gog maps`](docs\u002Fcommands\u002Fgog-maps.md),\n[`maps places`](docs\u002Fcommands\u002Fgog-maps-places.md).\n\n```bash\ngog maps places search \"Elysian Coffee Vancouver\" --json\ngog maps places details \u003CplaceId> --json\ngog maps directions --origin \"Vancouver, BC\" --destination \"Seattle, WA\" --json\ngog maps distance --origins \"Vancouver BC\" --destinations \"Seattle WA\" --json\ngog maps geocode \"1600 Amphitheatre Parkway, Mountain View, CA\" --json\ngog maps reverse-geocode --lat=37.422 --lng=-122.084 --json\n```\n\nUse comma-separated `maps distance --origins\u002F--destinations` for multiple\nlocations. If an address itself contains commas, pass it without commas or use a\nPlace ID\u002Flat,lng value to avoid splitting it.\n\n### Photos\n\nDocs: [`gog photos`](docs\u002Fcommands\u002Fgog-photos.md).\n\nGoogle Photos Library API access is limited to app-created media through\n`photoslibrary.readonly.appcreateddata`, and the Photos Library API must be\nenabled on the OAuth project used for `gog auth add`.\n\n```bash\ngog photos list --json\ngog photos search --media-type PHOTO --from 2026-01-01 --to 2026-01-31 --json\ngog photos download \u003CmediaItemId> --out photo.jpg\n```\n\n### Contacts\n\nDocs: [contacts dedupe](docs\u002Fcontacts-dedupe.md),\n[JSON contact updates](docs\u002Fcontacts-json-update.md),\n[`gog contacts`](docs\u002Fcommands\u002Fgog-contacts.md).\n\n```bash\ngog contacts search alice --json\ngog contacts export --all --out contacts.vcf\n\n# Preview only: no merge\u002Fdelete\u002Fupdate call is made.\ngog contacts dedupe --json\ngog contacts dedupe --match email,phone,name --dry-run\n```\n\n### Docs\n\nDocs: [Google Docs editing](docs\u002Fdocs-editing.md),\n[sed-style document edits](docs\u002Fsedmat.md),\n[`gog docs`](docs\u002Fcommands\u002Fgog-docs.md).\n\n```bash\ngog docs write \u003CdocId> --append --markdown --text '## Status'\ngog docs format \u003CdocId> --match Status --bold --font-size 18\ngog docs add-tab \u003CdocId> --title \"Notes\"\ngog docs tabs add \u003CdocId> --title \"Notes\"\ngog docs find-replace \u003CdocId> old new --tab \"Notes\" --dry-run\ngog docs raw \u003CdocId> --pretty\n```\n\n### Sheets\n\nDocs: [Sheets tables](docs\u002Fsheets-tables.md),\n[Sheets formatting](docs\u002Fsheets-formatting.md),\n[`gog sheets`](docs\u002Fcommands\u002Fgog-sheets.md).\n\n```bash\ngog sheets get \u003CspreadsheetId> 'Sheet1!A1:D20' --json\ngog sheets table list \u003CspreadsheetId>\ngog sheets table append \u003CspreadsheetId> Tasks 'Ship README|done'\ngog sheets table clear \u003CspreadsheetId> Tasks\ngog sheets conditional-format add \u003CspreadsheetId> 'Sheet1!A2:A100' \\\n  --type text-contains \\\n  --expr blocked \\\n  --format-json '{\"backgroundColor\":{\"red\":1,\"green\":0.84,\"blue\":0.84}}'\ngog sheets banding set \u003CspreadsheetId> 'Sheet1!A1:D100'\n```\n\n### Slides and Forms\n\nDocs: [Slides from Markdown](docs\u002Fslides-markdown.md),\n[template replacement](docs\u002Fslides-template-replacement.md),\n[`gog slides`](docs\u002Fcommands\u002Fgog-slides.md),\n[`gog forms`](docs\u002Fcommands\u002Fgog-forms.md).\n\n```bash\ngog slides create-from-markdown \"Weekly update\" --content-file slides.md\ngog slides insert-text \u003CpresentationId> \u003CobjectId> \"New text\"\ngog forms update \u003CformId> --quiz=true\ngog forms add-question \u003CformId> --title \"What is 2+2?\" --type radio -o 1 -o 4 --correct 4 --points 1\ngog forms questions add \u003CformId> --title \"What is 2+2?\" --type radio -o 1 -o 4 --correct 4 --points 1\ngog forms publish \u003CformId>\ngog forms responses list \u003CformId> --json\ngog forms raw \u003CformId> --pretty\n```\n\n### YouTube\n\nDocs: [`gog youtube`](docs\u002Fcommands\u002Fgog-youtube.md),\n[`youtube channels`](docs\u002Fcommands\u002Fgog-youtube-channels.md),\n[`youtube videos`](docs\u002Fcommands\u002Fgog-youtube-videos.md),\n[`youtube activities`](docs\u002Fcommands\u002Fgog-youtube-activities.md).\n\n```bash\ngog config set youtube_api_key YOUR_API_KEY\ngog yt channels list --id UC_x5XG1OV2P6uZZ5FSM9Ttw --json\ngog yt videos list --chart mostPopular --region US --max 5\ngog yt activities list --mine -a you@gmail.com\n```\n\nFor API-key reads, enable YouTube Data API v3 on the key's Google Cloud project\nand make sure API-key restrictions allow YouTube Data API calls. Authenticated\n`--mine` reads use OAuth instead.\n\n### Analytics and Search Console\n\nDocs: [`gog analytics`](docs\u002Fcommands\u002Fgog-analytics.md),\n[`analytics report`](docs\u002Fcommands\u002Fgog-analytics-report.md),\n[`gog searchconsole`](docs\u002Fcommands\u002Fgog-searchconsole.md),\n[`searchconsole query`](docs\u002Fcommands\u002Fgog-searchconsole-query.md).\n\n```bash\ngog analytics accounts --all --json\ngog analytics report 123456789 --from 7daysAgo --to today --dimensions date,country --metrics activeUsers,sessions\ngog searchconsole sites\ngog searchconsole query sc-domain:example.com --from 2026-02-01 --to 2026-02-07 --dimensions query,page --filter query:contains:gog\ngog searchconsole sitemaps submit sc-domain:example.com https:\u002F\u002Fexample.com\u002Fsitemap.xml --force\n```\n\n### Backup\n\nDocs: [Backup](docs\u002Fbackup.md), [`gog backup`](docs\u002Fcommands\u002Fgog-backup.md).\n\n```bash\ngog backup init --repo ~\u002FBackups\u002Fgog\ngog backup push --services gmail,calendar,contacts,drive\ngog backup verify\ngog backup export --gmail-format markdown --out ~\u002FExports\u002Fgog\n```\n\nSee [docs\u002Fbackup.md](docs\u002Fbackup.md) before running broad or unattended backup\njobs.\n\n## Output and Automation\n\nDocs: [Safety Profiles](docs\u002Fsafety-profiles.md),\n[`gog schema`](docs\u002Fcommands\u002Fgog-schema.md),\n[`gog config no-send`](docs\u002Fcommands\u002Fgog-config-no-send.md).\n\nUse `--json` for structured output and `--plain` for stable TSV. Prompts,\nprogress, and warnings go to stderr so stdout stays parseable.\n\n```bash\ngog --json gmail search 'has:attachment newer_than:90d' --max 50 |\n  jq -r '.threads[].id'\n\ngog --plain calendar events --today\n```\n\nUseful global flags:\n\n- `--account \u003Cemail|alias|auto>`: select an account\n- `--client \u003Cname>`: select a stored OAuth client\n- `--json`: JSON stdout\n- `--plain`: stable parseable text stdout\n- `--wrap-untrusted`: in JSON\u002Fraw output, wrap fetched free-text fields with\n  external untrusted-content markers for LLM\u002Fagent consumption\n- `--dry-run`: print intended actions where a command supports planning\n- `--no-input`: fail instead of prompting\n- `--force`: confirm destructive operations\n- `--enable-commands \u003Ccsv>`: allow only selected command paths\n- `--disable-commands \u003Ccsv>`: block selected command paths\n- `--gmail-no-send`: block Gmail send operations\n\nFor coding agents or CI, prefer:\n\n```bash\ngog --account you@gmail.com \\\n  --enable-commands gmail.search,gmail.get,drive.ls,docs.cat \\\n  --gmail-no-send \\\n  --wrap-untrusted \\\n  --json \\\n  gmail search 'newer_than:7d'\n```\n\nFor stricter agent deployments, build or download a baked safety-profile binary.\nSee [docs\u002Fsafety-profiles.md](docs\u002Fsafety-profiles.md).\n\n## Auth and Accounts\n\nDocs: [Auth clients](docs\u002Fauth-clients.md),\n[`gog auth`](docs\u002Fcommands\u002Fgog-auth.md),\n[`auth add`](docs\u002Fcommands\u002Fgog-auth-add.md),\n[`auth doctor`](docs\u002Fcommands\u002Fgog-auth-doctor.md),\n[`auth service-account`](docs\u002Fcommands\u002Fgog-auth-service-account.md).\n\n### OAuth clients\n\nStore a Desktop OAuth client once:\n\n```bash\ngog auth credentials ~\u002FDownloads\u002Fclient_secret_....json\ngog auth add you@gmail.com --services gmail,calendar,drive\n```\n\nUse named clients when different accounts should use different Cloud projects:\n\n```bash\ngog --client work auth credentials ~\u002FDownloads\u002Fwork-client.json\ngog --client work auth add you@company.com\ngog auth credentials list\n```\n\nSee [docs\u002Fauth-clients.md](docs\u002Fauth-clients.md) for client selection rules,\ndomain mapping, remote OAuth, direct access tokens, ADC, and service accounts.\n\n### Account selection\n\n```bash\ngog auth list --check\ngog auth alias set work you@company.com\n\ngog --account work gmail search 'is:unread'\nexport GOG_ACCOUNT=you@gmail.com\ngog calendar events --today\n```\n\n### Keyring backends\n\nBy default `gog` uses the best OS keyring available. For headless or container\nruns, use the encrypted file backend and inject `GOG_KEYRING_PASSWORD` from the\ncurrent shell or secret store.\n\n```bash\ngog auth keyring\ngog auth keyring file\nGOG_KEYRING_BACKEND=file GOG_KEYRING_PASSWORD=... gog auth list --check\n```\n\nFor systemd services, gateways, and coding agents, set the same variables on\nthe service or agent process itself. A successful shell check does not mean the\nagent subprocess inherited `GOG_KEYRING_PASSWORD`; verify through the actual\nagent entrypoint with `gog auth doctor --check --no-input`.\n\nNever commit OAuth client JSON files, refresh tokens, service-account keys, or\nfile-keyring passwords.\n\n### Workspace service accounts\n\nWorkspace admins can configure domain-wide delegation and then store a\nservice-account key for the user to impersonate:\n\n```bash\ngog auth service-account set user@company.com --key ~\u002FDownloads\u002Fservice-account.json\ngog --account user@company.com auth status\n```\n\nService accounts are mainly useful for Workspace Admin, Groups, Keep, and\ndomain-wide automation. They do not replace normal OAuth for consumer Gmail\naccounts.\n\n## Services\n\nDocs: [Command index](docs\u002Fcommands\u002FREADME.md),\n[Workspace Admin](docs\u002Fworkspace-admin.md),\n[`gog auth services`](docs\u002Fcommands\u002Fgog-auth-services.md).\n\nCommon user services:\n\n- Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Meet, Zoom, Apps Script\n- Analytics and Search Console\n- Contacts, People, Tasks, Classroom\n- Chat for Workspace accounts\n- Backup and local utility commands\n\nWorkspace\u002Fadmin services:\n\n- Admin Directory\n- Cloud Identity Groups\n- Keep with domain-wide delegation\n\nAdmin Directory includes Workspace user creation from the CLI:\n\n```bash\ngog --account admin@example.com admin users create ada@example.com \\\n  --first-name Ada \\\n  --last-name Lovelace \\\n  --password 'TempPass123!' \\\n  --change-password \\\n  --ou \u002FEngineering\n```\n\nOmit `--password` to generate a temporary password. See\n[docs\u002Fworkspace-admin.md](docs\u002Fworkspace-admin.md) for service-account setup,\nuser cleanup, recovery fields, organizational units, and group examples.\n\nWorkspace organizational units are covered too:\n\n```bash\ngog --account admin@example.com admin orgunits list --type all\ngog --account admin@example.com admin orgunits create Engineering --parent \u002F\n```\n\nGenerated service scope table:\n\n\u003C!-- auth-services:start -->\n| Service | User | APIs | Scopes | Notes |\n| --- | --- | --- | --- | --- |\n| gmail | yes | Gmail API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fgmail.modify`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fgmail.settings.basic`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fgmail.settings.sharing` |  |\n| calendar | yes | Calendar API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcalendar` |  |\n| chat | yes | Chat API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fchat.spaces`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fchat.messages`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fchat.memberships`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fchat.users.readstate.readonly`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fchat.messages.reactions.create`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fchat.messages.reactions.readonly` |  |\n| classroom | yes | Classroom API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.courses`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.rosters`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.coursework.students`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.coursework.me`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.courseworkmaterials`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.announcements`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.topics`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.guardianlinks.students`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.profile.emails`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fclassroom.profile.photos` |  |\n| drive | yes | Drive API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive` |  |\n| driveactivity | yes | Drive Activity API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive.activity.readonly` | Read-only audit\u002Factivity scope; authorize with --services driveactivity |\n| drivelabels | yes | Drive Labels API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive.labels.readonly` | Read-only Drive label schema; authorize with --services drivelabels |\n| docs | yes | Docs API, Drive API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdocuments` | Export\u002Fcopy\u002Fcreate via Drive |\n| slides | yes | Slides API, Drive API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fpresentations` | Create\u002Fedit presentations |\n| contacts | yes | People API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcontacts`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcontacts.other.readonly`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdirectory.readonly` | Contacts + other contacts + directory |\n| tasks | yes | Tasks API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Ftasks` |  |\n| sheets | yes | Sheets API, Drive API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fspreadsheets` | Export via Drive |\n| people | yes | People API | `profile` | OIDC profile scope |\n| forms | yes | Forms API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fforms.body`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fforms.responses.readonly` |  |\n| sites | yes | Drive API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fdrive` | New Google Sites are exposed as Drive files |\n| meet | yes | Meet REST API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fmeetings.space.created`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fmeetings.space.readonly`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fmeetings.space.settings` |  |\n| appscript | yes | Apps Script API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fscript.projects`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fscript.deployments`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fscript.processes` |  |\n| analytics | yes | Analytics Admin API, Analytics Data API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fanalytics.readonly` | GA4 account summaries + reporting |\n| searchconsole | yes | Search Console API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fwebmasters` | Search Analytics + sitemap management |\n| ads | yes | Google Ads API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fadwords` | OAuth scope only |\n| groups | no | Cloud Identity API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcloud-identity.groups.readonly` | Workspace only |\n| keep | no | Keep API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fkeep` | Workspace only; service account (domain-wide delegation) |\n| admin | no | Admin SDK Directory API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fadmin.directory.user`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fadmin.directory.group`\u003Cbr>`https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fadmin.directory.group.member` | Workspace only; service account with domain-wide delegation required |\n| youtube | yes | YouTube Data API v3 | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fyoutube.readonly` | Most read operations also work with API key only (config youtube_api_key or GOG_YOUTUBE_API_KEY) |\n| photos | yes | Photos Library API | `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fphotoslibrary.readonly.appcreateddata` | Read-only app-created media only after Google Photos Library API scope changes |\n\u003C!-- auth-services:end -->\n\nRegenerate the table with:\n\n```bash\ngo run scripts\u002Fgen-auth-services-md.go\n```\n\n## Documentation\n\n- [Overview](docs\u002Findex.md) — rendered at \u003Chttps:\u002F\u002Fgogcli.sh\u002F>\n- [Install](docs\u002Finstall.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Finstall.html>\n- [Quickstart](docs\u002Fquickstart.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Fquickstart.html>\n- [Command index](docs\u002Fcommands\u002FREADME.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Fcommands\u002F>\n- [Gmail workflows](docs\u002Fgmail-workflows.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Fgmail-workflows.html>\n- [Gmail watch](docs\u002Fwatch.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Fwatch.html>\n- [Drive audits](docs\u002Fdrive-audits.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Fdrive-audits.html>\n- [Docs editing](docs\u002Fdocs-editing.md) — \u003Chttps:\u002F\u002Fgogcli.sh\u002Fdocs-editing.html>\n- [Sheets tables](docs\u002Fsheets-tables.md) and [Sheets formatting](docs\u002Fsheets-formatting.md)\n- [Safety profiles](docs\u002Fsafety-profiles.md) — command guards and baked safe binaries\n- [Auth clients](docs\u002Fauth-clients.md) — OAuth clients, account mapping, and service accounts\n- [Workspace Admin](docs\u002Fworkspace-admin.md) — Workspace user, org unit, and group administration\n- [Backup](docs\u002Fbackup.md) — encrypted Google account backups\n- [CHANGELOG.md](CHANGELOG.md): release notes\n\nEvery command also has help built in:\n\n```bash\ngog --help\ngog gmail --help\ngog drive inventory --help\ngog schema --json\n```\n\n## Development\n\n```bash\nmake tools\nmake build\nmake fmt\nmake lint\nmake test\nmake ci\n```\n\nGenerated command docs:\n\n```bash\nmake docs-commands\nmake docs-site\nopen dist\u002Fdocs-site\u002Findex.html\n```\n\nLive Google API smoke tests are opt-in:\n\n```bash\nscripts\u002Flive-test.sh --fast --account you@gmail.com\nGOG_IT_ACCOUNT=you@gmail.com go test -tags=integration .\u002Finternal\u002Fintegration\n```\n\nSee [docs\u002FRELEASING.md](docs\u002FRELEASING.md) for the release checklist.\n\n## Credits\n\nInspired by Mario Zechner's original Google CLIs:\n\n- [gmcli](https:\u002F\u002Fgithub.com\u002Fbadlogic\u002Fgmcli)\n- [gccli](https:\u002F\u002Fgithub.com\u002Fbadlogic\u002Fgccli)\n- [gdcli](https:\u002F\u002Fgithub.com\u002Fbadlogic\u002Fgdcli)\n\n## License\n\nMIT\n","gogcli 是一个面向终端的 Google Workspace 命令行工具，支持 Gmail、日历、Drive 等多种 Google 服务。它以 Go 语言编写，具备友好的脚本支持特性，如可预测的 JSON 和纯文本输出格式，以及对多 Google 账户和 OAuth 客户端的支持。此外，gogcli 提供了安全机制，比如命令白名单\u002F黑名单及只读审计报告功能，确保敏感操作的安全性。此工具适用于需要通过自动化脚本或持续集成环境来管理 Google 服务的各种场景，包括但不限于个人生产力提升、企业级应用开发与运维等。",2,"2026-06-11 03:44:25","high_star"]