免费额度
超出以下额度后,前端会引导用户订阅。真正的强制拦截在 Cloud Functions(checkAndConsumeQuota)里做,这里只是配置来源。
免费 AI(默认对接,按下面顺序依次尝试)
2026-08-29 新增:之前"哪个 AI 优先用"完全写死在代码里,现在可以在这里临时禁用某个供应商、或者改它的接口地址/模型名——不需要重新部署代码,保存后最多 5 分钟生效(这几个函数本身有内存缓存,避免每次改写内容都去读一次 Firestore)。密钥(API key)本身不在这里管理,一直只存在 Google Secret Manager 里;这里"已配置密钥"一栏只是显示有没有设置过,不会显示密钥内容。
2026-08-29 再更新:免费供应商自己也有速率限制(比如 Groq 官方免费层大约 30 次请求/分钟、6000 多 Token/分钟;OpenRouter 免费模型大约 20 次请求/分钟、50 次/天),如果不管这些限制、只顾着往下发,轻则这一次调用被对方拒绝,重则可能被对方临时封锁这把 key。这次给所有供应商(含付费的)都加了"每分钟请求数(RPM)"和"每分钟 Token 数(TPM)"两个可选限制,以及原来就有的"总量限额(次数+每天/每周/每月)"——三者互相独立,命中任何一个都会跳过这个供应商、改用下一个(免费的都不满足才会退到付费的兜底,逻辑跟以前一样,只是多了两道更细的速率保险丝)。已经按 Groq/OpenRouter 官方文档给的数字预填了推荐值,你也可以按实际情况调整;填 0 或留空 = 不限制这一项。
付费 AI(兜底,可设额度上限+速率限制)
只有上面免费的几个全部未配置/被禁用/调用失败/命中速率限制,才会退到这里——正是之前"几篇新闻改写就跑掉一百多加币"的兜底项。总量限额是硬拦截:一旦这个周期内调用次数达到上限,即使免费的全部失败,也不会再调用付费 AI(这条内容会被标记生成失败,而不是继续往下扣费)。留空或填 0 = 不限制。RPM/TPM 一般不需要给付费供应商设置(各家付费套餐额度差异很大),留空即可。
开通地区
勾选的市/县,系统每天会抓取当地新闻或热门话题总结。用户端会按自己设置的地区(或 IP 粗略定位)就近匹配;不在下面名单里的城市,用户可以在设置页点"申请开放",也可以直接在下面手动添加任意国家/城市(不局限于这棵树)。
手动添加其他地区
树上没有的国家/省/市,都可以在这里直接输入名字添加——只要和用户设置页里手动输入的名字一致(大小写、空格不影响匹配),就能正确匹配上,比如 "Moose Jaw"。
立即抓取
2026-08 起,"抓取原始内容"和"AI 改写成多语言等级版"拆成了两步(见 PRD"内容生成与成本优化架构"):这个按钮会先抓取 + 去重复(很快,不调用 AI),再从库存里挑最老的未生成条目自动改写(受下面"每日抓取上限"约束)。如果只想单独攒库存、不消耗生成配额,用下面这个按钮;库存攒够之后,也可以去"原始内容"标签页手动挑分类批量生成。第一次点击、且还没配置过任何信息源时,会自动用一批验证过的默认 RSS 源(见下面"各频道信息源")。
抓取公有领域经典("世界名著"分类)的原文
书目表现在是动态的(默认 6 本 + 下面"扩充书目"新增的),从 Project Gutenberg 抓取原文,不调用 AI(几秒钟就能跑完)。每章会作为一条"原始内容"进"原始内容"标签页——去那里点"生成未生成的 N 节",一节一节生成;最高等级(原文语言)看到的是完整原文本身,不是缩写。
如果某本书是在"内容完整性修复"之前生成的旧版本(比如只有寥寥几页就概括完整本书),先点"重置这一本"删掉旧内容和旧章节,再点上面"抓取这一本的原文"重新来一遍。
清理"世界名著自动索引"加入的非正文条目
2026-08-30 修复:之前的自动索引没有过滤,把不少"书目索引/参考书目/某某全集分卷(Vol. 2 of 4 这类)/书信集"这类不是"一本书正文"的 Gutendex 目录条目也当成世界名著收录了进来(这也是书名看起来特别长的原因)。已经加了过滤,以后不会再新增这类条目;这个按钮用同一套规则一次性清理已经进了书目表的旧条目——只清理"自动索引"加的,绝不会碰默认 6 本或你自己手动搜索确认加入的书。点一次会先只显示会清理哪些(不会真的删),确认没问题后再点一次真正执行。
扩充"世界名著"书目(不需要改代码)
用书名/作者搜索 Gutendex(Project Gutenberg 官方目录数据的公开只读镜像,免费、不调用任何 AI);只有 Gutenberg 自己收录的书才会出现在结果里,版权判断完全依赖 Gutenberg 的收录标准——这跟默认 6 本当初的核实逻辑是一回事,不是额外风险。挑一本点"使用这本"会自动填好下面的表单,你只需要补一个书目 key、体裁、以及(可选的)中/法/越标题翻译,确认无误后点"确认加入书目",不需要重新部署代码就能在上面"选择书目"里选到。
"世界名著"自动索引(自动发现新书目,不自动生成正文)
打开后,云函数会按你设置的频次,自动去 Gutendex 按热门度翻页扫描,把还没收录、且 Gutendex 自己标记为公有领域的书自动加进上面的书目表(体裁是按书目自带的标签粗略猜的,猜错了可以用上面"从书目表移除"删掉重加)。这一步只负责"发现+登记",完全不调用任何 AI、不产生费用;新书要真正变成可读内容,仍然需要在上面"抓取这一本的原文"和"原始内容"标签页里手动生成——这是刻意保留的人工确认点,避免自动收录的书未经检查就直接批量消耗 AI 改写额度。
补齐旧内容的 A1-C1 等级
CEFR 等级从三档扩到五档(A1-C1)之后,新生成的内容自动就是五档齐全的;但在这次改动之前已经生成好的旧文章/图书,当时只写了三档,"更难/更简单"按钮找不到 A1 或 C1 是因为那两档确实还没生成,不是 bug。点这个按钮会扫描已有内容,只给缺档的文章/图书补写缺的那几档(已经有的档位不会重新生成,不浪费调用)。内容比较多时可能要点好几次才能扫完,每次都会接着上次扫到的位置继续,不会重复扫。
修复"资讯"被误标成"新闻"的旧内容
医学健康/汽车/机器人与人工智能/建筑与设计/零售与消费/金融/教育这几个"资讯"分类,之前抓取流水线一律写成了 type:"news",导致前台"资讯"导航页一直查不到真实生成的内容(只有演示数据)。这个按钮把已经生成、分类其实属于"资讯"的旧内容改回 type:"info",只需要点一次(内容多的话可能要点几次,直到提示"已经全部处理完");之后新抓取的内容会自动分类正确,不需要再点这个。
自动抓取时间(可以勾选一天里的多个整点)
云函数每小时都会醒来检查一次,命中下面勾选的整点才会真正跑一次抓取+改写流水线;改这里不需要重新部署代码,云函数下次整点检查时生效(最多等 1 小时)。每次流水线本身有独立的时间预算(8 分钟),分类/地区比较多时,只勾 1 个整点可能不够把当天配额都跑完——建议错开勾 2~4 个整点(比如 3、11、19 点),一天多跑几轮。时区以云函数部署时区为准(默认 America/Regina)。
各频道信息源 + 每日抓取上限
每个频道下面的圆角按钮是推荐信息源,点一下就能快速换用/添加;也可以直接在输入框里手动改成任何 RSS 地址。如果当天源里没有那么多新内容,实际抓取数量会小于上限,但绝不会超过(避免浪费资源)。
每日图书生成上限("原创短篇")
⏸ "原创短篇"(AI 自己构思的虚构短篇小说)的生成功能已暂停,节省 AI 调用额度——下面这个数字暂时不会生效(每日自动生成、后台"立即生成一条"都已经在代码里直接拦截)。这跟"世界名著"无关,"世界名著"改写的是真实原文,不受影响,照常可用。如需恢复"原创短篇"生成,需要改代码(AI_ORIGINAL_STORIES_ENABLED)并重新部署。
最近抓取记录
浏览原始内容
2026-08 新增:抓取原始内容和 AI 改写成多语言等级版是两个独立的步骤(见"信息抓取"标签页的说明)。这里按分类/地区/图书分别浏览抓到的原始条目——勾选后可以批量删除,或者点"生成未生成的 N 条"让 AI 批量改写;生成过程中这个列表会实时看到状态从"待生成"变成"已生成"(不用手动刷新)。新闻类原始条目带着抓取时间;图书章节按原书顺序编号。
按频道查看已生成的内容
"查看"能看到这条内容已经生成了哪些语言/等级;"删除"直接从 Firestore 里移除;"生成"会立即为这个频道抓取/构思并改写一条新内容,不受每日配额或定时任务限制,方便随时补内容测试。2026-08-29:图书按具体分类查看,不再把"世界名著"(真实经典)和"原创短篇"(AI 虚构故事)混在一起列。
"紧急补词"会重试所有用户在前台加入生词本、但还没成功补上释义的词(正常情况下加入的瞬间后台就会自动补,这个按钮是保险丝)。
词库管理(按字母顺序系统性收录)
2026-08 重新设计:以前"补充词库"是让模型"随便给几个新词",模型天然会反复推荐最常见的那一小撮词,越往后新词命中率越低——这正是"好多天才抓到 300 个词"的根因。现在改成按字母顺序系统性抓取:每个(语言,等级)都记着"最后抓到的词",点下面的圆圈会要求模型"从这个词之后按字母顺序继续",保证扫过整个字母表,而不是在常见词附近打转。圈内第一行是等级代号,第二行是"已收录 / 总计",点一下会从记录的位置继续抓一批(默认 100 个),可以重复点,直到扫到字母表末尾(会自动提示"已扫完,下次点击会开始新一轮",能补上模型这一轮漏掉的词)。
单词列表
按语言 + CEFR 等级筛选已经收录的词条,或者两个都选"全部"看整个词库。
成语 / 习语 批量生成
跟词库爬取类似,但不需要按字母顺序系统性扫描——直接请求模型给一批还没收录过的常用成语/习语,每条都带一个 1-100 的常用度评分(前台"学习 → 成语"页默认按这个分数从高到低展示)。
情景对话标签数据
⚠️ 110 个二级标签的原始中英双语命名文本在此前一次上下文压缩中丢失了,当前是占位文本(清楚标成"待补充"),不是编造的假标签。等用户重新提供完整清单后,会更新 functions/index.js 里的 SCENARIO_TAXONOMY 常量,管理员再点一次下面这个按钮(merge 覆盖,不影响已生成的对话内容)即可刷新成真实标签。
修复历史生成内容(一次性数据修复)
2026-08-29 修复了一个 bug:之前点"生成"后台会提示"生成成功",但内容其实被写进了一个写错的字段,前台/后台哪里都找不到(代码层面的问题已经修好,新生成的不会再有这个问题)。如果你在这次更新之前生成过对话,点这个按钮把那批内容"搬"到正确的位置——已经是正常状态的内容点了也不会有变化,可以放心点,不会重复生成也不会多消耗 AI 额度。
按标签生成对话
每个标签下固定有 9 条"高频核心对话" + 21 条"标准扩展社交对话" + 30 条"进阶拓展对话"共 60 个位——圆圈变绿表示这个位已经生成过至少一个语言/等级版本。选好标签 + 目标语言/等级后,点某个难度层下面的"生成"按钮,会挑这一层里还没生成的位、按顺序批量生成。
选好语言后点"生成":后台会自动把 A1~C1 全部 5 个等级都生成好,不需要再逐个等级分别点。
标签申请审核
用户在前台"情景"页搜索标签找不到匹配时可以"申请新增",这里通过或驳回;通过时需要指定归入哪个一级分类。
母语(界面语言)
用户可以选哪些语言作为自己的母语/界面语言。默认只勾选了已经确定的 4 个,你可以再勾选更多——新勾选的语言如果还没有人工翻译界面文案,可以点右边的"生成界面翻译"用 AI 自动翻译一份(可以之后再人工校对)。
目标学习语言
用户可以选哪些语言作为自己要学习的语言。默认只勾选了已经确定的 3 个,新增语言意味着需要新的内容抓取/生成配置(RSS 源、CEFR 分级改写 prompt 等),只是打开这个开关本身不会自动生成内容。