ClawLink

How to connect YouTube to OpenClaw

Connect YouTube to OpenClaw with ClawLink: no Google Cloud project, no OAuth consent screen to publish, no API key in openclaw.json. 47 YouTube tools your agent can call from chat.

Get started for free
OpenClaw
OpenClaw
ClawLink
ClawLink
YouTube
YouTube
YouTubeOAUTH2MCP

Upload videos and manage channels. Once connected, OpenClaw can read and act on YouTube from chat — pairing, token refresh, and tool wiring handled for you.

47 tools

The usual route to YouTube access for OpenClaw is an MCP server you configure and keep running, plus your own OAuth app or API keys. ClawLink gives OpenClaw a more practical YouTube setup: install one ClawHub skill, connect YouTube in the browser, and OpenClaw can call real YouTube actions from any chat surface with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into OpenClaw, or open the YouTube skill on ClawHub.

Prompt for OpenClaw
Before installing anything, inspect the ClawHub skill metadata and setup requirements.
If the skill asks you to install a third-party package or CLI, verify its source, maintainer, and package contents before running the install command.
Install the skill "YouTube" (hith3sh/youtube-channel) from ClawHub only after those checks pass.
Skill page: https://clawhub.ai/hith3sh/youtube-channel
Keep the work scoped to this skill only.
After install, help me finish setup from verified skill metadata.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Setup

It takes three steps to connect OpenClaw to YouTube.

  1. 1

    Install the plugin

    Paste the setup prompt into OpenClaw, or install from the terminal and ask OpenClaw to pair:

    openclaw plugins install clawhub:clawlink-plugin
  2. 2

    Connect YouTube

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask OpenClaw: "What can you do with YouTube?"

Install by command

The setup prompt above does all of this in one paste. By hand, it is one install command plus a browser approval:

openclaw plugins install clawhub:clawlink-plugin

Then ask OpenClaw to set up ClawLink. It starts browser pairing and prints an approval link — open it, approve the device, return to the chat, and say done. Finally, connect YouTube in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking OpenClaw:

Use youtube_search_you_tube once for "<topic>" with maxResults 25, then call youtube_get_video_details_batch on the returned ids. Give me a table of title, channel, views, and publish date sorted by views. Run exactly one search.

Using a different agent?

The OpenClaw plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:

npx -y @useclawlink/cli login

login opens the same browser approval and stores a credential locally. Once YouTube is connected in the dashboard, that agent calls the same 47 YouTube tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.

YouTube MCP for OpenClaw

Looking for a YouTube MCP server for OpenClaw? ClawLink connects YouTube to OpenClaw and exposes 47 YouTube tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using Hermes instead? The Hermes YouTube integration works the same way.

The usual way to give an agent YouTube is to create a Google Cloud project, enable YouTube Data API v3, build an OAuth consent screen, and then discover your app is stuck in testing mode and its refresh token dies after seven days. None of that is about YouTube. ClawLink connects through Google's own consent screen using an app that is already registered, so you sign in, choose the channel, and OpenClaw can call the 47 tools below. The install is openclaw plugins install clawhub:clawlink-plugin (or openclaw plugins install @useclawlink/openclaw-plugin from npm), then you connect YouTube once in the dashboard and use it from the next message. Search results currently describe a different flow for this page that registers an API key by email and one-time code and writes it into openclaw.json — that is a different project, not this one.

What the OpenClaw YouTube integration can do

47 YouTube tools are ready for OpenClaw once the account is connected. The 30 below are the ones people reach for most; your agent can call all 47.

30 of 47 YouTube tools for OpenClaw

ToolWhat it does
Add video to playlist youtube_add_video_to_playlistAdd a video to a YouTube playlist
Create comment reply youtube_create_comment_replyReply to a YouTube comment
Create playlist youtube_create_playlistCreate a YouTube playlist
Get channel activities youtube_get_channel_activitiesList YouTube channel activities
Get channel statistics youtube_get_channel_statisticsGet YouTube channel statistics
Get video details batch youtube_get_video_details_batchGet YouTube video metadata
List channel videos youtube_list_channel_videosList YouTube videos for a channel
List comment threads2 youtube_list_comment_threads2List YouTube comment threads
List comments youtube_list_commentsList YouTube comments
List user playlists youtube_list_user_playlistsList YouTube playlists
Multipart upload video youtube_multipart_upload_videoUpload a large video to YouTube via multipart
Post comment youtube_post_commentPost a comment on a YouTube video
Rate video youtube_rate_videoRate a YouTube video
Search you tube youtube_search_you_tubeSearch YouTube videos and channels
Subscribe channel youtube_subscribe_channelSubscribe to a YouTube channel
Unsubscribe channel youtube_unsubscribe_channelUnsubscribe from a YouTube channel
Update playlist youtube_update_playlistUpdate a YouTube playlist
Update video youtube_update_videoUpdate YouTube video metadata
Upload video youtube_upload_videoUpload a video to YouTube
Get channel ID by handle youtube_get_channel_id_by_handleRetrieves the YouTube Channel ID for a specific YouTube channel handle
Get video rating youtube_get_video_ratingRetrieves the ratings that the authorized user gave to a list of specified videos
List caption track youtube_list_caption_trackRetrieves a list of caption tracks for a YouTube video
List channel sections youtube_list_channel_sectionsRetrieve channel sections from YouTube
List i18n languages youtube_list_i18n_languagesReturns a list of application languages that the YouTube website supports
List i18n regions youtube_list_i18n_regionsRetrieve a list of content regions that the YouTube website supports
List live chat messages youtube_list_live_chat_messagesList live chat messages for a specific chat
List playlist images youtube_list_playlist_imagesRetrieve playlist images associated with a specific playlist
List playlist items youtube_list_playlist_itemsList videos in a playlist, with pagination support
List super chat events youtube_list_super_chat_eventsLists Super Chat events for a channel, showing supporter purchases during live streams
List user subscriptions youtube_list_user_subscriptionsRetrieves the authenticated user's YouTube channel subscriptions, allowing specification of

Try it: find the YouTube tool you need

Browse the 30 YouTube tools

Click any tool to see exactly what OpenClaw can do and copy a ready-to-use prompt.

Example prompts

Run youtube_get_channel_statistics for my channel, then youtube_list_channel_videos for the last 50 uploads. Tell me which five have the worst view-to-subscriber ratio and what their titles have in common.

Upload ~/videos/<file>.mp4 with youtube_upload_video. Title it "<title>", write the description from the notes I paste next, and set privacy to private. Give me the video id when it finishes — I will publish it myself.

Use youtube_list_comment_threads2 on my newest video, show me the ten most recent comments, and draft a reply to each. Do not post anything until I approve, then use youtube_create_comment_reply.

How the YouTube tools behave

Argument-level facts from the manifest, plus the quota rules that decide whether a prompt succeeds on the first try.

  • Search has its own daily counter. Google documents 100 search.list calls a day, separate from the 10,000-unit pool. youtube_search_you_tube is the only tool that spends it; youtube_list_channel_videos and youtube_get_video_details_batch draw on the shared pool instead, so channel enumeration is effectively free by comparison.
  • Batch reads exist and most prompts ignore them. youtube_get_video_details_batch takes many video ids in one call. An agent looping one video at a time spends budget it did not need to.
  • youtube_get_channel_id_by_handle resolves an @handle to a channel id. Channel ids are UC-prefixed strings and are not guessable, so this is the discovery step before any channel-scoped call. An agent that invents one gets a not-found or permissions error on a perfectly healthy connection.
  • Two upload tools, same consequence. youtube_upload_video and youtube_multipart_upload_video both write to your channel and both count against the documented 100 videos.insert calls a day. Both honour whatever privacy value the prompt sets, so say private explicitly if you want to review before it is public.
  • Tool names already carry the integration prefix. They are youtube_search_you_tube and youtube_list_channel_videos; an agent that adds another prefix produces a youtube_youtube_* name that has never existed. That is a naming error, not a missing tool, and the error lists the closest real names.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want YouTube working from chat.

ManualClawLink
Connection flowRegister a YouTube app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift.Users connect YouTube through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code.
Ongoing maintenanceYou own refresh logic, permission debugging, environment config, and every provider-specific edge case for YouTube.ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure.
Agent usabilityYou still need to expose the right YouTube actions to the runtime in a format your agent can reliably use.47 tools for YouTube are already exposed through ClawLink, so the agent can read and act from chat immediately.

Composio also exposes YouTube to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for OpenClaw users instead. You install the plugin once, connect YouTube in the browser, and the 47 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.

Troubleshooting

OpenClaw installed the YouTube skill but can't call the tools

The ClawHub skill teaches OpenClaw about YouTube, but the calls run through the ClawLink plugin and your connected account. Make sure YouTube is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.

Connection succeeds but no tools appear

Reconnect YouTube from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.

"Tool schema not loaded yet" error when calling YouTube tools

YouTube tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every YouTube call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.

YouTube returns 403 or "permission denied" on one action while others work

Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.

YouTube returns "quotaExceeded" or "The request cannot be completed because you have exceeded your quota"

First, the disambiguation, because search results for this phrase plus OpenClaw mostly return LLM rate-limit posts: this is YouTube Data API quota, not your OpenClaw or model-provider rate limit. A 429 from your model provider stops the agent mid-thought; this error comes back inside a tool result while the agent is otherwise fine. Reconnecting does not help and neither does waiting a few minutes — Google's quota resets at midnight Pacific Time. Per Google's current documentation a project gets 100 search.list calls, 100 videos.insert calls, and 10,000 units a day for the remaining endpoints, and searching burns its own counter fastest. The fix is to change the shape of the work rather than retry it: search once, keep the ids, then use youtube_get_video_details_batch for many videos in one call and youtube_list_channel_videos to enumerate a channel without touching the search allocation. Note that most guides and AI answers still quote Google's older table, which charged 100 units per search and 1,600 per upload; the numbers here are the ones on Google's getting-started page today.

