← Back to Skills Marketplace
scikkk

Bedtime Radio

by scikkk · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
220
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install bedtime-radio
Description
Generate a complete bedtime story audio program from a keyword — with intro, narration, character voices, and a sleepy outro. Use when parents or caregivers...
README (SKILL.md)

SenseAudio Bedtime Radio

Generate a complete bedtime story audio program — not just a TTS read-aloud, but a structured radio-style show with intro, paced narration, character voices, and a sleepy outro.

Step 1: Collect Inputs

Ask the user for:

  • 故事关键词 — e.g., "月亮上的小兔子", "会飞的小猪", "森林里的魔法书"
  • 孩子年龄 — affects vocabulary and story complexity (default: 4–6岁)
  • 时长偏好 — 短版 (~2分钟) / 标准版 (~4分钟) / 长版 (~6分钟)

Step 2: Write the Story (LLM task)

Generate the story yourself — no API call needed for this step. Follow these rules based on age:

Age Vocabulary Sentence length Story complexity
2–3岁 极简,常用词 ≤10字/句 单线情节,重复句式
4–6岁 简单,生动 10–18字/句 简单起承转合
7–10岁 丰富,有细节 15–25字/句 有悬念和转折

Story structure:

  • 开头:交代主角和场景(1段)
  • 发展:遇到问题或冒险(2–3段)
  • 高潮:解决问题的关键时刻(1段)
  • 结尾:温馨收尾,引导入睡(1段,语气渐缓)

Length guide:

  • 短版:约300字
  • 标准版:约600字
  • 长版:约1000字

Mark dialogue lines with the character name: [小兔子]: "..." [老爷爷]: "..."

Step 3: Plan the Audio Program

Structure the full program before making any API calls:

[片头]  "晚安,小朋友。今天的故事叫做《\x3C标题>》。"
        voice: female_0006_a, speed: 0.9

[正文段落1]  旁白第一段
        voice: female_0006_a, speed: 0.85
        + \x3Cbreak time="2000"> after paragraph

[对话]  角色台词(如有)
        小动物/儿童角色 → child_0001_b, speed: 0.9
        老人/长辈角色   → male_0004_a, speed: 0.85
        旁白继续        → female_0006_a

[正文后半段]  speed 逐段降低:0.85 → 0.80 → 0.75
        模拟催眠节奏

[片尾]  "故事讲完啦,闭上眼睛,晚安……"
        voice: female_0006_a, speed: 0.7

Step 4: Synthesize Each Segment

Generate each segment as a separate mp3 file, then list them for the user to assemble.

Segment synthesis pattern:

synthesize() {
  local TEXT="$1"
  local VOICE="$2"
  local SPEED="$3"
  local OUTFILE="$4"

  curl -s -X POST https://api.senseaudio.cn/v1/t2a_v2 \
    -H "Authorization: Bearer $SENSEAUDIO_API_KEY" \
    -H "Content-Type: application/json" \
    -d "{
      \"model\": \"SenseAudio-TTS-1.0\",
      \"text\": \"$TEXT\",
      \"stream\": false,
      \"voice_setting\": { \"voice_id\": \"$VOICE\", \"speed\": $SPEED },
      \"audio_setting\": { \"format\": \"mp3\" }
    }" -o "${OUTFILE}.json"

  jq -r '.data.audio' "${OUTFILE}.json" | xxd -r -p > "$OUTFILE"
  echo "$(jq '.extra_info.audio_length' "${OUTFILE}.json")ms — $OUTFILE"
}

Segment breakdown:

Segment Text Voice Speed File
片头 "晚安,小朋友。今天的故事叫做《\x3C标题>》。" female_0006_a 0.9 00_intro.mp3
正文段1 第一段旁白 female_0006_a 0.85 01_narration.mp3
正文段2 第二段旁白 female_0006_a 0.85 02_narration.mp3
对话(如有) 角色台词 child_0001_b / male_0004_a 0.9 03_dialogue.mp3
正文段3 后半段旁白 female_0006_a 0.80 04_narration.mp3
正文段4 结尾段旁白 female_0006_a 0.75 05_narration.mp3
片尾 "故事讲完啦,闭上眼睛,晚安……" female_0006_a 0.7 06_outro.mp3

Insert \x3Cbreak time=2000> at paragraph boundaries within a segment's text to create natural pauses between paragraphs.

Step 5: Output

