早上7点,手机震了一下。WhatsApp里先弹出一张长图仪表盘,紧接着是一条语音。图上是当天的头等任务、工作线索和项目状态,语音把同一块板子从头讲一遍,开口先来一句新的问候。
![]()
这是一座微型电台,听众只有一个人。作者利用业余时间把它搭了出来,并在2026年10月17日以 Chucka(又名 MorningDashboard)的名字开源。
名字来自澳洲。Chucka 在当地是好几种知名凤头鹦鹉共用的叫法,作者喜欢这层澳洲味和它带出的顽皮气质。凤头鹦鹉很懂得怎么让人听见自己,这套小自动化干的事也差不多:每天早上准时开口,报一遍当天的安排。它描述自己做什么,Chucka 则给了它一副吵闹的性格。
出发点很简单:需要的信息本来就在 Obsidian 里,不需要再开一个应用去查,他想让信息自己找上门来。
一张图加一条语音
每天早上07:00,Chucka 往作者自己的 WhatsApp 发两样东西。
第一是仪表盘图片。Python 和 Pillow 直接从 Obsidian 库里的实时文件渲染出来,把当天必须做的事、工作线索和项目当前状态汇到一张图上。
第二是一条 WhatsApp 语音气泡,大约170词,时长60到70秒。它把同一块板子总结一遍,每天的问候语都是新的。脚本由大模型每天早上现写,再交给文本转语音模型生成听起来自然的音频。
流程刻意做得直白:Chucka 读取库,生成仪表盘,把仪表盘数据塞进提示词。脚本生成器还会拿到来自 wttr.in 的墨尔本天气。opencode 命令行工具跑大模型并写出讲稿,音频渲染完成后用 ffmpeg 转成 Ogg/Opus,再经本地 OpenWA 网关发到 WhatsApp。
一个 macOS launchd 任务在早上7点启动整个流程。从开始到发出,一次完整运行大约两分钟。
找一把有早晨劲头的声音
第一版根本没有语音,后来才加上口播摘要。最早的声音来自 macOS 的 say 命令,活是能干,但把这叫“早晨电台”多少有点抬举。
接着是找声音。作者用 VoiceStudio 搭了本地声音克隆,建了若干声音档案,试听了三份不同劲头的样本,选中一个命名为 Pepper 的声音档案。他把语速提到约1.08倍,完整排练了一遍,又调整提示词,让脚本里能带上行内的情绪标记。
找到一把有早晨劲头的声音,是最难的一步。
Chucka 用三级语音链兜底:首选是跑在作者 Mac 本地的 VoiceStudio / OmniVoice;这个应用不可用,就退到云端的 Gemini TTS;再失败,macOS say 是最后一道。最后这个选项很机械,但靠得住。
剩下八成是可靠性
从模型里弄出音频,只是每天早上发出一条有用消息的一部分,其余功夫都在保证它真的送到。
Chucka 通过本地 OpenWA 网关发送。作者踩过一个坑:状态显示 sent 只代表消息进了队列,不代表已经送达。在抓到一次无声的丢件之后,他把运行器改成等到 delivered 或 read 确认再收工。当你靠一条消息开启一天时,“已发送”和“已送达”不是同义词。
开源本身也是一种倒逼。只在自己机器上跑的脚本,可以靠一堆说不清的假设蒙混过去;放进仓库给别人用,就需要更清楚的安装步骤,代码和自己的配置之间也要划出更干净的边界。公开这件事,推着他把边角收拾整齐。
Chucka 不是产品发布,也不代表他解决了个人效率问题。它只是一个人把已经存在的信息自动化,再给它配上一张脸和一把声音。事实来源仍然是 Obsidian,简报只是更方便地迎接一天的方式。
眼下他会继续每天用 Chucka,继续打磨声音和它的劲头。重点从来不是造最大的系统,而是做一个小到能收尾、有用到愿意留着、整齐到可以分享的东西。
Chucka 以 MIT 许可证开源。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.