Connect Claude or ChatGPT to YouTube: upload videos and Shorts through MCP
Connect Claude, ChatGPT or Cursor to YouTube through Mellow Hub’s MCP server: the channel you need, upload rules, prompts and fixes for videos and Shorts.
By Mellow · UpdatedCan Claude or ChatGPT upload a video to YouTube?
Yes, through Mellow Hub’s remote MCP server at https://www.mellow.world/mcp. It uses Streamable HTTP, and a client signs in with OAuth 2.1 (dynamic client registration and PKCE) or sends an owner-created Hub API key as a Bearer token. After you connect a YouTube channel and approve the access, the assistant can register a public video URL or request a signed upload URL, check a post of one video and a title with validate_post, publish or schedule it with create_post, and read the YouTube result and link with get_post. You need a YouTube channel, and you connect it yourself: an assistant cannot sign in to Google for you.
Status: on September 21, 2026, Mellow’s MCP workflow uploaded, validated and published a private horizontal YouTube test video with a custom cover. Shorts, public videos and connecting through ChatGPT’s or claude.ai’s own connector screens have not been tested with YouTube. What was tested.
What YouTube account do I need?
A Google account with a YouTube channel. Uploads count against the channel's daily API quota. Hub connects the channel through Google’s own sign-in, so the person who manages the channel completes that step.
- Open Accounts in Hub and choose YouTube, or ask the assistant to call
connect_channelwithplatformset toyoutube. That tool only returns a link and an instruction for a person. It needs thechannels:connectpermission, which Hub’s consent screen ticks whenever the assistant asks for it. - Open the link and sign in to Google yourself.
- Tell the assistant you are done. It calls
list_channelswithrefresh: trueand uses the returned channel ID, which begins withspc_. A channel name or handle is not a substitute for that ID.
Custom covers depend on the channel’s eligibility on YouTube; see YouTube’s thumbnail requirements. A cover never replaces the video: it is attached to the video item.
Connect Claude, ChatGPT, Cursor or another MCP client
Every client uses the same server URL, https://www.mellow.world/mcp. Menus change between client versions, so the official guides linked below describe the current screens. The last column says only what Mellow itself has tested.
| Client | How to add Hub | Tested by Mellow |
|---|---|---|
| Claude | Where custom connectors are available on your plan: Customize → Connectors → Add custom connector, the path we saw on September 9, 2026. Name it Mellow Hub and paste the URL. Claude registers itself, so there is no client secret to copy. Anthropic’s guide. | Hub’s consent and read-only tool calls completed on September 9, 2026, with an Instagram channel. Not yet with a YouTube channel or with publishing permissions. |
| ChatGPT | On the web, where your plan or workspace admin allows custom MCP apps: turn on developer mode, then add an app with the URL and OAuth sign-in. OpenAI’s guide. | Not tested. |
| Claude Code | claude mcp add --transport http mellow https://www.mellow.world/mcp, then sign in when Claude Code asks. | Connected to production on September 20, 2026 with the token of an owner-approved grant for Instagram and Threads, and read the profile and channels. Its own sign-in flow was not part of that test. |
| Cursor | Add Mellow Hub as a remote HTTP MCP server with the URL, then complete sign-in. Cursor’s MCP documentation. | Not tested. |
| Your own client | Streamable HTTP. Start OAuth discovery from the first 401 response, or send a Hub key in the Authorization: Bearer header. | The official MCP Python SDK completed registration, PKCE consent and tool calls in production on September 20, 2026. |
- Add the server in your client and select Connect. Sign in to Mellow if asked. Hub’s consent screen names the app that is asking.
- Choose the permissions the task needs (below), select your YouTube channel, choose review or autopilot, a daily ceiling and an expiry, then approve.
- Back in the client, run the read-only check from the prompts below. Confirm the profile, the mode and the YouTube channel ID. Agents shows the grant’s permissions, channels and expiry, which a client’s summary may leave out.
- If a client cannot complete OAuth, create a key in Agents and set it as the client’s
Authorization: Bearerheader, from its secret settings or an environment variable. Never paste a key into a chat.
Which permissions to approve
| Permission | What it allows |
|---|---|
channels:read | Read the profile, the mode and the channels the grant covers: whoami, list_channels. |
posts:read | Check and preview a post and read results: validate_post, preview_post, get_post, list_posts. |
media:write | Register a public media URL or request a signed upload URL. |
posts:write and posts:publish | Create, schedule or publish a post; both are needed, even in review mode. posts:write also covers cancelling and rescheduling. |
channels:connect | Start a channel connection and return its link for a person. |
metrics:read | Read network-reported metrics for published posts. |
The consent screen arrives with every permission the assistant asked for already ticked, except spending AI credits. Untick anything it should not have; otherwise one tap on Allow is enough.
What you delegate, and how to take it back
Hub treats an assistant’s access as a delegation you give once, with limits. On the OAuth consent screen you choose the permissions, the channels (the ones you select, or explicitly all), review or autopilot, a daily ceiling of 1 to 1,000 posts (50 by default) and an expiry of 1, 7 or 30 days (30 by default). Autopilot is the default: the assistant publishes on its own within those limits. Choose review and each post waits for you. A key or a connected app cannot approve its own post.
An API key is created by you, signed in, in Agents. It belongs to one profile and carries its own mode and daily limit; through the REST key route it can also be limited to channels and given an expiry. A key cannot create another key. Hub records the posts an assistant creates or has refused, approvals, reschedules, cancellations and connection attempts in a journal you read in Agents. Revoking a key or a connected app takes effect on its next request. Publishing always needs an idempotency key, so a retried request cannot publish twice.
YouTube rules Hub checks before anything is sent
This table is generated from the registry that validate_post enforces, the same one behind the rules for every network. These are Hub’s input rules. YouTube still judges the file itself: Hub does not download the video, so duration, size, aspect ratio and processing are YouTube’s to decide.
| Rule | YouTube in Hub |
|---|---|
| Title | Required, up to 100 characters, in options.youtube.title. YouTube refuses an upload without a title. |
| Caption | Up to 5,000 characters. Becomes the video description when no explicit description is given. |
| Media | Exactly 1 video. |
| Placement | None: YouTube has one surface in Hub. |
| Also supported | Scheduling with scheduledAt, a custom cover (thumbnailUrl on the video item), metrics for published posts (get_metrics). |
Shorts and horizontal videos
Exactly one video, including landscape. YouTube classifies eligible square or vertical videos up to three minutes as Shorts; there is no separate Shorts endpoint. Hub has no Shorts setting either. The classification is YouTube’s, under its current Shorts rules, and a 16:9 video stays a regular video. Mellow’s live test used a horizontal video, so how YouTube classifies a vertical upload made through Hub has not been observed yet.
Other YouTube fields are passed on when you set them in options.youtube, among them description, privacyStatus (public, private or unlisted), madeForKids and tags. A field you leave out is not sent, so the publishing provider’s or YouTube’s default applies. Set privacyStatus yourself rather than relying on a default.
Hub recognizes a video by the file extension in its URL. A URL without one is not type-checked, and YouTube decides when it fetches the file.
When validate_post refuses the post
Read ok, issues and notes in the result. The check publishes nothing and reports every problem at once, each with its field and, for a network rule, its channel. Fix them together and validate again.
| Issue code | What it means | What to change |
|---|---|---|
title_required and option_required | No title. Hub reports both codes for the same field, options.youtube.title. | Set the title in options.youtube, or for one channel in perChannel. |
too_long | The title is longer than 100 characters. | Shorten it and move the detail into the description. |
media_kind_unsupported | An image URL was sent to YouTube. | Send a video. Put a cover image in thumbnailUrl on the video item, not in the media list. |
media_required or media_too_many | No video, or more than 1. | Send one video per YouTube post; make separate posts for several videos. |
caption_too_long | The caption, which becomes the description, is over 5,000 characters. | Shorten it, or give the YouTube channel its own caption in perChannel. |
Other refusals concern the request or the grant: schedule_in_past (use a future time with a UTC offset), insufficient_scope (approve a delegation with the missing permission), channel_out_of_scope (the channel is not in the grant), and at creation daily_limit_reached and idempotency_key_reused. A passing check is not proof of publication: YouTube can still refuse the file or the account. The free post checker runs the same input rules on a draft before you connect anything.
Prompts you can paste
Replace the bracketed parts. Each prompt names the tools to call, so the assistant does not have to guess the order.
Check the connection, read-only
Use only Mellow Hub. Call whoami, then list_channels, then list_platforms.
Tell me my YouTube channel ID, whether this connection is in review or
autopilot mode, how many posts it may still create today, and YouTube's
rules. Do not upload, create, schedule or publish anything.Validate a Short, then schedule it for 18:00
Use Mellow Hub. List my YouTube channel and validate this Short before
scheduling it for 18:00 on [date] in [your timezone].
Video: [public https URL ending in .mp4, vertical, up to three minutes]
Title: [title]
Caption (becomes the description): [text]
1. Call register_media on the video URL.
2. Call validate_post for my YouTube channel with options.youtube.title,
options.youtube.privacyStatus "public" and scheduledAt written with an
explicit UTC offset. Fix every issue it reports, then validate again.
3. When ok is true, call create_post once with idempotencyKey
"yt-short-[date]-1800". If it times out, retry with the same key.
4. Call get_post and report the YouTube target's status and link.A horizontal video, private first, with your own cover
Use Mellow Hub. Publish my horizontal video to my YouTube channel as a
private video first, with a custom cover.
Video: [public https URL of the .mp4]
Cover: [public https URL of a 16:9 JPEG]
Title: [title]
Put the cover in thumbnailUrl on the video's media item; do not add it as
a second media item. Set options.youtube.privacyStatus to "private".
Validate first and fix every issue. Then call create_post once with
idempotencyKey "yt-[short-name]-private-1". Call get_post until the
YouTube target is published or failed, and report the link or the error.For a file on your computer, an agent that can make HTTP requests, such as Claude Code or a script of your own, can call request_upload_url, send the bytes with PUT to the returned uploadUrl and use the returned mediaUrl. An assistant that only has Hub’s tools cannot send file bytes itself, so give it a public https URL. Keep that URL reachable until YouTube has the video.
To make the cover, see thumbnails over MCP below and the AI YouTube thumbnail generator. Generating a cover through MCP spends AI credits and needs the separate ai:generate permission, which is not part of the default request.
Thumbnails, banners and avatars over MCP
Since October 24, 2026 the same server makes the picture as well as the post. Creative Studio’s thumbnail engine — the one behind Mellow’s AI YouTube thumbnail generator — is a set of tools an agent calls. The ones that draw spend credits and need the ai:generate and posts:write permissions, a maxCredits cap and an idempotencyKey; a key or app approved since then also carries a daily credit ceiling you choose, and is refused with daily_credit_limit past it. None of them publishes or buys credits.
| Tool | What it does | Credits |
|---|---|---|
studio_thumbnail_ideas | Thumbnail ideas for a topic, each as a ready description | None |
studio_thumbnail | 1 to 3 thumbnails from a description; words in quotation marks are drawn; 16:9, 9:16, 1:1 or 4:5; saved faces, a look or a YouTube link as the style | 10 a version |
studio_thumbnail_remix | A thumbnail the person likes, remade with the creator in it; its logos and other people removed | 10 a version |
studio_thumbnail_edit | One change to a thumbnail, the rest kept; the original stays in its history | 10 |
studio_thumbnail_review | The design review: strength out of 10, six scores, two fixes, three title ideas. Not measured clicks | None |
studio_thumbnail_improve | Makes the latest review’s fixes on the picture | 10 |
studio_banner | A channel banner, exactly 2560 × 1440, name and tagline in the centre band | 15 |
studio_avatar | A channel avatar, 800 × 800, read inside a circle at 48 px | 10 |
studio_import, studio_faces | Bring in a YouTube thumbnail or an uploaded file as a private picture; save the creator’s face (up to 12) | None |
A made picture is a Studio project: poll studio_job, take the file with studio_export and put it in thumbnailUrl on the video item of create_post. Banners and avatars are export only: the person uploads them in YouTube Studio. A prompt that goes from idea to a prepared post, and stops before publishing:
Use Mellow Hub. Make a thumbnail for my video about [topic].
Call studio_thumbnail_ideas and show me the ideas. For the one I pick,
call studio_quote, then studio_thumbnail with format "16:9", variants 2,
the headline in quotation marks, maxCredits from the quote and a stable
idempotencyKey. Poll studio_job, run studio_thumbnail_review on each
version and tell me the strengths and fixes. Do not improve, export or
publish anything until I say which version to use.Without an agent, the same review runs free on the YouTube thumbnail tester. The whole package — title, description, channel art — is in YouTube packaging.
Publish once, then read the YouTube result
create_post is the step that publishes or schedules. It needs an idempotencyKey of 8 to 120 letters, digits or the characters . _ : -, stable for this post, such as yt-short-2026-10-02-1800. If the response is lost or times out, send the same request with the same key: Hub returns the original post instead of making a second one. Reusing a key for different content is refused.
Under a review-mode grant the post comes back as pending_review and waits until you approve it, signed in, in Hub’s Posts or Queue screen. Under autopilot it goes out at scheduledAt, or immediately without it. Always write scheduledAt with Z or an explicit UTC offset.
Then call get_post and read the YouTube entry in targets, not only the post’s status. publishing means YouTube has not reported a result yet; published comes with the video link; failed comes with the network’s message. A post sent to several networks can end partial. Hub sends a refused channel again by itself where that can help, and waits out YouTube’s daily upload limit; while it does, the target reads scheduled with waiting. For one that still reads failed, call retry_post: it sends the same post to the failed channel alone, so nothing that went out is duplicated. Once YouTube has published a video, Hub cannot edit or remove it; cancel_post works only before it goes out.
Each destination counts once against your plan’s monthly publications. Validating, drafting and connecting work without a plan; publishing needs an active one. See plans.
What Mellow has tested with YouTube
On September 21, 2026, Mellow’s own test of the MCP workflow on the production service uploaded a 1280×720 test video, validated the post and published it to a YouTube channel as a private video, with a cover generated in Creative Studio attached as its thumbnail. The YouTube destination reached published.
That test does not cover everything on this page. Not tested yet: a vertical upload that YouTube classifies as a Short, a public or unlisted video, and granting a YouTube channel through ChatGPT’s or claude.ai’s own connector screens. Claude’s web connector completed Hub’s consent once, on September 9, 2026, with read-only access to an Instagram channel. Cursor has not been tested.
Questions
Can Claude upload YouTube Shorts?
Yes, once Claude is connected to Mellow Hub and you have approved access to your YouTube channel. Hub has no separate Shorts setting: you send one video and a title of up to 100 characters, and YouTube decides whether the upload is a Short. Under YouTube’s current rules, eligible square or vertical videos up to three minutes are classified as Shorts. Mellow’s own live test published a horizontal video, not a Short.
Can ChatGPT upload videos to YouTube?
Through a remote MCP server, yes. Where your plan or workspace allows custom MCP apps, ChatGPT can add Mellow Hub in developer mode and use the same tools as any other client. Mellow has not tested ChatGPT’s connector yet, so follow OpenAI’s current instructions and start with read-only access.
Can Claude or ChatGPT make a YouTube thumbnail through MCP?
Yes. Mellow Hub’s MCP server has Creative Studio’s thumbnail tools: studio_thumbnail makes 1 to 3 versions from a description at 10 credits each, studio_thumbnail_remix puts the creator into a thumbnail they like, and studio_thumbnail_review reviews one at no cost. They need the ai:generate permission, a maxCredits cap and an idempotency key, and they never publish.
Does the assistant get my Google password?
No. You sign in to Google yourself on the page Hub’s connection link opens. The assistant works with Hub channel IDs and only with the permissions you approved on Hub’s consent screen.
Will it publish without asking me?
By default, yes: autopilot is the default mode, so it publishes on its own, but only to the channels and within the daily ceiling and expiry you set. Choose review when you connect it and every post waits until you approve it in Hub. You can revoke it in Agents at any time.
Can it edit or delete a video after YouTube publishes it?
No. Hub can cancel or reschedule a post only before it goes out. After YouTube has published a video, change or delete it in YouTube itself.
Related
- Publish to social media with an MCP server: the workflow for every network.
- Threads MCP guide and Instagram MCP guide.
- The same for TikTok, LinkedIn, Facebook, X, Pinterest and Bluesky.
- Publish a YouTube video with its thumbnail, and the AI YouTube thumbnail generator.
- YouTube packaging: thumbnail, title, description, banner and avatar.
- API and MCP reference and rules for every network.
- Plans: each destination counts once against the monthly publications.