List all generated files with durations and assembly instructions:

睡前故事电台生成完成:《\x3C标题>》

文件列表(按顺序播放):
  00_intro.mp3        — 片头 (8秒)
  01_narration.mp3    — 第一段 (42秒)
  02_narration.mp3    — 第二段 (38秒)
  03_dialogue.mp3     — 对话 (25秒)
  04_narration.mp3    — 第三段,渐慢 (45秒)
  05_narration.mp3    — 结尾段,更慢 (40秒)
  06_outro.mp3        — 片尾 (12秒)

总时长:约 3分50秒

合并命令(需要 ffmpeg):
  ffmpeg -i "concat:00_intro.mp3|01_narration.mp3|..." -acodec copy story.mp3

If the user wants a different story or age group, regenerate only the story text and re-synthesize — the program structure stays the same.

Usage Guidance
This skill is coherent with its purpose, but before installing consider: (1) it will transmit the story text and any user-provided content to SenseAudio's API — review SenseAudio's privacy/retention policy and only send content you're comfortable sharing with that service; (2) keep SENSEAUDIO_API_KEY secret and revoke/rotate it if exposed; (3) the workflow writes API response JSON files and decoded audio to disk — ensure the runtime environment's storage policies are acceptable for potentially sensitive content (even if it's just children's stories); (4) the SKILL.md mentions ffmpeg for concatenation but ffmpeg isn't listed as a required binary — if you need automatic merging, ensure ffmpeg is available or update the skill requirements; (5) if you need stronger guarantees (e.g., no external network calls), do not install/use this skill. Overall, the skill appears internally consistent and proportionate to its stated function.
Capability Analysis
Type: OpenClaw Skill Name: bedtime-radio Version: 1.0.0 The skill is designed to generate bedtime story audio programs by interacting with the SenseAudio API (api.senseaudio.cn). It uses standard utilities like curl, jq, and xxd to process API responses and convert hex-encoded audio data into MP3 files, which aligns perfectly with its stated purpose in SKILL.md. No indicators of data exfiltration, malicious execution, or prompt injection were found.
Capability Assessment
Purpose & Capability
The skill declares a single SenseAudio API key and only the CLI tools (curl, jq, xxd) needed to call the remote TTS API and decode its response. The external endpoint in the instructions (api.senseaudio.cn) matches the declared homepage. No unrelated cloud credentials or system access are requested.
Instruction Scope
Instructions stay within the stated purpose (collect story inputs, generate text locally, call SenseAudio TTS for each segment, decode and list files). It explicitly sends user-provided story text to the SenseAudio API (expected for TTS). Minor scope note: final assembly suggests using ffmpeg but ffmpeg is not listed as a required binary; also the instructions write API JSON responses to disk ("${OUTFILE}.json").
Install Mechanism
No install spec — instruction-only skill — so nothing is downloaded or written at install time. This is the lowest-risk install posture.
Credentials
Only one credential (SENSEAUDIO_API_KEY) is required and it's the primary credential for the stated TTS API. No unrelated secret/env var requests are present.
Persistence & Privilege
always is false and the skill does not request persistent or elevated platform privileges. It's user-invocable and can be called autonomously (platform default), which is appropriate for this type of integration.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install bedtime-radio
  3. After installation, invoke the skill by name or use /bedtime-radio
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
senseaudio-bedtime-radio v1.0.0 - Initial release of the skill. - Generates a complete bedtime story audio program from a keyword, with intro, multi-style narration, character voices, and a sleepy outro. - Customizes story complexity and vocabulary based on child's age, supporting ages 2–10. - Supports variable story lengths: short, standard, and long versions. - Outlines structured audio segment planning and provides Bash synthesis/assembly instructions. - Requires SENSEAUDIO_API_KEY for audio generation.
Metadata
Slug bedtime-radio
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Bedtime Radio?

Generate a complete bedtime story audio program from a keyword — with intro, narration, character voices, and a sleepy outro. Use when parents or caregivers... It is an AI Agent Skill for Claude Code / OpenClaw, with 220 downloads so far.

How do I install Bedtime Radio?

Run "/install bedtime-radio" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Bedtime Radio free?

Yes, Bedtime Radio is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Bedtime Radio support?

Bedtime Radio is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Bedtime Radio?

It is built and maintained by scikkk (@scikkk); the current version is v1.0.0.

💬 Comments