YouTube Studio Computer Use
Use This Skill
Use this skill when the task must operate the live YouTube Studio UI in Chrome:
- Add or replace thumbnails on existing videos.
- Schedule or reschedule videos through Studio visibility controls.
- Fix metadata, playlist, audience, visibility, or save states when API setup is missing.
- Batch a series of Studio edit-page operations with a ledger and recovery list.
- Combine DOM injection with Computer Use for fragile UI states.
Use youtube-studio-batch-upload instead when the primary job is downloading source videos, staging filenames, building metadata, uploading new videos, or keeping upload ledgers. Use an official YouTube API flow when OAuth/API credentials already exist and the operation is supported cleanly, especially for bulk metadata reads/writes. This skill is for the messy browser path.
Ground Rules
- Call
mcp__computer_use.get_app_state before direct UI actions in a turn.
- Treat Chrome tabs as shared with the user. Before injecting JS, explicitly target or activate the intended YouTube Studio tab; do not rely on “front window active tab” after the user has been browsing.
- Keep a local status JSON/CSV ledger with
video_id, title, action, target time, thumbnail path, ok, error, and verification text.
- Save each video before moving to the next. Verify
All changes saved and the intended side-panel state, such as Visibility Scheduled.
- If the user is also using Chrome, assume focus may move. Re-query app state and retarget the Studio tab after interruptions.
- Do not publish private/internal source URLs or notes while making metadata changes.
Browser Automation Pattern
Use Computer Use to anchor the session and DOM JS for repetitive page operations:
- Open or select a YouTube Studio edit page:
https://studio.youtube.com/video/<video_id>/edit.
- Wait for the edit page to be fully rendered. Require body text, a thumbnail/input area when needed, and the
Edit video visibility status control.
- Run small JS snippets through Chrome AppleScript or a browser tool. For async browser work, start the async task in-page, store the result on
window.__codex..., then poll it. AppleScript does not reliably await Promises.
- Use Computer Use clicks for native popups, file pickers, and UI states that DOM JS cannot reach.
- Save, wait, verify, and append to the ledger before continuing.
For detailed snippets and known failure modes, read references/studio-dom-patterns.md.
Thumbnails
Reliable thumbnail replacement requires the hidden Studio file input:
- Scroll the thumbnail section into view and wait for
input[type=file]#file-loader.
- Do not click the upload button unless you plan to handle the native file picker.
- A robust DOM route is to serve the local thumbnail file from a tiny localhost server,
fetch it from the page, create a File, set input.files with DataTransfer, and dispatch input plus change.
- After injection, wait for the thumbnail control to stop showing
Uploading.... Large or slow images may need a 60-second poll.
If Studio shows the new thumbnail but the status object still says pending, inspect the page before retrying; retrying may replace the same thumbnail harmlessly, but do not save until Studio is done uploading.
Scheduling
Scheduling is fragile because YouTube Studio validates hidden component state, not just input text.
- Open the visibility popup using the
Edit video visibility status control.
- Select
Schedule, then set the date and time.
- For date, opening the date picker and clicking the visible day is more reliable than assigning text.
- For time, click the time field and choose the visible listbox option such as
8:30 AM. Merely setting input.value = "8:30 AM" can display the right value while leaving Done disabled.
- Confirm
Done is enabled before clicking it.
- Click page-level
Save, then wait until All changes saved and the side panel shows Visibility Scheduled.
For spaced launches, generate slot times in the local YouTube timezone, e.g. start at 9:30 AM and add 30 minutes per video. Record every assigned time in the ledger.
Recovery
Common recoveries:
missing file input: the thumbnail section has not rendered. Scroll to Thumbnail and wait again.
- thumbnail result
pending: the in-page async task did not finish in the poll window. Extend the poll, use a threaded local server, and inspect whether Studio is already uploading the thumbnail.
Done disabled after setting time: choose the time from the dropdown listbox; do not type or assign the value only.
missing schedule: the visibility popup did not open or is still collapsed. Re-open the visibility control and inspect visible popup text.
- JS ran on the wrong page: retarget the Studio tab explicitly and re-run
get_app_state.
Never bulldoze through failures in a batch. Stop, patch the driver, and resume from the ledger with the next available publish slot.
1---2name: youtube-studio-computer-use3description: Automate YouTube Studio through Chrome and Computer Use when API access is unavailable, insufficient, or slower for Studio-only edits. Use for browser-driven YouTube Studio work such as editing existing videos, adding custom thumbnails, changing visibility, scheduling publish times, selecting playlists, saving/verifying Studio state, recovering from disabled buttons, and coordinating DOM injection with Computer Use clicks. Prefer API or the youtube-studio-batch-upload skill for pure upload/download/metadata preparation when stable API credentials or batch upload workflows are available.4---56# YouTube Studio Computer Use78## Use This Skill910Use this skill when the task must operate the live YouTube Studio UI in Chrome:1112- Add or replace thumbnails on existing videos.13- Schedule or reschedule videos through Studio visibility controls.14- Fix metadata, playlist, audience, visibility, or save states when API setup is missing.15- Batch a series of Studio edit-page operations with a ledger and recovery list.16- Combine DOM injection with Computer Use for fragile UI states.1718Use `youtube-studio-batch-upload` instead when the primary job is downloading source videos, staging filenames, building metadata, uploading new videos, or keeping upload ledgers. Use an official YouTube API flow when OAuth/API credentials already exist and the operation is supported cleanly, especially for bulk metadata reads/writes. This skill is for the messy browser path.1920## Ground Rules2122- Call `mcp__computer_use.get_app_state` before direct UI actions in a turn.23- Treat Chrome tabs as shared with the user. Before injecting JS, explicitly target or activate the intended YouTube Studio tab; do not rely on “front window active tab” after the user has been browsing.24- Keep a local status JSON/CSV ledger with `video_id`, title, action, target time, thumbnail path, `ok`, error, and verification text.25- Save each video before moving to the next. Verify `All changes saved` and the intended side-panel state, such as `Visibility Scheduled`.26- If the user is also using Chrome, assume focus may move. Re-query app state and retarget the Studio tab after interruptions.27- Do not publish private/internal source URLs or notes while making metadata changes.2829## Browser Automation Pattern3031Use Computer Use to anchor the session and DOM JS for repetitive page operations:32331. Open or select a YouTube Studio edit page: `https://studio.youtube.com/video/<video_id>/edit`.342. Wait for the edit page to be fully rendered. Require body text, a thumbnail/input area when needed, and the `Edit video visibility status` control.353. Run small JS snippets through Chrome AppleScript or a browser tool. For async browser work, start the async task in-page, store the result on `window.__codex...`, then poll it. AppleScript does not reliably await Promises.364. Use Computer Use clicks for native popups, file pickers, and UI states that DOM JS cannot reach.375. Save, wait, verify, and append to the ledger before continuing.3839For detailed snippets and known failure modes, read `references/studio-dom-patterns.md`.4041## Thumbnails4243Reliable thumbnail replacement requires the hidden Studio file input:4445- Scroll the thumbnail section into view and wait for `input[type=file]#file-loader`.46- Do not click the upload button unless you plan to handle the native file picker.47- A robust DOM route is to serve the local thumbnail file from a tiny localhost server, `fetch` it from the page, create a `File`, set `input.files` with `DataTransfer`, and dispatch `input` plus `change`.48- After injection, wait for the thumbnail control to stop showing `Uploading...`. Large or slow images may need a 60-second poll.4950If Studio shows the new thumbnail but the status object still says pending, inspect the page before retrying; retrying may replace the same thumbnail harmlessly, but do not save until Studio is done uploading.5152## Scheduling5354Scheduling is fragile because YouTube Studio validates hidden component state, not just input text.5556- Open the visibility popup using the `Edit video visibility status` control.57- Select `Schedule`, then set the date and time.58- For date, opening the date picker and clicking the visible day is more reliable than assigning text.59- For time, click the time field and choose the visible listbox option such as `8:30 AM`. Merely setting `input.value = "8:30 AM"` can display the right value while leaving `Done` disabled.60- Confirm `Done` is enabled before clicking it.61- Click page-level `Save`, then wait until `All changes saved` and the side panel shows `Visibility Scheduled`.6263For spaced launches, generate slot times in the local YouTube timezone, e.g. start at `9:30 AM` and add 30 minutes per video. Record every assigned time in the ledger.6465## Recovery6667Common recoveries:6869- `missing file input`: the thumbnail section has not rendered. Scroll to Thumbnail and wait again.70- thumbnail result `pending`: the in-page async task did not finish in the poll window. Extend the poll, use a threaded local server, and inspect whether Studio is already uploading the thumbnail.71- `Done` disabled after setting time: choose the time from the dropdown listbox; do not type or assign the value only.72- `missing schedule`: the visibility popup did not open or is still collapsed. Re-open the visibility control and inspect visible popup text.73- JS ran on the wrong page: retarget the Studio tab explicitly and re-run `get_app_state`.7475Never bulldoze through failures in a batch. Stop, patch the driver, and resume from the ledger with the next available publish slot.