@todoforai/google-api
v0.1.0
Published
Raw Discovery-driven CLIs for Google APIs not covered by gws: YouTube (Data/Analytics/Reporting) and Search Console
Readme
google-api — youtube-api + search-console-api
Raw JSON CLIs for the Google APIs that gws (Google Workspace CLI) does not expose: YouTube Data v3,
YouTube Analytics v2, YouTube Reporting v1 and Search Console v1. Independent, not an official Google CLI.
Zero dependencies (Node >= 20, plain fetch).
Commands are generated at runtime from Google's Discovery documents (cached 24h in ~/.cache/<bin>), so every
resource/method/param of those APIs works with the API's own names:
youtube-api <resource> <method> --params '<query/path JSON>' --json '<body JSON>' [--upload FILE] [--output FILE] [--all]
youtube-api analytics reports query --params '{"ids":"channel==MINE","startDate":"2026-09-01","endDate":"2026-09-30","metrics":"views"}'
search-console-api searchanalytics query --params '{"siteUrl":"sc-domain:example.com"}' --json '{"startDate":"…","endDate":"…","dimensions":["query"]}'
youtube-api videos --help # methods; `videos insert --help` → params, scopes, upload limits
youtube-api api GET youtube/v3/channels --params '{"part":"id","mine":true}' # raw, *.googleapis.com onlyAuth
OAuth 2.0 user token (no API keys for private data). Any of:
<bin> auth login --client-secret client_secret.json— loopback + PKCE (localhost:8642YouTube,:8643Search Console) with a Desktop app OAuth client whose project has the API enabled. Saves a refresh token.<token | authorized_user JSON> | <bin> auth --token-stdin— e.g. a token minted by a server-side OAuth broker.YOUTUBE_ACCESS_TOKEN/SEARCH_CONSOLE_ACCESS_TOKENenv.
Credentials: ~/.config/<bin>/credentials.json (0600). whoami = tokeninfo + channels / sites.
Default scopes: youtube.force-ssl yt-analytics.readonly and webmasters; override with --scopes.
Dev
bun test && bun run test:node # mocked fetch + built-bin smoke under node