From 4b7a3f45b7f8d68f6192d77fff0c5a403b2c0920 Mon Sep 17 00:00:00 2001 From: Mohamed Saleh Zaied Date: Sun, 28 Jun 2026 20:44:51 +0300 Subject: [PATCH 1/4] Add youtube/upload domain skill (battle-tested Studio flow) Step-by-step browser-harness flow for publishing to YouTube via Studio: Create->Upload videos, file via DOM.setFileInputFiles (last input), contenteditable #textbox title/desc, 'Made for Kids' curly-quote gotcha, coordinate-click visibility radios, Publish confirmation. Captured 2026-06-28 while publishing the Skilly Builders demo. --- domain-skills/youtube/upload.md | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 domain-skills/youtube/upload.md diff --git a/domain-skills/youtube/upload.md b/domain-skills/youtube/upload.md new file mode 100644 index 00000000..b4b111b5 --- /dev/null +++ b/domain-skills/youtube/upload.md @@ -0,0 +1,51 @@ +# youtube/upload — publish a video to YouTube via Studio (battle-tested 2026-06-28) + +Driving `studio.youtube.com` with browser-harness against the user's logged-in Chrome. This is the durable map of the upload flow — follow it and the first try works. The whole flow is ~5 steps but several controls resist JS selectors and need **coordinate clicks** (noted below). + +## Pre-flight +- User must be logged into the target channel in Chrome. Confirm: `page_info()` on `studio.youtube.com` returns `.../channel/` and title contains "YouTube Studio". +- **Check for an existing video first.** The channel dashboard "Latest video performance" card shows the most recent upload — don't create a duplicate. To reuse an existing video's URL instead of uploading: go to `.../videos/upload`, scrape `a[href*="/video/"]` → `/video/()/` and build `https://youtu.be/`. +- Have the absolute path to the local `.mp4` ready. + +## The flow + +### 1. Open the upload dialog +- Click **Create** (top-right): match `aria-label === "Create"` (an `