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.


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.
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.
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.
1Install and pair
Install the ClawLink plugin, then pair Hermes with a one-time browser approval:
hermes plugins install ClawLink-HQ/hermes-plugin --enable- 2
Connect YouTube
One-click OAuth in the dashboard.
- 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 testThen 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 loginlogin 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
| Tool | What it does |
|---|---|
Add video to playlist youtube_add_video_to_playlist | Add a video to a YouTube playlist |
Create comment reply youtube_create_comment_reply | Reply to a YouTube comment |
Create playlist youtube_create_playlist | Create a YouTube playlist |
Get channel activities youtube_get_channel_activities | List YouTube channel activities |
Get channel statistics youtube_get_channel_statistics | Get YouTube channel statistics |
Get video details batch youtube_get_video_details_batch | Get YouTube video metadata |
List channel videos youtube_list_channel_videos | List YouTube videos for a channel |
List comment threads2 youtube_list_comment_threads2 | List YouTube comment threads |
List comments youtube_list_comments | List YouTube comments |
List user playlists youtube_list_user_playlists | List YouTube playlists |
Multipart upload video youtube_multipart_upload_video | Upload a large video to YouTube via multipart |
Post comment youtube_post_comment | Post a comment on a YouTube video |
Rate video youtube_rate_video | Rate a YouTube video |
Search you tube youtube_search_you_tube | Search YouTube videos and channels |
Subscribe channel youtube_subscribe_channel | Subscribe to a YouTube channel |
Unsubscribe channel youtube_unsubscribe_channel | Unsubscribe from a YouTube channel |
Update playlist youtube_update_playlist | Update a YouTube playlist |
Update video youtube_update_video | Update YouTube video metadata |
Upload video youtube_upload_video | Upload a video to YouTube |
Get channel ID by handle youtube_get_channel_id_by_handle | Retrieves the YouTube Channel ID for a specific YouTube channel handle |
Get video rating youtube_get_video_rating | Retrieves the ratings that the authorized user gave to a list of specified videos |
List caption track youtube_list_caption_track | Retrieves a list of caption tracks for a YouTube video |
List channel sections youtube_list_channel_sections | Retrieve channel sections from YouTube |
List i18n languages youtube_list_i18n_languages | Returns a list of application languages that the YouTube website supports |
List i18n regions youtube_list_i18n_regions | Retrieve a list of content regions that the YouTube website supports |
List live chat messages youtube_list_live_chat_messages | List live chat messages for a specific chat |
List playlist images youtube_list_playlist_images | Retrieve playlist images associated with a specific playlist |
List playlist items youtube_list_playlist_items | List videos in a playlist, with pagination support |
List super chat events youtube_list_super_chat_events | Lists Super Chat events for a channel, showing supporter purchases during live streams |
List user subscriptions youtube_list_user_subscriptions | Retrieves 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.listcalls a day, separate from the 10,000-unit pool.youtube_search_you_tubeis the tool that spends it. Everything else, includingyoutube_list_channel_videosandyoutube_get_video_details_batch, draws on the shared pool instead. - Batch reads exist and most prompts ignore them.
youtube_get_video_details_batchtakes 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_handleresolves 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_videoandyoutube_multipart_upload_videoboth write to your channel. Both count against the documented 100videos.insertcalls a day, and both publish according to whatever privacy value the prompt sets, so sayprivateexplicitly if you want review before the world sees it. - Comment moderation is a distinct tool.
youtube_set_comment_moderation_statusholds, publishes, or rejects comments, and it is separate fromyoutube_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, andyoutube_update_captioncover the caption workflow, which is the least-known part of the toolset and the easiest win for an agent that already has a transcript.
ClawLink vs. building it yourself
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.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register 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 maintenance | You 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 usability | You 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. |
ClawLink vs. Composio
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.