Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
![GitHub Repo Banner](https://ghrb.waren.build/banner?header=gogcli%F0%9F%A7%AD&subheader=Google+in+your+terminal&bg=f3f4f6&color=1f2937&support=true)
<!-- Created with GitHub Repo Banner by Waren Gonzaga: https://ghrb.waren.build -->

Fast, script-friendly CLI for Gmail, Calendar, Chat, Classroom, Drive, Docs, Slides, Sheets, Forms, Apps Script, Contacts, Tasks, People, Groups (Workspace), and Keep (Workspace-only). JSON-first output, multiple accounts, and least-privilege auth built in.
Fast, script-friendly CLI for Gmail, Calendar, Chat, Classroom, Drive, Docs, Slides, Sheets, Forms, Apps Script, Contacts, Tasks, People, Search Console, Groups (Workspace), and Keep (Workspace-only). JSON-first output, multiple accounts, and least-privilege auth built in.

## Features

Expand All @@ -20,6 +20,7 @@ Fast, script-friendly CLI for Gmail, Calendar, Chat, Classroom, Drive, Docs, Sli
- **Apps Script** - create/get projects, inspect content, and run functions
- **Docs/Slides** - export to PDF/DOCX/PPTX via Drive (plus create/copy, docs-to-text, and **sedmat** sed-style document editing with Markdown formatting, images, and tables)
- **People** - access profile information
- **Search Console** - list verified properties, run Search Analytics queries, and manage sitemaps
- **Keep (Workspace only)** - list/get/search notes and download attachments (service account + domain-wide delegation)
- **Groups** - list groups you belong to, view group members (Google Workspace)
- **Local time** - quick local/UTC time display for scripts and agents
Expand Down Expand Up @@ -86,6 +87,7 @@ Before adding an account, create OAuth2 credentials from Google Cloud Console:
- Google Sheets API: https://console.cloud.google.com/apis/api/sheets.googleapis.com
- Google Forms API: https://console.cloud.google.com/apis/api/forms.googleapis.com
- Apps Script API: https://console.cloud.google.com/apis/api/script.googleapis.com
- Search Console API: https://console.cloud.google.com/apis/api/searchconsole.googleapis.com
- Cloud Identity API (Groups): https://console.cloud.google.com/apis/api/cloudidentity.googleapis.com
3. Configure OAuth consent screen: https://console.cloud.google.com/auth/branding
4. If your app is in "Testing", add test users: https://console.cloud.google.com/auth/audience
Expand Down Expand Up @@ -148,6 +150,14 @@ export GOG_ACCOUNT=you@gmail.com
gog gmail labels list
```

### 5. Search Console quick test

```bash
gog auth add you@gmail.com --services searchconsole --readonly
gog searchconsole sites list
gog searchconsole searchanalytics query sc-domain:example.com --start 2026-02-01 --end 2026-02-29 --dimensions query,page --limit 100 --json
```

## Authentication & Secrets

### Accounts and tokens
Expand Down
53 changes: 27 additions & 26 deletions internal/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const (

type RootFlags struct {
Color string `help:"Color output: auto|always|never" default:"${color}"`
Account string `help:"Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript)" aliases:"acct" short:"a"`
Account string `help:"Account email for API commands (gmail/calendar/chat/classroom/drive/docs/slides/contacts/tasks/people/sheets/forms/appscript/searchconsole)" aliases:"acct" short:"a"`
Client string `help:"OAuth client name (selects stored credentials + token bucket)" default:"${client}"`
EnableCommands string `help:"Comma-separated list of enabled top-level commands (restricts CLI)" default:"${enabled_commands}"`
JSON bool `help:"Output JSON to stdout (best for scripting)" default:"${json}" aliases:"machine" short:"j"`
Expand Down Expand Up @@ -60,30 +60,31 @@ type CLI struct {
Me PeopleMeCmd `cmd:"" name:"me" help:"Show your profile (alias for 'people me')"`
Whoami PeopleMeCmd `cmd:"" name:"whoami" aliases:"who-am-i" help:"Show your profile (alias for 'people me')"`

Auth AuthCmd `cmd:"" help:"Auth and credentials"`
Groups GroupsCmd `cmd:"" aliases:"group" help:"Google Groups"`
Drive DriveCmd `cmd:"" aliases:"drv" help:"Google Drive"`
Docs DocsCmd `cmd:"" aliases:"doc" help:"Google Docs (export via Drive)"`
Slides SlidesCmd `cmd:"" aliases:"slide" help:"Google Slides"`
Calendar CalendarCmd `cmd:"" aliases:"cal" help:"Google Calendar"`
Classroom ClassroomCmd `cmd:"" aliases:"class" help:"Google Classroom"`
Time TimeCmd `cmd:"" help:"Local time utilities"`
Gmail GmailCmd `cmd:"" aliases:"mail,email" help:"Gmail"`
Chat ChatCmd `cmd:"" help:"Google Chat"`
Contacts ContactsCmd `cmd:"" aliases:"contact" help:"Google Contacts"`
Tasks TasksCmd `cmd:"" aliases:"task" help:"Google Tasks"`
People PeopleCmd `cmd:"" aliases:"person" help:"Google People"`
Keep KeepCmd `cmd:"" help:"Google Keep (Workspace only)"`
Sheets SheetsCmd `cmd:"" aliases:"sheet" help:"Google Sheets"`
Forms FormsCmd `cmd:"" aliases:"form" help:"Google Forms"`
AppScript AppScriptCmd `cmd:"" name:"appscript" aliases:"script,apps-script" help:"Google Apps Script"`
Config ConfigCmd `cmd:"" help:"Manage configuration"`
ExitCodes AgentExitCodesCmd `cmd:"" name:"exit-codes" aliases:"exitcodes" help:"Print stable exit codes (alias for 'agent exit-codes')"`
Agent AgentCmd `cmd:"" help:"Agent-friendly helpers"`
Schema SchemaCmd `cmd:"" help:"Machine-readable command/flag schema" aliases:"help-json,helpjson"`
VersionCmd VersionCmd `cmd:"" name:"version" help:"Print version"`
Completion CompletionCmd `cmd:"" help:"Generate shell completion scripts"`
Complete CompletionInternalCmd `cmd:"" name:"__complete" hidden:"" help:"Internal completion helper"`
Auth AuthCmd `cmd:"" help:"Auth and credentials"`
Groups GroupsCmd `cmd:"" aliases:"group" help:"Google Groups"`
Drive DriveCmd `cmd:"" aliases:"drv" help:"Google Drive"`
Docs DocsCmd `cmd:"" aliases:"doc" help:"Google Docs (export via Drive)"`
Slides SlidesCmd `cmd:"" aliases:"slide" help:"Google Slides"`
Calendar CalendarCmd `cmd:"" aliases:"cal" help:"Google Calendar"`
Classroom ClassroomCmd `cmd:"" aliases:"class" help:"Google Classroom"`
Time TimeCmd `cmd:"" help:"Local time utilities"`
Gmail GmailCmd `cmd:"" aliases:"mail,email" help:"Gmail"`
Chat ChatCmd `cmd:"" help:"Google Chat"`
Contacts ContactsCmd `cmd:"" aliases:"contact" help:"Google Contacts"`
Tasks TasksCmd `cmd:"" aliases:"task" help:"Google Tasks"`
People PeopleCmd `cmd:"" aliases:"person" help:"Google People"`
Keep KeepCmd `cmd:"" help:"Google Keep (Workspace only)"`
Sheets SheetsCmd `cmd:"" aliases:"sheet" help:"Google Sheets"`
Forms FormsCmd `cmd:"" aliases:"form" help:"Google Forms"`
AppScript AppScriptCmd `cmd:"" name:"appscript" aliases:"script,apps-script" help:"Google Apps Script"`
SearchConsole SearchConsoleCmd `cmd:"" name:"searchconsole" aliases:"gsc,webmasters" help:"Google Search Console"`
Config ConfigCmd `cmd:"" help:"Manage configuration"`
ExitCodes AgentExitCodesCmd `cmd:"" name:"exit-codes" aliases:"exitcodes" help:"Print stable exit codes (alias for 'agent exit-codes')"`
Agent AgentCmd `cmd:"" help:"Agent-friendly helpers"`
Schema SchemaCmd `cmd:"" help:"Machine-readable command/flag schema" aliases:"help-json,helpjson"`
VersionCmd VersionCmd `cmd:"" name:"version" help:"Print version"`
Completion CompletionCmd `cmd:"" help:"Generate shell completion scripts"`
Complete CompletionInternalCmd `cmd:"" name:"__complete" hidden:"" help:"Internal completion helper"`
}

type exitPanic struct{ code int }
Expand Down Expand Up @@ -327,7 +328,7 @@ func newParser(description string) (*kong.Kong, *CLI, error) {
}

func baseDescription() string {
return "Google CLI for Gmail/Calendar/Chat/Classroom/Drive/Contacts/Tasks/Sheets/Docs/Slides/People/Forms/App Script"
return "Google CLI for Gmail/Calendar/Chat/Classroom/Drive/Contacts/Tasks/Sheets/Docs/Slides/People/Forms/App Script/Search Console"
}

func helpDescription() string {
Expand Down
Loading