{"id":"3d667053-4fce-4162-b50c-0b8cc9d79b18","entityType":"agent","slug":"clawhub-buddyh-narrator","name":"Narrator","canonicalUrl":"https://www.xpersona.co/agent/clawhub-buddyh-narrator","canonicalPath":"/agent/clawhub-buddyh-narrator","generatedAt":"2026-10-10T07:40:04.274Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":null},"description":"Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech. Skill: Narrator Owner: buddyh Summary: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech. Tags: latest:1.3.2 Version history: v1.3.2 | 2026-02-16T21:55:08.694Z | user Make clawd narrator skill wrappers always delegate to the canonical /Users/buddy/narrator pipeline (real implementation); remove prototype-side execution paths. v1.3.1 | 2026-02-16T21:54:27.269Z | user Align skill docs","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17cwb3h7pssc8132cnbgm8gmx882623:narrator","sourceUrl":"https://clawhub.ai/buddyh/narrator","homepage":"https://clawhub.ai/buddyh/skills/narrator","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/buddyh/narrator","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/buddyh/skills/narrator","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech. Skill: Narrator Owner: buddyh Summary: Live narration of your macOS screen "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":null},"stars":null,"forks":null,"downloads":1797,"packageName":null,"latestVersion":"1.3.2","tractionLabel":"1.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T01:47:03.642Z","lastCrawledAt":"2026-10-10T01:47:03.642Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T01:47:03.642Z","lastVerifiedAt":null,"highlights":[{"version":"1.3.2","createdAt":"2026-02-16T21:55:08.694Z","changelog":"Make clawd narrator skill wrappers always delegate to the canonical /Users/buddy/narrator pipeline (real implementation); remove prototype-side execution paths.","fileCount":5,"zipByteSize":4291},{"version":"1.3.1","createdAt":"2026-02-16T21:54:27.269Z","changelog":"Align skill docs with /Users/buddy/narrator upstream implementation; replace local prototype claims with real repo-backed usage and control-flow commands.","fileCount":5,"zipByteSize":6480},{"version":"1.3.0","createdAt":"2026-02-12T17:12:06.987Z","changelog":"Sync with repo: add 7 styles (sports, nature, horror, noir, reality_tv, asmr, wrestling), ElevenLabs TTS integration, ambient tracks, live control protocol, simplify metadata","fileCount":5,"zipByteSize":6949},{"version":"1.0.0","createdAt":"2026-02-03T22:05:10.727Z","changelog":"Initial release of Screen Narrator. - Provides live narration of your screen activity in 7 distinct styles (sports, nature, horror, noir, reality_tv, asmr, wrestling). - Allows live switching between narration styles and profanity levels using simple JSON commands. - Supports start, stop, pause, resume, style change, and profanity control via tmux and control files. - Each style features unique voices and ambient tracks. - Includes timer support for automatic session length. - Status can be checked at any time via status file.","fileCount":2,"zipByteSize":1393}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17cwb3h7pssc8132cnbgm8gmx882623:narrator","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T07:40:04.274Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-buddyh-narrator/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":null},"readme":"Skill: Narrator\n\nOwner: buddyh\n\nSummary: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech.\n\nTags: latest:1.3.2\n\nVersion history:\n\nv1.3.2 | 2026-02-16T21:55:08.694Z | user\n\nMake clawd narrator skill wrappers always delegate to the canonical /Users/buddy/narrator pipeline (real implementation); remove prototype-side execution paths.\n\nv1.3.1 | 2026-02-16T21:54:27.269Z | user\n\nAlign skill docs with /Users/buddy/narrator upstream implementation; replace local prototype claims with real repo-backed usage and control-flow commands.\n\nv1.3.0 | 2026-02-12T17:12:06.987Z | user\n\nSync with repo: add 7 styles (sports, nature, horror, noir, reality_tv, asmr, wrestling), ElevenLabs TTS integration, ambient tracks, live control protocol, simplify metadata\n\nv1.0.0 | 2026-02-03T22:05:10.727Z | user\n\nInitial release of Screen Narrator.\n\n- Provides live narration of your screen activity in 7 distinct styles (sports, nature, horror, noir, reality_tv, asmr, wrestling).\n- Allows live switching between narration styles and profanity levels using simple JSON commands.\n- Supports start, stop, pause, resume, style change, and profanity control via tmux and control files.\n- Each style features unique voices and ambient tracks.\n- Includes timer support for automatic session length.\n- Status can be checked at any time via status file.\n\nArchive index:\n\nArchive v1.3.2: 5 files, 4291 bytes\n\nFiles: horror_demo.py (2774b), main.py (1301b), server.py (1431b), SKILL.md (2215b), _meta.json (127b)\n\nFile v1.3.2:SKILL.md\n\n---\nname: screen-narrator\ndescription: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech.\nhomepage: https://github.com/buddyh/narrator\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎙️\",\n        \"requires\": {\n          \"bins\": [\"python3\", \"tmux\", \"peekaboo\"],\n          \"env\": [\"GEMINI_API_KEY\", \"ELEVENLABS_API_KEY\"]\n        },\n      },\n  }\n---\n\n# Screen Narrator\n\nThis skill maps to the upstream `narrator` repo implementation.\n\nIt runs Gemini-vision narration styles (sports, nature, horror, noir, reality_tv, asmr, wrestling) and ElevenLabs TTS, with optional dual-lane narration and live control via JSON files.\n\n## Source of truth\n\nUse the repo install:\n\n```bash\ncd /Users/buddy/narrator\n/Users/buddy/narrator/.venv/bin/python -m narrator sports --help\n```\n\n## Setup\n\n```bash\ncd /Users/buddy/narrator\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\nRequired environment:\n\n- `GEMINI_API_KEY`\n- `ELEVENLABS_API_KEY`\n- optional: `ELEVENLABS_VOICE_ID`\n\n## Runtime control commands\n\nStart live narration in a tmux session (preferred):\n\n```bash\ntmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator sports --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\nStart with timer:\n\n```bash\ntmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator wrestling --time 5m --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\nChange style on the fly:\n\n```bash\necho '{\"command\": \"style\", \"value\": \"horror\"}' > /tmp/narrator-ctl.json\n```\n\nSet profanity:\n\n```bash\necho '{\"command\": \"profanity\", \"value\": \"low\"}' > /tmp/narrator-ctl.json\n```\n\nPause / resume:\n\n```bash\necho '{\"command\": \"pause\"}' > /tmp/narrator-ctl.json\necho '{\"command\": \"resume\"}' > /tmp/narrator-ctl.json\n```\n\nStop:\n\n```bash\ntmux kill-session -t narrator\n```\n\nCheck status:\n\n```bash\ncat /tmp/narrator-status.json\n```\n\n## Notes\n\n- macOS only (screen capture + TTS/audio).\n- This OpenClaw skill wrapper is aligned to the `/Users/buddy/narrator` implementation to avoid drift between docs and runtime.\n\nFile v1.3.2:_meta.json\n\n{\n  \"ownerId\": \"kn77504adrn3e02cekr5mstanh7yknfx\",\n  \"slug\": \"narrator\",\n  \"version\": \"1.3.2\",\n  \"publishedAt\": 1771278908694\n}\n\nArchive v1.3.1: 5 files, 6480 bytes\n\nFiles: horror_demo.py (2774b), main.py (6212b), server.py (2915b), SKILL.md (2215b), _meta.json (127b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: screen-narrator\ndescription: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech.\nhomepage: https://github.com/buddyh/narrator\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎙️\",\n        \"requires\": {\n          \"bins\": [\"python3\", \"tmux\", \"peekaboo\"],\n          \"env\": [\"GEMINI_API_KEY\", \"ELEVENLABS_API_KEY\"]\n        },\n      },\n  }\n---\n\n# Screen Narrator\n\nThis skill maps to the upstream `narrator` repo implementation.\n\nIt runs Gemini-vision narration styles (sports, nature, horror, noir, reality_tv, asmr, wrestling) and ElevenLabs TTS, with optional dual-lane narration and live control via JSON files.\n\n## Source of truth\n\nUse the repo install:\n\n```bash\ncd /Users/buddy/narrator\n/Users/buddy/narrator/.venv/bin/python -m narrator sports --help\n```\n\n## Setup\n\n```bash\ncd /Users/buddy/narrator\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\nRequired environment:\n\n- `GEMINI_API_KEY`\n- `ELEVENLABS_API_KEY`\n- optional: `ELEVENLABS_VOICE_ID`\n\n## Runtime control commands\n\nStart live narration in a tmux session (preferred):\n\n```bash\ntmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator sports --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\nStart with timer:\n\n```bash\ntmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator wrestling --time 5m --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\nChange style on the fly:\n\n```bash\necho '{\"command\": \"style\", \"value\": \"horror\"}' > /tmp/narrator-ctl.json\n```\n\nSet profanity:\n\n```bash\necho '{\"command\": \"profanity\", \"value\": \"low\"}' > /tmp/narrator-ctl.json\n```\n\nPause / resume:\n\n```bash\necho '{\"command\": \"pause\"}' > /tmp/narrator-ctl.json\necho '{\"command\": \"resume\"}' > /tmp/narrator-ctl.json\n```\n\nStop:\n\n```bash\ntmux kill-session -t narrator\n```\n\nCheck status:\n\n```bash\ncat /tmp/narrator-status.json\n```\n\n## Notes\n\n- macOS only (screen capture + TTS/audio).\n- This OpenClaw skill wrapper is aligned to the `/Users/buddy/narrator` implementation to avoid drift between docs and runtime.\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn77504adrn3e02cekr5mstanh7yknfx\",\n  \"slug\": \"narrator\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1771278867269\n}\n\nArchive v1.3.0: 5 files, 6949 bytes\n\nFiles: horror_demo.py (2774b), main.py (5912b), server.py (2458b), SKILL.md (4034b), _meta.json (127b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: narrator\ndescription: Live narration of screen activity on macOS. Captures screen via Gemini Flash vision, generates style-specific commentary, and speaks with ElevenLabs TTS. 7 narration styles with per-style voices and ambient tracks.\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎙️\",\n        \"requires\": { \"bins\": [\"python3\"] },\n        \"env\":\n          {\n            \"GEMINI_API_KEY\": \"\",\n            \"ELEVENLABS_API_KEY\": \"\",\n            \"ELEVENLABS_VOICE_ID\": \"\",\n          },\n      },\n  }\n---\n\n# Screen Narrator\n\nLive narration of your screen activity on macOS. Captures your screen via Gemini Flash vision, generates style-specific commentary, and speaks it aloud with ElevenLabs TTS.\n\n## Styles\n\n| Style | Vibe |\n|-------|------|\n| `sports` | Punchy play-by-play announcer |\n| `nature` | David Attenborough documentary |\n| `horror` | Creeping dread, ominous foreshadowing |\n| `noir` | Hard-boiled detective narration |\n| `reality_tv` | Reality TV confessional booth commentary |\n| `asmr` | Whispered meditation |\n| `wrestling` | BAH GAWD maximum hype announcer |\n\n## Setup\n\n```bash\npython -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\nCreate a `.env` file with your API keys:\n\n```bash\nGEMINI_API_KEY=your_key_here\nELEVENLABS_API_KEY=your_key_here\nELEVENLABS_VOICE_ID=your_default_voice_id\n```\n\nConfigure per-style voices and ambient tracks in `~/.narrator/config.yaml`:\n\n```yaml\nvoices:\n  sports: your-voice-id\n  noir: your-voice-id\n  wrestling: your-voice-id\n  horror: your-voice-id\n  asmr: your-voice-id\n  reality_tv: your-voice-id\n\nambient:\n  sports: ~/narrator/ambient/sports.wav\n  noir: ~/narrator/ambient/noir.wav\n  wrestling: ~/narrator/ambient/wrestling.wav\n  horror: ~/narrator/ambient/horror.wav\n  asmr: ~/narrator/ambient/asmr.wav\n  nature: ~/narrator/ambient/nature.wav\n  reality_tv: ~/narrator/ambient/reality_tv.wav\n\ndefaults:\n  style: sports\n  profanity: high\n```\n\n## Usage\n\n```bash\npython -m narrator                    # interactive style picker\npython -m narrator horror             # specific style\npython -m narrator wrestling -t 5m    # auto-stop after 5 minutes\npython -m narrator --list             # show available styles\npython -m narrator --dry-run          # print lines without speaking\npython -m narrator --verbose          # debug output\n```\n\n## Live Control\n\nStart with control files to change settings on the fly:\n\n```bash\npython -m narrator noir \\\n  --control-file /tmp/narrator-ctl.json \\\n  --status-file /tmp/narrator-status.json\n```\n\nThen write commands to the control file:\n\n```bash\n# Switch style\necho '{\"command\": \"style\", \"value\": \"wrestling\"}' > /tmp/narrator-ctl.json\n\n# Change profanity level (off/low/high)\necho '{\"command\": \"profanity\", \"value\": \"low\"}' > /tmp/narrator-ctl.json\n\n# Pause / resume\necho '{\"command\": \"pause\"}' > /tmp/narrator-ctl.json\necho '{\"command\": \"resume\"}' > /tmp/narrator-ctl.json\n```\n\n## Architecture\n\n```\nScreen Capture --> Gemini Flash (vision + text) --> ElevenLabs TTS (WebSocket streaming)\n     |                                                      |\n     +-- ambient background track (per-style, looping) -----+\n```\n\n- **Dual-lane pipeline**: alternates short and long narration calls to eliminate dead air\n- **Per-style voices**: each style can use a different ElevenLabs voice\n- **Per-style ambient**: background audio loops with crossfade, auto-selected by style\n- **Live control**: JSON control file protocol for runtime style/profanity/pause changes\n\n## Ambient Tracks\n\nPlace 16-bit PCM mono WAV files (16kHz) in the `ambient/` directory, named by style:\n\n```\nambient/sports.wav\nambient/noir.wav\nambient/wrestling.wav\n...\n```\n\nConvert from MP3: `ffmpeg -i input.mp3 -ac 1 -ar 16000 -sample_fmt s16 ambient/style.wav`\n\n## Notes\n\n- macOS only (uses screen capture APIs)\n- Grant Screen Recording permission to your terminal in System Settings > Privacy & Security\n- Uses ElevenLabs WebSocket streaming (v2.5 models only, not v3)\n- Uses Gemini Flash for vision — requires `GEMINI_API_KEY`\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn77504adrn3e02cekr5mstanh7yknfx\",\n  \"slug\": \"narrator\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1770916326987\n}\n\nArchive v1.0.0: 2 files, 1393 bytes\n\nFiles: SKILL.md (2553b), _meta.json (127b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: screen-narrator\ndescription: Live narration of your screen activity with 7 styles (sports, nature, horror, noir, reality_tv, asmr, wrestling) and live switching.\nhomepage: https://github.com/buddyh/narrator\nmetadata: {\"clawdbot\":{\"emoji\":\"\",\"os\":[\"darwin\"],\"requires\":{\"bins\":[\"python3\",\"tmux\",\"peekaboo\"],\"envs\":[\"GEMINI_API_KEY\",\"ELEVENLABS_API_KEY\"]}}}\n---\n\n# Screen Narrator\n\nLive screen narration via Gemini vision + ElevenLabs TTS. 7 styles with per-style voices and ambient tracks.\n\n## Commands\n\n### Start\n```bash\ntmux new-session -d -s narrator \"cd {baseDir} && python -m narrator sports --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\n### Start with timer\n```bash\ntmux new-session -d -s narrator \"cd {baseDir} && python -m narrator wrestling -t 5m --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\n### Change style\n```bash\necho '{\"command\": \"style\", \"value\": \"horror\"}' > /tmp/narrator-ctl.json\n```\n\n### Change profanity\n```bash\necho '{\"command\": \"profanity\", \"value\": \"low\"}' > /tmp/narrator-ctl.json\n```\n\n### Pause / Resume\n```bash\necho '{\"command\": \"pause\"}' > /tmp/narrator-ctl.json\necho '{\"command\": \"resume\"}' > /tmp/narrator-ctl.json\n```\n\n### Multiple commands\n```bash\necho '[{\"command\": \"style\", \"value\": \"noir\"}, {\"command\": \"profanity\", \"value\": \"high\"}]' > /tmp/narrator-ctl.json\n```\n\n### Check status\n```bash\ncat /tmp/narrator-status.json\n```\n\n### Stop\n```bash\ntmux kill-session -t narrator\n```\n\n## Styles\n\n| Style | Vibe |\n|---|---|\n| `sports` | Punchy play-by-play announcer |\n| `nature` | David Attenborough documentary |\n| `horror` | Creeping dread, ominous foreshadowing |\n| `noir` | Hard-boiled detective narration |\n| `reality_tv` | Reality TV confessional booth |\n| `asmr` | Whispered meditation |\n| `wrestling` | BAH GAWD maximum hype announcer |\n\n## Control commands\n\n| Command | Value | Example |\n|---|---|---|\n| `style` | Style name | `{\"command\": \"style\", \"value\": \"wrestling\"}` |\n| `profanity` | `off`, `low`, `high` | `{\"command\": \"profanity\", \"value\": \"low\"}` |\n| `pause` | (none) | `{\"command\": \"pause\"}` |\n| `resume` | (none) | `{\"command\": \"resume\"}` |\n\n## Common requests\n\n- \"narrate my screen\" / \"roast my screen\" -> Start with `sports`\n- \"haunt my screen\" -> Start with `horror`\n- \"narrate for 5 minutes\" -> Use `-t 5m`\n- \"switch to wrestling\" -> Write style command to control file\n- \"make it family friendly\" -> Set profanity to `off`\n- \"pause\" / \"shut up\" -> Pause command\n- \"stop narrating\" -> `tmux kill-session -t narrator`\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn77504adrn3e02cekr5mstanh7yknfx\",\n  \"slug\": \"narrator\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1770156310727\n}","readmeExcerpt":"Skill: Narrator Owner: buddyh Summary: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech. Tags: latest:1.3.2 Version history: v1.3.2 | 2026-02-16T21:55:08.694Z | user Make clawd narrator skill wrappers always delegate to the canonical /Users/buddy/narrator pipeline (real implementation); remove prototype-side execution paths. v1.3.1 | 2026-02-16T21:54:27.269Z | user Align skill docs ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"cd /Users/buddy/narrator\n/Users/buddy/narrator/.venv/bin/python -m narrator sports --help"},{"language":"bash","snippet":"cd /Users/buddy/narrator\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt"},{"language":"bash","snippet":"tmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator sports --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\""},{"language":"bash","snippet":"tmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator wrestling --time 5m --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\""},{"language":"bash","snippet":"echo '{\"command\": \"style\", \"value\": \"horror\"}' > /tmp/narrator-ctl.json"},{"language":"bash","snippet":"echo '{\"command\": \"profanity\", \"value\": \"low\"}' > /tmp/narrator-ctl.json"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: screen-narrator\ndescription: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech.\nhomepage: https://github.com/buddyh/narrator\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎙️\",\n        \"requires\": {\n          \"bins\": [\"python3\", \"tmux\", \"peekaboo\"],\n          \"env\": [\"GEMINI_API_KEY\", \"ELEVENLABS_API_KEY\"]\n        },\n      },\n  }\n---\n\n# Screen Narrator\n\nThis skill maps to the upstream `narrator` repo implementation.\n\nIt runs Gemini-vision narration styles (sports, nature, horror, noir, reality_tv, asmr, wrestling) and ElevenLabs TTS, with optional dual-lane narration and live control via JSON files.\n\n## Source of truth\n\nUse the repo install:\n\n```bash\ncd /Users/buddy/narrator\n/Users/buddy/narrator/.venv/bin/python -m narrator sports --help\n```\n\n## Setup\n\n```bash\ncd /Users/buddy/narrator\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n```\n\nRequired environment:\n\n- `GEMINI_API_KEY`\n- `ELEVENLABS_API_KEY`\n- optional: `ELEVENLABS_VOICE_ID`\n\n## Runtime control commands\n\nStart live narration in a tmux session (preferred):\n\n```bash\ntmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator sports --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\nStart with timer:\n\n```bash\ntmux new-session -d -s narrator \"cd /Users/buddy/narrator && /Users/buddy/narrator/.venv/bin/python -m narrator wrestling --time 5m --control-file /tmp/narrator-ctl.json --status-file /tmp/narrator-status.json\"\n```\n\nChange style on the fly:\n\n```bash\necho '{\"command\": \"style\", \"value\": \"horror\"}' > /tmp/narrator-ctl.json\n```\n\nSet profanity:\n\n```bash\necho '{\"command\": \"profanity\", \"value\": \"low\"}' > /tmp/narrator-ctl.json\n```\n\nPause / resume:\n\n```bash\necho '{\"command\": \"pause\"}' > /tmp/narrator-ctl.json\necho '{\"command\": \"resume\"}' > /tmp/narrator-ctl.json\n```\n\nStop:\n\n```bash\ntmux kill-session -t narrator\n```\n\nCheck status:\n\n```bash\ncat /tmp/narrator-status.json\n```\n\n## Notes\n\n- macOS only (screen capture + TTS/audio).\n- This OpenClaw skill wrapper is aligned to the `/Users/buddy/narrator` implementation to avoid drift between docs and runtime."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77504adrn3e02cekr5mstanh7yknfx\",\n  \"slug\": \"narrator\",\n  \"version\": \"1.3.2\",\n  \"publishedAt\": 1771278908694\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech. Skill: Narrator Owner: buddyh Summary: Live narration of your macOS screen activity with Gemini vision + ElevenLabs speech. Tags: latest:1.3.2 Version history: v1.3.2 | 2026-02-16T21:55:08.694Z | user Make clawd narrator skill wrappers always delegate to the canonical /Users/buddy/narrator pipeline (real implementation); remove prototype-side execution paths. v1.3.1 | 2026-02-16T21:54:27.269Z | user Align skill docs","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":662,"uniquenessScore":58,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T01:47:03.642Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:40:04.274Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}