✓ Verified
💻 Development
✓ Enhanced Data
My Play Music From Yt
Play music on YouTube via browser automation with playwright-cli.
- Rating
- 4.7 (198 reviews)
- Downloads
- 16,151 downloads
- Version
- 1.0.0
Overview
Play music on YouTube via browser automation with playwright-cli.
Complete Documentation
View Source →name: my-play-music-from-yt description: | Play music on YouTube via browser automation with playwright-cli. Use when the user wants to: (1) play a specific song (e.g. 'play Money Money Money by ABBA') (2) play songs by an artist as a playlist or mix (e.g. 'play Jay Chou's songs') (3) play genre or mood-based music (e.g. 'play relaxing spa music', 'play 60s Chinese oldies') (4) control playback — next, pause, resume, stop, skip ad, change song, close the player. Also handles song/artist name corrections from voice transcription errors. allowed-tools: Bash(playwright-cli:*) metadata: {"openclaw": {"requires": {"bins": ["playwright-cli"]}, "emoji": "🎵"}}
Play Music from YouTube — Clear, Stable, High SNR Instruction Set
This skill controls a visible browser usingplaywright-cli to search and play YouTube music.
All actions follow snapshot → ref → action pattern. Never guess. Never assume.
CORE PRINCIPLES
1. Always use a named session
``
-s=music_player
`
Every command must include it.
2. Always snapshot before interacting
`
playwright-cli -s=music_player snapshot
`
Never click/fill without fresh refs.
3. Only use ref-based actions
`
click e123
fill e45 "text"
`
Never use CSS, XPaths, or assumptions.
4. Browser must be visible
`
--headed
`
Use headed by default unless the user explicitly requests headless.
5. Session continues in background
After playback begins, do not block waiting. Continue responding normally.
6. Use persistent browser profile
`
--persistent
`
Always include --persistent when opening a new session. This saves the browser profile (cookies, localStorage, IndexedDB, cache) to disk, so login state survives session restarts.
SNAPSHOT STORAGE
Snapshots generated by playwright-cli may exist in two possible locations:
$WORKSPACE/.playwright-cli/ ← primary (search here first)
~/.playwright-cli/ ← fallback when the workspace folder is empty
Use only these two folders unless the user explicitly authorizes a broader search.
If no .yml snapshots appear here, it is almost always MacOS permission-related.
Ask the user to run:
`
playwright-cli open https://www.youtube.com --headed
`
This will trigger macOS system dialogs for:
- Screen Recording
- Automation
- Accessibility
Approve all to enable snapshot generation.
Note: On Windows and Linux, these permission dialogs do not apply. If snapshots are missing on those platforms, check that the browser launched correctly.
SESSION MANAGEMENT
Check whether the session exists
`
playwright-cli list
`
- Exists → continue
- Missing → recreate:
`
playwright-cli -s=music_player open https://www.youtube.com --headed --persistent
`
On any unexpected error, run playwright-cli list first to diagnose before retrying.
If the session is frozen or blank
`
playwright-cli -s=music_player goto https://www.youtube.com
`
This reliably resets the page without closing the session.
SEARCH QUERY CONSTRUCTION
Build the search query based on user intent:
| Intent | Query pattern | Example |
|---|---|---|
| Specific song | [Artist] [Song Title] | ABBA Money Money Money |
| Artist playlist | [Artist] | 周杰倫 |
| Genre / mood | [descriptor] music playlist | relaxing spa music playlist |
| Era-based | [era] [language/genre] playlist | 華語 60年代 老歌 playlist |
Search tips:
- For artist requests, a simple artist name search usually surfaces "Mix" and playlist results at the top — prefer these for continuous playback.
- Use the original language for non-English songs (e.g. Chinese characters for Chinese songs).
Voice transcription (ASR) and typo handling:
- Do NOT ask the user to confirm potentially misheard names. YouTube has robust auto-correction and will show results for the intended query even with typos or homophones (e.g. searching "楊成林" will auto-correct to "楊丞琳").
- Always search directly with whatever text you have. After the search, check the results snapshot — if YouTube shows a "Did you mean: ..." or "顯示以下搜尋結果: ..." banner with corrected results, the correction is already applied.
- Only fall back to web search or asking the user if the YouTube search results are clearly unrelated or empty.
SEARCH WORKFLOW (HIGH SIGNAL, LOW AMBIGUITY)
Step 1 — Reset search state
A clean search state avoids dropdown obstruction.
Perform the following every time before a new search:
- Snapshot.
- If button
"Clear search query" / "清除搜尋查詢" is present → click it.
- Else press:
`
playwright-cli -s=music_player press Escape
`
- If suggestions or overlays still block results → reset page:
`
playwright-cli -s=music_player goto https://www.youtube.com
`
Then snapshot again.
Step 2 — Locate search bar
Snapshot → find:
combobox "搜尋" or
combobox "Search"
Record its ref (e.g., e34).
Step 3 — Perform search
`
playwright-cli -s=music_player fill "SEARCH TERM"
playwright-cli -s=music_player press Enter
`
Then snapshot immediately to avoid suggestion-panel obstruction.
Step 4 — Choose best result
Select result based on user intent:
- Specific song → click the
link whose heading matches the song title.
- Artist → prefer
"Mix - [Artist]" links or playlist links for continuous playback.
- Genre / mood → prefer long-duration compilations or playlists (>20 mins).
- Fallback if no clear match → prefer: Mix > Long playlist > Official channel upload > Single MV.
For guidance on identifying YouTube result types, see ./references/youtube-guide.md.
Important: Do NOT click channel cards (e.g. link "Artist Name ... @handle•NNNK subscribers ..." / "Artist Name ... @handle•NNN萬位訂閱者 ..."). They navigate to the channel page, not music. Look for Mix or playlist results below them.
Click using its ref:
`
playwright-cli -s=music_player click eXYZ
`
If click is blocked:
press Escape
- Retry click once.
- If still blocked →
goto https://www.youtube.com and restart from Step 1.
AD HANDLING LOOP
After clicking a result:
`
playwright-cli -s=music_player snapshot
`
Loop up to 4 iterations:
1. Playback detected
If you see:
button "Pause (k)" or
button "Play (k)" (but video advancing)
AND no ad indicators → playback is active → report song title to the user.
2. Skip button detected
Any element whose label contains:
- skip / Skip / 略過
- Skip Ad / Skip Ads / 略過廣告
→ click it immediately.
Note: If the skip button is [disabled] (countdown not yet elapsed), do NOT click it — wait ~5 seconds instead (see step 3).
Then snapshot again. YouTube often plays two consecutive ads — always check for a second ad after skipping.
3. Non-skippable ad / countdown
Wait 5 seconds:
`
playwright-cli -s=music_player eval "await new Promise(r=>setTimeout(r,5000))"
`
Then snapshot again and repeat from step 1.
If ads persist >20 seconds
- press Escape
- or reload page
PLAYBACK CONTROLS
Always snapshot first.
| Command | Action |
|--------|--------|
| Pause | click button "Pause (k)" |
| Resume / Play | click button "Play (k)" |
| Next | press Shift+n |
| Previous | press Shift+p |
| Change song | Start new search from Step 1 |
| Stop | playwright-cli -s=music_player close |
Keyboard shortcuts (reliable alternative when button refs are hard to locate):
`
k → play / pause
Shift+n → next track
Shift+p → previous track
m → mute / unmute
f → fullscreen toggle
j → rewind 10s
l → forward 10s
`
Usage: playwright-cli -s=music_player press
ERROR RECOVERY & EDGE CASES
If snapshot empty or missing critical refs
`
playwright-cli -s=music_player goto https://www.youtube.com
`
→ restart from Step 1.
If browser crashes or session disappears
playwright-cli list shows no music_player.
Inform the user the browser was closed, then recreate session:
`
playwright-cli -s=music_player open https://www.youtube.com --headed --persistent
`
Because --persistent is used, the browser profile (including login state) is restored automatically. No need to log in again.
YouTube cookie consent / sign-in dialogs
Snapshot → locate dismiss actions:
- "Accept all" / "全部接受"
- "Reject all"
- "No thanks" / "不用了,謝謝"
- Close (X)
Click dismiss.
YouTube Premium trial popup
Snapshot → look for "No thanks", "不用了,謝謝", or a dismiss/close button → click to dismiss.
Video unavailable
Snapshot shows "Video unavailable" or similar error.
playwright-cli -s=music_player go-back → snapshot → try the next result link.
Cannot find elements in search results
- Scroll down:
playwright-cli -s=music_player press PageDown → snapshot again.
Page frozen or blank
playwright-cli -s=music_player reload → snapshot.
- If still broken:
playwright-cli -s=music_player close → reopen and retry from Step 1.
Persistent profile corrupted or login expired
If the browser opens but login state is lost, or YouTube forces re-authentication:
- Inform the user they need to log in again in the browser.
- After login, the persistent profile will be updated automatically.
To completely reset the profile (last resort):
`
playwright-cli -s=music_player close
playwright-cli -s=music_player delete-data
playwright-cli -s=music_player open https://www.youtube.com --headed --persistent
``
REFERENCES
Installation
Terminal bash
openclaw install my-play-music-from-yt
Copied!
Tags
#web_and-frontend-development
#automation
#cli
Quick Info
Category Development
Model Claude 3.5
Complexity Multi-Agent
Author whodidthese
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
Ready to Install?
Get started with this skill in seconds
openclaw install my-play-music-from-yt
Related Skills
✓ Verified
💻 Development
4claw
4claw — a moderated imageboard for AI agents.
🧠 Claude-Ready
)}
★ 4.4 (118)
↓ 4,990
v1.0.0
✓ Verified
💻 Development
Aap Passport
Agent Attestation Protocol - The Reverse Turing Test.
🧠 Claude-Ready
)}
★ 4.3 (89)
↓ 4,621
v1.0.0
✓ Verified
💻 Development
Acestep Lyrics Transcription
Transcribe audio to timestamped lyrics using OpenAI Whisper or ElevenLabs Scribe API.
⚡ GPT-Optimized
)}
★ 3.8 (274)
↓ 17,648
v1.0.0
✓ Verified
💻 Development
Adaptive Suite
A continuously adaptive skill suite that empowers Clawdbot.
🧠 Claude-Ready
)}
★ 4.7 (88)
↓ 1,625
v1.0.0