SkillHub

kids-points

v1.2.0

通过高精度语音识别自动记录孩子学习和生活积分,并用童声语音播报积分变动和每日积分日报。

Sourced from ClawHub, Authored by cowboy231

Installation

Please help me install the skill `kids-points` from SkillHub official store. npx skills add cowboy231/kids-points

kids-points - 儿童积分语音助手 🎤

版本: v1.2 | 最后更新: 2026-03-14 | 作者: 老王

🎯 会说话的积分管理助手 - 支持语音记账、语音播报、音频识别

管理孩子家庭课业积分系统,具备完整的语音交互能力: - 🎤 语音输入 - 发送音频消息自动识别并记账 - 🔊 语音输出 - 积分变动自动语音播报鼓励 - 📊 自动统计 - 实时生成积分报表 - 🏆 正反馈强化 - 语音鼓励增强学习动力

✨ 核心语音能力

🎤 语音输入(ASR 语音识别)

  • 支持发送音频消息自动识别并记账
  • 使用 SenseAudio ASR 高精度语音识别
  • 支持多种音频格式:OGG、WAV、MP3、M4A
  • 自动识别中文普通话,支持方言增强

使用示例:

[发送音频消息] "学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
→ 自动识别 → ✅ 添加积分

🔊 语音输出(TTS 语音合成)

  • 积分变动自动语音播报鼓励
  • 使用 SenseAudio TTS 高质量语音合成
  • 默认童声 child_0001_a,亲切活泼
  • 每日积分日报自动语音播报

播报示例:

✅ 获得 10 积分
🔊 "太棒啦!获得 10 积分,继续加油哦!"(童声播放)

🆕 v1.2 更新亮点

🔊 使用 SenseAudio TTS - 替换 edge-tts,使用 SenseAudio HTTP 接口

核心改进

  • ✅ 使用 SenseAudio HTTP TTS(无需复杂依赖)
  • ✅ 默认童声 child_0001_a,更适合儿童学习场景
  • ✅ WAV 格式,系统原生支持
  • ✅ 自动检测音频播放器

技术细节

// 使用 SenseAudio TTS(童声)
const TTS_SCRIPT = path.join(WORKSPACE, 'skills/kid-point-voice-component/scripts/tts.py');
const cmd = `python3 "${TTS_SCRIPT}" --voice child_0001_a --play "${text}"`;

🆕 v1.1 更新亮点

🔊 TTS 语音播报优化 - 解决长文本语音截断问题,分离阅读文案和语音文案

核心改进

  • ✅ 新增 generateTTSContent() 函数,生成适合朗读的纯文本文案
  • ✅ 分离 feishuMessage(带格式)和 ttsContent(纯文本)
  • ✅ 定时任务自动播放语音播报
  • ✅ 语音内容清晰易懂,无符号干扰

技术细节

// TTS 文案示例
"2026-03-13 积分日报。今天收入 5 分。汉字抄写 2 分,口算题卡 2 分,英语描红 1 分。
当前余额 107.3 分。距离 400 分上限还有 292.7 分。今天表现不错,继续加油!"

🎯 触发方式

文字消息

  • 记账:消息以"学习积分"开头
  • 消费:消息以"积分消费"开头
  • 查询:消息包含"今日积分"、"本周积分"、"本月积分"
  • 改规则:消息以"修改规则"开头
  • 图片:自动识别并存档学习相关图片

🎤 语音消息(音频文件)

  • 直接发送音频 → 自动识别并记账
  • 音频格式支持: OGG、WAV、MP3、M4A
  • 识别引擎: SenseAudio ASR(深度理解模型)
  • 识别后处理: 自动提取积分任务并计算

语音消息示例:

[发送 5 秒音频] "学习积分 今天完成了汉字抄写 2 课,默写对了 5 个"
↓ 自动识别
✅ 识别结果:汉字抄写 2 课 (+2 分), 汉字默写 5 个 (+5 分)
🔊 语音播报:"太棒啦!获得 7 积分,继续加油哦!"

积分规则(默认)

🎒 学习任务

任务 基础分 说明
汉字抄写 1 分/课 每日 1-2 节课
汉字默写 1 分/个 不重复积分
口算题卡 1 分/篇 全对额外 +1 分
英语描红 1 分
ABC Reading 3 分 每日 2 篇,自主完成翻倍 6 分
复述学习内容 1-2 分 10 分钟内 1 分,超过 2 分
跳绳 最多 3 分 完成 350 个 1 分 +1 分钟 110 个 1 分 +1 分钟 117 个 1 分

