Skip to content

feat(youtube): YouTube Data API connector on the shared Google OAuth#90

Open
drewstone wants to merge 1 commit into
developfrom
feat/youtube-data-connector
Open

feat(youtube): YouTube Data API connector on the shared Google OAuth#90
drewstone wants to merge 1 commit into
developfrom
feat/youtube-data-connector

Conversation

@drewstone

Copy link
Copy Markdown
Contributor

What

A read-only YouTube connector (youtube.readonly) riding the existing Google OAuth client (GOOGLE_OAUTH_CLIENT_ID/_SECRET) — no separate API key, no new external dependency. Mirrors the other read-only Google adapters (search-console, analytics).

Capabilities:

  • channels.resolve@handle / username / id → channel id + snippet + statistics + uploads-playlist id
  • channels.recentUploads — recent uploads from the uploads playlist (cheap, 1 quota unit vs search.list's 100)
  • videos.list — batch public metadata (title, description, duration, view/like/comment counts) for up to 50 ids
  • captions.list — caption-track availability only

Scope boundary (deliberate)

Transcript bodies are out of scope: captions.download is owner-only on the Data API, so third-party transcripts come from the executing agent's own timed-text tooling (yt-dlp), not this connector. captions.list lets a caller check availability first.

Why

Powers the creative-agent channel-study mission: channel listing + metadata flow through the hub via the user's connected Google account (per-user attribution, no platform key), while the sandbox agent handles transcripts.

To go live (platform side, not this PR)

  1. Add youtube.readonly to the platform's Google OAuth consent screen.
  2. Redeploy the platform with this agent-integrations version (the hub serves the catalog).

Validation

  • pnpm build — clean (connector in dist)
  • npx tsc --noEmit — clean
  • npx vitest run — 4053/0 (registry + catalog + connector validation)

🤖 Generated with Claude Code

Read-only YouTube connector (youtube.readonly) riding the existing Google OAuth
client — no separate API key. Capabilities: channels.resolve (@handle/username/id
→ id + stats + uploads playlist), channels.recentUploads, videos.list (batch
metadata), captions.list (availability only).

Transcript bodies are deliberately out of scope: captions.download is owner-only
on the Data API, so third-party transcripts come from the executing agent's own
timed-text tooling, not this connector. captions.list lets a caller check
availability first.

Powers the creative-agent channel-study mission: channel listing + metadata
through the hub via the user's connected Google account (per-user, no platform
key), with the agent's sandbox tooling for transcripts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant