ClawLink

How to connect YouTube to Hermes Agent

Connect YouTube to Hermes Agent with ClawLink: no Google Cloud project, no OAuth consent screen to publish, no API key in a config file. 47 YouTube tools your agent calls from chat.

Get started for free
Hermes Agent
Hermes Agent
ClawLink
ClawLink
YouTube
YouTube
YouTubeOAUTH2MCP

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

47 tools

Most guides for giving Hermes Agent YouTube access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical YouTube setup: pair once in the browser and your always-on Hermes agent can act on YouTube for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.

Copy this prompt into Hermes to install the plugin and pair your account.

Prompt for Hermes
Set up ClawLink for Hermes and tell me when it's ready.

1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable

2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin

3. I'll approve it in my browser, then reply "approved".

4. When I say approved, finish setup:
hermes clawlink finish

5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.

Setup

It takes three steps to connect Hermes to YouTube.

  1. 1

    Install and pair

    Install the ClawLink plugin, then pair Hermes with a one-time browser approval:

    hermes plugins install ClawLink-HQ/hermes-plugin --enable
  2. 2

    Connect YouTube

    One-click OAuth in the dashboard.

  3. 3

    Use it from chat

    Ask Hermes Agent: "What can you do with YouTube?"

Install by command

The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:

hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin    # prints an approval link — open it and approve
hermes clawlink finish   # after approving in the browser
hermes clawlink test

Then connect YouTube in the ClawLink dashboard — a one-click OAuth approval, no API keys.

Verify the connection by asking Hermes:

Use youtube_search_you_tube once for "Hermes agent tutorial" with maxResults 20, then take the returned video ids and call youtube_get_video_details_batch on them. Give me a table of title, channel, view count, and publish date, sorted by views. Do not run more than one search.

Using a different agent?

The Hermes 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 Hermes

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

The standard YouTube Data API walkthrough has you create a Google Cloud project, enable YouTube Data API v3, build an OAuth consent screen, and then get told your app is in testing mode and your token expires in a week. That is the friction, and it has nothing to do with YouTube itself. ClawLink connects through Google's hosted consent flow using an app that is already registered and verified, so you sign in, pick the channel, and Hermes can call the 47 tools below. You do not open Google Cloud Console, you do not publish a consent screen, and there is no client secret to keep anywhere.

What the Hermes Agent YouTube integration can do

47 YouTube tools are ready for Hermes Agent 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 Hermes

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 Hermes can do and copy a ready-to-use prompt.

Example prompts

Use youtube_search_you_tube once for "Hermes agent tutorial" with maxResults 20, then take the returned video ids and call youtube_get_video_details_batch on them. Give me a table of title, channel, view count, and publish date, sorted by views. Do not run more than one search.

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

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

Upload the file at ~/videos/release-2-14.mp4 with youtube_upload_video. Set the title to "Release 2.14 walkthrough", write a description from the changelog I paste next, and set privacy to private. Give me the video id when it is done; I will publish it myself.

How the YouTube tools behave

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

  • Search is the expensive call and it 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 tool that spends it. Everything else, including youtube_list_channel_videos and youtube_get_video_details_batch, draws on the shared pool instead.
  • Batch reads exist and most prompts ignore them. youtube_get_video_details_batch takes many video ids in one call. An agent that loops one video at a time is spending call budget it did not need to spend.
  • youtube_get_channel_id_by_handle resolves an @handle to a channel id. Channel ids look like 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 permissions or not-found error on a healthy connection.
  • Two upload tools, different shapes. youtube_upload_video and youtube_multipart_upload_video both write to your channel. Both count against the documented 100 videos.insert calls a day, and both publish according to whatever privacy value the prompt sets, so say private explicitly if you want review before the world sees it.
  • Comment moderation is a distinct tool. youtube_set_comment_moderation_status holds, publishes, or rejects comments, and it is separate from youtube_delete_comment. Asking the agent to "clean up the comments" without naming one of them leaves the choice to the model.
  • Captions are read and write. youtube_list_caption_track, youtube_load_captions, and youtube_update_caption cover the caption workflow, which is the least-known part of the toolset and the easiest win for an agent that already has a transcript.

The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. 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 Hermes Agent 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

Hermes paired but still can't use YouTube

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.

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 403 "insufficientPermissions" or "Request had insufficient authentication scopes"

On a self-built integration this means your OAuth client did not request the right scope, and the fix is a console trip. On a hosted connection it usually means something else. The first cause is a partial approval: Google's consent screen lets you untick individual permissions, and unticking one leaves the connection active but unable to do that class of action, so reads work and writes fail. Reconnect and accept the full set. The second is channel scope, which is the Brand Account case: the grant is attached to the channel you chose at sign-in, so acting on a different channel returns a permissions error rather than an empty result. Ask the agent to run youtube_get_channel_statistics and read back which channel it sees before you change anything else.

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 returns "quotaExceeded" or "The request cannot be completed because you have exceeded your quota"

Reconnecting does nothing for this one, and neither does waiting a few minutes. Google's quota resets at midnight Pacific Time, and per its current documentation a project gets 100 search.list calls, 100 videos.insert calls, and 10,000 units a day for the remaining endpoints. Searching burns its own counter fastest: an agent asked an open question will often search several times to refine, and 100 searches disappear quickly. The fix is to change the shape of the request rather than to retry it. Search once, keep the video ids, then use youtube_get_video_details_batch, which pulls many videos in one call, and youtube_list_channel_videos, which enumerates a channel without touching the search allocation at all. Note that Google's older published quota table, which charged 100 units per search and 1,600 per upload, is still what most guides and AI answers repeat; the numbers here are from Google's current getting-started page.

Ask the agent to diagnose it:

Tell me 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.
A YouTube tool returns "tool not found" or the agent asks for a youtube_youtube_ prefixed tool

Tool schemas load on demand, so the first YouTube call in a new session can arrive before the catalog does. Retry once and it normally resolves. If the same name fails a second time, the name is wrong rather than missing, and the error lists the closest real tools. The doubled prefix shape is the common invention: the tools are named youtube_search_you_tube and youtube_list_channel_videos, with the integration prefix already included, so an agent adding another one produces a name that has never existed. This is a different failure from the one most search results describe, which is a local MCP server missing from claude_desktop_config.json; there is no local server here and no config file to edit.

Ask the agent to diagnose it:

List the YouTube tools you actually have access to. Then tell me which one searches YouTube and use that exact name.
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 Hermes Agent YouTube integration?

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

How do I connect YouTube to Hermes with ClawLink?

Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect YouTube in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.

How long does it take to connect YouTube to Hermes Agent?

About two minutes. Sign in, click Connect next to YouTube in the dashboard, authenticate, and Hermes Agent 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 Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want YouTube working from chat.

Do I need my own Google Cloud project to connect YouTube to Hermes?

No. That requirement comes from building the integration yourself: enable YouTube Data API v3 in a project you own, configure an OAuth consent screen, and handle the verification process before anyone outside your test list can use it. ClawLink's connection runs through an already-registered app, so the only thing you do is approve access to your channel on Google's own consent screen. This also removes the trap that catches most DIY attempts, where an app left in testing mode issues refresh tokens that stop working after seven days.

Whose YouTube API quota does the agent use?

Google allocates quota per project, and 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 everything else. Because the connection runs through a shared app rather than a project you own, you are not managing that allocation and you cannot raise it from your side. In practice the limit people meet first is the search call count, not the unit pool, since searching is capped at 100 calls a day on its own counter. If your agent does heavy discovery work, ask it to search once and then work from the returned video ids with youtube_get_video_details_batch instead of searching repeatedly.

Can the agent upload a video to my channel?

Yes, through youtube_upload_video or youtube_multipart_upload_video, and this is the one action worth being deliberate about. An upload writes to your public channel, so decide up front whether you want the agent to publish or to leave the video private for review, and say which in the prompt. Uploading also runs against the videos.insert call allocation, which Google documents as 100 calls a day.

Does this work with a Brand Account channel?

Yes, but you have to pick the channel during the Google sign-in rather than after. A Google login that manages several channels will present a channel chooser, and the grant attaches to whichever one you select. If the agent later reports that your videos do not exist, it is almost always connected to your personal channel instead of the Brand Account. Reconnect from the dashboard and choose the right channel on that screen.

Hermes paired but still can't use YouTube

Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.