🏠 生活习惯

任务 分数
自主洗澡 1 分
自己换居家服 1 分
整理书包 1 分
睡前主动洗漱 (10 点前) 1 分

💡 特殊奖励

事项 分数
学校表扬/奖状 20-50 分

⚠️ 限制

  • 每月上限:400 分
  • 1 分 = 1 元
  • 随时得分随时花

📝 记账规则

自动记账

  • 文字消息:以"学习积分"开头自动识别
  • 语音消息:发送音频自动识别并记账
  • 智能解析:自动提取任务名称和数量

调账规则

  • 余额只增不减:日常记账只记录收入,不删除历史数据
  • 消费单独记录:以"积分消费"开头,记录支出
  • 错误修正:通过调账记录修正,不删除原始记录
  • 余额追踪balance.md 文件追踪实时余额

记账示例

✅ 正确:
"学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
"学习积分 跳绳 350 个,1 分钟跳了 110 个"
[音频] "学习积分 自主起床,自己收拾书包"

❌ 错误:
"今天写了汉字"  ← 缺少"学习积分"前缀
"汉字抄写 2 课"  ← 缺少触发词

📊 数据存储与调账

文件结构

workspace/kids-points/
├── balance.md         # 💰 余额追踪(最准确)
├── config/
│   └── rules.json     # 积分规则配置
├── daily/             # 每日积分日报
│   ├── 2026-03-14.md
│   └── ...
├── monthly/           # 每月账本
│   ├── 2026-03.md
│   └── ...
└── archive/           # 图片存档
    └── YYYY-MM-DD_描述.jpg

💰 余额管理

balance.md - 余额追踪文件(最准确的数据源)

字段 说明
当前余额 实时余额,所有收入 - 支出
余额历史 每笔变动的完整记录
调账记录 修正错误的记录,不删除原数据

调账原则: 1. ✅ 只增不删 - 历史数据永不删除 2. ✅ 调账修正 - 错误通过调账记录修正 3. ✅ 余额优先 - balance.md 是最准确的余额来源 4. ✅ 日报同步 - 日报从 balance.md 读取余额

调账示例

# 积分余额追踪

## 当前余额

**104.3 分**

_更新时间:2026-03-14_

## 余额历史

| 日期 | 操作类型 | 变动 | 余额 | 说明 |
|------|----------|------|------|------|
| 2026-03-09 | 初始化 | +100.3 | 100.3 | 系统初始化 |
| 2026-03-09 | 收入 | +1 | 101.3 | 早上自主起床 |
| 2026-03-10 | 支出 | -2 | 99.3 | 两个作业未按时 |
| 2026-03-12 | 调账 | +5 | 104.3 | 修正:学校表扬加分 |

定时任务

  • 每日 00:00 - 自动生成昨日积分日报(最终版)
  • 每日 07:00 - 发送日报到群聊 + 🔊语音播报
  • 每日 22:00:统计当日积分,生成日报
  • 每周五 20:00:生成周报,清算本周积分

💬 交互示例

文字交互

记账

学习积分 今天完成了汉字抄写 2 课,默写对了 5 个,口算题卡 2 篇全对,跳绳 350 个,自己洗澡了

消费

积分消费 买零食花了 20 分

查询

今日积分
本周积分
本月积分

改规则

修改规则 汉字抄写改为 2 分每课

🎤 语音交互(音频消息)

场景 1: 发送音频记账

[用户发送 5 秒音频]
🎤 "学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
        ↓
🤖 ASR 识别 → "学习积分 今天完成了汉字抄写 2 课,口算题卡 2 篇全对"
        ↓
✅ 添加积分:汉字抄写 +2 分,口算题卡 +2 分
        ↓
🔊 TTS 播报:"太棒啦!获得 4 积分,继续加油哦!"(童声)

场景 2: 查询积分(语音回复)

[用户发送音频]
🎤 "今天多少分了?"
        ↓
🤖 ASR 识别 → 自动判断为查询意图
        ↓
📊 查询今日积分:12 分
        ↓
🔊 TTS 播报:"今天已经获得了 12 积分,当前余额 116.3 分,继续加油!"

场景 3: 日报语音播报

每天 07:00 自动发送:
📤 飞书消息:积分日报(图文)
🔊 语音消息:"2026-03-14 积分日报。今天收入 15 分...当前余额 120.3 分..."

相关文件

  • scripts/parse-input.js - 解析自然语言输入
  • scripts/calculate-points.js - 计算积分
  • scripts/generate-report.js - 生成报表
  • scripts/generate-daily-report.js - 生成每日日报(含 TTS 文案)
  • scripts/send-daily-report.sh - 定时任务脚本(发送飞书 + 语音播报)
  • config/rules.json - 积分规则配置

🎤 语音交互技术细节

🔊 语音输出(TTS)

TTS 文案生成

日报生成时会自动生成两个版本的文本:

字段 用途 内容特点
feishuMessage 飞书消息 带 markdown 格式、表格、emoji,适合阅读
ttsContent 语音播报 纯文本,无符号,适合朗读

TTS 配置

配置项 说明
引擎 SenseAudio HTTP TTS 高质量语音合成
声音 child_0001_a 童声,亲切活泼
格式 WAV 系统原生支持
采样率 32000 Hz 高质量音频
播放 自动检测播放器 aplay > paplay > ffplay

🎧 语音输入(ASR)

ASR 识别流程

音频文件 → SenseAudio ASR → 文本 → 积分解析 → 添加积分

ASR 配置

配置项 说明
引擎 SenseAudio HTTP ASR 高精度语音识别
模型 sense-asr-deepthink 深度理解模型
支持格式 OGG, WAV, MP3, M4A 常见音频格式
语言 中文普通话 支持方言增强
响应 JSON 返回识别文本

支持的音频场景

场景 示例 处理
记账 "学习积分 今天完成了..." 识别 → 解析 → 添加积分
查询 "今天多少分了?" 识别 → 判断意图 → 查询回复
消费 "积分消费 买零食..." 识别 → 解析 → 扣除积分
闲聊 "真棒!" 识别 → 友好回复

TTS 文案规则

  • 包含内容:总收入、总支出、净收益、当前余额、距离上限、鼓励短语
  • 排除内容:表格、markdown 符号、emoji、详细明细列表
  • 语音风格:使用 child_0001_a(童声,亲切活泼,适合儿童)
  • 音频格式:WAV(系统原生支持)

示例

TTS 文案输出

2026-03-13 积分日报。昨天收入 10 分。汉字抄写 2 分,口算题卡 3 分,跳绳 5 分。净赚 10 分。当前余额 112.3 分。距离 400 分上限还有 287.7 分。昨天表现不错,继续加油!

定时任务流程

# 每日 22:00 执行
1. 运行 generate-daily-report.js → 生成日报 + feishuMessage + ttsContent
2. 发送飞书消息(使用 feishuMessage)
3. 播放语音播报(使用 ttsContent + edge-tts)

📦 ClawHub 发布准备

发布信息

# 登录 ClawHub
clawhub login

# 查看当前用户
clawhub whoami

# 发布技能(从 workspace 根目录执行)
clawhub publish ./skills/kids-points 
  --slug kids-points 
  --name "孩子积分管理" 
  --version 1.1.0 
  --changelog "v1.1: TTS 语音播报优化,分离阅读文案和语音文案,解决长文本截断问题"

🔧 系统依赖

运行环境: - Node.js v18+ (技能主体) - Python 3.8+ (语音处理)

Python 依赖

pip3 install requests  # SenseAudio TTS/ASR HTTP 接口

音频播放器(至少一个): - aplay (ALSA) - ✅ 推荐,WAV 原生支持 - paplay (PulseAudio) - 支持多种格式 - ffplay (FFmpeg) - 功能最强

安装音频播放器

# Ubuntu/Debian
sudo apt-get install alsa-utils    # aplay
sudo apt-get install pulseaudio    # paplay
sudo apt-get install ffmpeg        # ffplay

🔗 依赖技能

核心功能(无需额外技能)

文字记账、查询、统计等功能可以直接使用,无需安装额外技能!

语音功能(可选增强)

技能 用途 必需 说明
kid-point-voice-component TTS 语音合成 ⚠️ 可选 语音播报、鼓励语音
kid-point-voice-component ASR 语音识别 ⚠️ 可选 音频消息识别
schedule-manager 定时任务 ⚠️ 可选 自动日报
feishu-doc 飞书文档 ⚠️ 可选 日报存储

💡 提示: - 没有 kid-point-voice-component/asr 也可以使用所有文字功能 - 安装后可解锁语音输入/输出功能 - SenseAudio 目前基本免费,推荐申请使用

🔑 API 配置

需要配置 SenseAudio API Key

// ~/.openclaw/openclaw.json
{
  "env": {
    "SENSE_API_KEY": "sk-xxx..."
  }
}

获取 API Key: 1. 访问 https://senseaudio.cn 2. 注册账号 3. 创建应用获取 API Key 4. 添加到 openclaw.jsonenv 配置


🎯 语音能力说明

支持的语音场景

场景 输入 输出 说明
音频记账 音频消息 语音确认 自动识别并添加积分
语音查询 音频消息 语音回复 查询今日/本周/本月积分
日报播报 定时触发 语音播报 每天早上 7 点自动播放
鼓励反馈 积分变动 语音鼓励 实时播放鼓励语音

语音特性

  • 童声播报 - 使用 child_0001_a 童声,亲切自然
  • 智能识别 - SenseAudio 深度理解模型,准确率高
  • 多格式支持 - OGG、WAV、MP3、M4A 自动识别
  • 实时反馈 - 积分变动立即语音反馈
  • 自动播报 - 日报自动语音播放 | schedule-manager | 定时任务调度 | ✅ 是(自动日报) | | feishu-doc | 飞书消息发送 | ✅ 是(飞书集成) |

配置清单

环境变量(可选):

export WORKSPACE="/home/wang/.openclaw/agents/kids-study/workspace"
export POINTS_DIR="/home/wang/.openclaw/agents/kids-study/workspace/kids-points"
export TZ="Asia/Shanghai"

定时任务(cron 示例):

# 每日 22:00 生成积分日报
0 22 * * * cd ~/.openclaw/agents/kids-study/workspace && bash skills/kids-points/scripts/send-daily-report.sh

测试清单

  • [x] 积分记账功能正常
  • [x] 积分消费功能正常
  • [x] 今日积分查询正常
  • [x] 日报生成功能正常
  • [x] TTS 语音播报清晰可懂
  • [x] 长文本无截断问题
  • [x] 定时任务脚本可执行

文件清单

skills/kids-points/
├── SKILL.md                    # 技能说明(必需)
├── README.md                   # 使用文档
├── USAGE.md                    # 详细用法
├── config.md                   # 配置说明
├── package.json                # Node.js 依赖
├── agent-handler.js            # OpenClaw 集成入口
├── config/
│   └── rules.json              # 积分规则配置
└── scripts/
    ├── index.js                # 命令行入口
    ├── handler.js              # 主处理器(含 TTS 调用)
    ├── parse-input.js          # 输入解析
    ├── generate-daily-report.js # 日报生成(含 TTS 文案)
    ├── send-daily-report.sh    # 定时任务脚本
    ├── daily-summary.js        # 每日总结
    └── handle-image.js         # 图片处理

升级说明

从 v1.0 升级到 v1.1: 1. 更新 generate-daily-report.js(新增 TTS 文案生成) 2. 更新 send-daily-report.sh(使用 ttsContent 播放语音) 3. 确保安装 kid-point-voice-component 依赖:pip3 install requests


最后更新:2026-03-13 | 维护者:老王


📚 完整文档索引

文档 用途 说明
RULES.md 📋 完整规则说明 包含所有积分规则、记账规则、调账规则、语音交互规则
SKILL.md 🔧 技能技术文档 技能架构、API、配置、依赖
README.md 🚀 快速入门 快速了解核心功能和使用方法
USAGE.md 📖 使用指南 详细使用说明和示例
CONFIG.md ⚙️ 配置说明 规则配置详解

推荐阅读顺序: README.md → RULES.md → USAGE.md → SKILL.md


⚠️ 重要依赖提示

本技能严重依赖 SenseAudio 语音能力,请确保已安装:

  1. kid-point-voice-component - TTS 语音合成(语音播报)
  2. kid-point-voice-component - ASR 语音识别(音频输入)
  3. requests - Python HTTP 库
  4. 音频播放器 - aplay/paplay/ffplay
  5. SENSE_API_KEY - API 密钥配置

📋 详细安装说明:查看 DEPENDENCIES.md