开发者为女儿搭建开源拼读阅读应用 Yara Reads
Show HN: Open-source early-reading reader with phonics help
Yara Reads 是一款开源儿童拼读阅读应用,单击任意单词即可逐音节拼读并朗读。故事通过 npm run check 按发音(而非拼写)逐词校验,确保只含孩子已学发音;家长可经 MCP 接入 Claude、ChatGPT 等 Agent 生成新故事并自检。
为刚学拼读的孩子设计,单词按发音拆解并能逐词校验;家长可接入 MCP Agent 在孩子已学发音范围内写新故事。
Yara Reads
试读:yarareads.finereli.com —— 免费,无需注册。
面向刚学会自然拼读、需要真实阅读内容的孩子的阅读 App。故事中的每个单词都可以用他们已经掌握的发音拼读出来。遇到不会的词,点一下,字母音按钮就会出现在旁边。
我为女儿 Yara 做了这个应用。她六岁,喜欢亮晶晶、魔法和龙。她已经通关了 Teach Your Monster to Read,我却找不到适合她继续读的下一本书,既要有好故事,又全部用她能拼读出来的词写成。第一个故事由她哥哥 Tom 撰写,应用的结构也便于以后加入更多故事。
不同之处
- 帮助就在词上。点任意单词:单个字母下方有小点,像 "sh"、"ee" 这类字母对下方有小条,拆分元音如 a_e 之间用弧线相连。一个喇叭按钮依次亮起每个音,然后读出整个单词。它不会替孩子整页朗读。
- 检查器才是关键。故事会逐词对照孩子已学的发音来检查,依据是发音而非拼写(如果孩子还没学过拆分 a,那么 "cake" 就不通过)。
npm run check会在故事中出现孩子读不出的词时判为不通过。 - 自带书库。接入你自己的智能体(Claude、ChatGPT,任何支持 MCP 的都可以),它就会用孩子已学的音拼写故事,或者录入你自己拥有的书。它会校验每个词、添加插图,并把结果展示给你。只有你的账号能看到。
- 由你设定孩子已学的内容。可以开关发音和不规则词。含有未学发音的词会出现点状下划线,新发音以紫色显示。
自己运行
它是一个 Cloudflare Worker,包含静态资源,数据用 D1,图片用 R2。没有构建步骤。如果你是懂技术的爸爸(或妈妈),家中有正在学阅读的孩子,希望你把它拿来为己所用。
git clone https://github.com/finereli/yarareads && cd yarareads npm install npx wrangler d1 create yara-reads # put the database_id in wrangler.jsonc, with your account_id npx wrangler r2 bucket create yara-reads-pictures npx wrangler d1 migrations apply yara-reads --local node tools/lexicon-asset.mjs # the word dictionary the worker uses node tools/push.mjs --local --inventory --images --owner dev # load the stories (--owner: books from home, if you have any) npx wrangler dev
然后 npm run deploy(编辑 wrangler.jsonc 中的 routes 以使用你的域名;部署需要字典步骤,脚本会自动为你执行)。
注意事项:
- 未登录也能使用。这就是完整的应用,发音和学习进度都保存在浏览器里。账号(以及智能体)使用
login.finereli.com,它只服务于我自己的应用。要自行管理账号,请换成你自己的登录方式:public/login.js和src/verify-login.js是唯一涉及此事的文件。 - 这些发音是我的声音,专门为字母块录制,并不包含在本仓库中。没有它们,字母块仍然会亮起但保持静音。用
tools/sounds-record.mjs录制你自己的发音(见顶部注释)。单词由 Cloudflare Workers AI 朗读,因此部署需要开通该功能的账号。 - 写一个故事:复制
content/stories/toby-1.json,编辑各页内容,运行npm run check。它会告诉你孩子目前还不能读的每一个词。永远不要为了通过检查而放宽发音设置——改写故事本身。docs/vocabulary.md列出了接下来要教的内容。 - 插图:
docs/illustration.md和tools/illustrate.mjs介绍了这些插图的制作方式。 - CLAUDE.md 解释了所有部分的协作方式,供你或你的智能体阅读。
- 使用数据:
node tools/stats.mjs。
许可证
代码:MIT(LICENSE)。故事和插图:知识共享署名 4.0(content/LICENSE.md),尽情改编,并署名 Yara Reads 及原作者。第三方资料:NOTICE.md。
来源:Hacker News · github.com