Ask the agent to diagnose it:

List exactly which YouTube tools you called in the last few minutes and how many times each. Do not call any more YouTube tools until I reply.
YouTube returns 403 "insufficientPermissions" or "Request had insufficient authentication scopes"

On a self-built integration this means your own OAuth client asked for the wrong scopes, and search results answer it with a Google Cloud checklist: add youtube.force-ssl, delete cached tokens, publish the app out of testing mode. On a hosted connection those are not your levers and the cause is usually one of two others. The first is a partial approval: Google's consent screen lets you untick individual permissions, which leaves the connection active but unable to do that class of action, so reads succeed and writes fail. Reconnect and accept the full set. The second is channel scope — the grant is bound to the channel you chose at sign-in, so acting on a different channel returns a permissions error rather than an empty list. There is also one thing you genuinely cannot work around: YouTube supports service accounts only for content owners who manage multiple channels, such as record labels and movie studios, so an ordinary channel has no unattended path and must go through a user consent flow.

Ask the agent to diagnose it:

Run youtube_get_channel_statistics and tell me the exact channel title and id you are connected to. Then run youtube_list_channel_videos and report how many videos you can see. Do not retry the failed call yet.
YouTube worked last week and now every call fails with an expired or revoked token

If you built the integration yourself, check the publishing status of your OAuth consent screen before anything else. Google issues a refresh token that expires after seven days to any Cloud project whose external consent screen is still in Testing, unless the only scopes requested are name, email, and profile — which YouTube's are not. That is why a DIY YouTube agent reliably works for a week and then stops, and the fix is to publish the app, not to re-run the auth flow. On a ClawLink connection there is no consent screen of yours to publish, so this failure shape does not apply; a connection that stops working here is a revoked grant instead, and reconnecting from the dashboard restores it.

OAuth finished in the browser but the account is still missing

Try reconnecting YouTube and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.

FAQ

Is there a OpenClaw YouTube integration?

Yes. ClawLink is the fastest way to connect OpenClaw to YouTube: link your YouTube account once in the browser and OpenClaw can call the YouTube API through 47 ready-made tools — no custom code or token handling.

How do I add YouTube to OpenClaw with ClawLink?

Paste the setup prompt from this page into OpenClaw. It installs the ClawLink YouTube skill from ClawHub, then you click Connect in the dashboard to authorize YouTube. OpenClaw calls the tools from the next message — no config files or API keys to manage.

How long does it take to connect YouTube to OpenClaw?

About two minutes. Sign in, click Connect next to YouTube in the dashboard, authenticate, and OpenClaw can use it from the next chat message.

Why use ClawLink instead of wiring YouTube up myself?

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for OpenClaw. That is fine if you want to build and maintain the integration yourself. Most teams just want YouTube working from chat.

Can OpenClaw upload to my channel without my own Google Cloud project?

Yes, and that is the main reason to use a hosted connection for this provider. Building it yourself means enabling YouTube Data API v3 in a project you own, configuring an OAuth consent screen, and going through Google's verification before anyone outside your own test list can use it — because YouTube's upload and channel-management scopes are sensitive. ClawLink runs the connection through an app that is already registered and verified, so the only screen you see is Google's consent screen asking whether to grant access to your channel. Uploads then run through youtube_upload_video or youtube_multipart_upload_video like any other tool call.

Does "no API keys" mean OpenClaw does not need a model key either?

No, and this is worth separating because the two get conflated constantly. It means there is no YouTube or Google API key: no key to generate, no client secret, and nothing added to openclaw.json for this integration. Whatever you already use to run OpenClaw itself — a hosted model provider or a local one — is unchanged by connecting YouTube. The two credentials are unrelated, and so are their limits: OpenClaw's own rate limits and your YouTube Data API quota are separate systems that fail in different ways.

Whose YouTube quota does the agent spend?

Google allocates quota per project. Per Google's current documentation, a project that enables the YouTube Data API gets 100 search.list calls, 100 videos.insert calls, and 10,000 units a day for every other endpoint. Because the connection runs through a shared registered app rather than a project you own, you are not administering that allocation and cannot raise it from your side. In practice the ceiling people hit first is the search call count, since it has its own counter — an agent refining an open-ended question will search several times per answer. Ask it to search once and then work from the returned ids with youtube_get_video_details_batch.

Does this work with a Brand Account channel?

Yes, but the channel is chosen during the Google sign-in, not afterwards. If your Google login manages more than one channel, Google shows a channel chooser and the grant attaches to whichever one you pick. The symptom of picking wrong is that the agent reports your videos do not exist while the connection itself looks healthy — it is reading a different channel. Reconnect from the dashboard and select the Brand Account on that screen.

OpenClaw installed the YouTube skill but can't call the tools

The ClawHub skill teaches OpenClaw about YouTube, but the calls run through the ClawLink plugin and your connected account. Make sure YouTube is connected in the dashboard, then start a fresh chat so OpenClaw reloads the tool catalog. If OpenClaw runs as a persistent gateway, restart it so the new tools register.