一键导入
music
Play and stop music from YouTube through the lamp speaker on user request.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Play and stop music from YouTube through the lamp speaker on user request.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Understand voice input from the realtime voice agent pipeline. Messages may contain [voice-instruction]/[transcript] (delegated with context), [HANDLED]/[REPLY] (chit-chat already spoken), or plain text. Route and respond accordingly.
Self-enroll a voice for speaker recognition. Activate ONLY when (a) a mic `Unknown Speaker:` turn carries a clear self-introduction ("I'm X", "my name is X", "tôi là X"...), (b) prior same-tag `[voice:voice_N]` turns can be combined with a now-named turn, (c) a Telegram voice-note carries an intro, OR (d) the user asks to list / forget / identify voices. Do NOT activate on bare `Unknown Speaker:` turns with no name and no prior same-tag history — those need only a short ack. Self-enrollment only.
Guard mode for security monitoring. Two uses — (1) Toggle on/off when a friend says "guard mode", "watch the house", "I'm going out", or similar. (2) Handle any sensing event that carries a [guard-active] tag (e.g. [sensing:presence.enter][guard-active], [sensing:motion][guard-active]) with dramatic shock/curious emotion + Telegram broadcast. Do NOT fall back to normal sensing reactions while guard mode is on.
React to passive sensing events from the lamp — presence, sound, light, fire hazard. Events arrive as [sensing:<type>] messages and each gets an emotion marker + optional short line. Does NOT handle motion.activity (→ wellbeing) or emotion.detected / speech_emotion.detected (→ user-emotion-detection).
Query flow event logs to answer questions about past sensing events — "Have you seen anybody between 10pm and 12pm?", "Is there any motion in the last hour?", "What happened while I was away?".
Camera control — snapshot, stream, and privacy toggle. Trigger on "what do you see", "look at this", "take a photo", "don't look", "stop looking", "stop watching", "stop staring", "camera off", "camera on", "give me privacy". MUST call [HW:/camera/disable:{}] or [HW:/camera/enable:{}] when toggling — never just reply with text.
| name | music |
| description | Play and stop music from YouTube through the lamp speaker on user request. |
Play music through the lamp speaker by searching YouTube. Use this when the user asks to play, sing, or listen to music.
cat /root/local/users/{name}/habit/patterns.json 2>/dev/null
If music_patterns exists and current hour is within peak_hour ± 1 → use preferred_genre to pick a song, no need to ask.
Otherwise → ask: "What are you in the mood for?". The file is bootstrapped lazily by wellbeing on its first threshold nudge; do not invoke habit Flow A from here.[HW:/audio/play:{"query":"Bohemian Rhapsody Queen","person":"alice"}][HW:/emotion:{"emotion":"excited","intensity":0.8}] Playing Bohemian Rhapsody!
[HW:/audio/stop:{}] Music stopped./audio/play)| Field | Required | Description |
|---|---|---|
query | YES | YouTube search string (include artist for better match) |
person | no | Who requested, lowercase (e.g. "alice") — omit if unknown |
Do NOT use track, artist, title, song — those return 422.
/audio/play)| Genre keywords | Emotion |
|---|---|
| jazz, blues, soul, funk, swing | happy |
| classical, orchestra, piano, violin | curious |
| hip hop, rap, trap, r&b, rock, metal | excited |
| anything else | happy |
| Input | Output |
|---|---|
| "Play Bohemian Rhapsody" | [HW:/audio/play:{"query":"Bohemian Rhapsody Queen","person":"alice"}][HW:/emotion:{"emotion":"excited","intensity":0.8}] Playing Bohemian Rhapsody! |
| "Sing me a song" | [HW:/emotion:{"emotion":"curious","intensity":0.6}] What kind of vibe — chill, upbeat, or something specific? |
| "Something chill" | [HW:/audio/play:{"query":"chill acoustic playlist","person":"alice"}][HW:/emotion:{"emotion":"happy","intensity":0.8}] Here's some chill vibes! |
| "Stop the music" | [HW:/audio/stop:{}] Music stopped. |
The Go server intercepts [HW:/audio/play:...] / [HW:/audio/stop:...] and forwards to LeLamp. This is the ONLY way to play music — never use exec, mpv, vlc, yt-dlp, or curl /audio/play.
503 → "Music playback is not available right now."409 → music already playing; stop first, then play new song./audio/play.person MUST be lowercase./audio/play and let real music play.