FanficWizard:免费额度、积分付费、内容安全俱全的生产级 AI 写作工具,3 天上线
一个 AI 同人小说生成器:流式输出、刷不动的免费额度、用积分写整章并接着续写、两层内容安全、三个支付通道。基于我自己的可复用模板,用 Claude Code 开发,从第一次提交到上线 3 天。
- 角色
- 独立完成 —— 产品、SEO、设计、全栈与 AI 工程、支付、运营
- 技术栈
- Next.js 16React 19TypeScriptTailwind CSS 4PostgreSQL (Neon)Prisma 7Better AuthZodVitestCloudflare TurnstileWaffo · PayPal · StripeVercelClaude Code
概览
- 挑战: 做一个真正收钱的 AI 产品,而不是 Demo:免费额度不能被刷,模型花费不能失控,内容规则要严到支付平台接受,一个人也要能收到钱。
- 方案: FanficWizard,AI 同人小说生成器。免费短场景不用注册;用积分写整章,还能接着续写。底层是我自己的 AI 工具站模板 Novalith。
- 结果: 2026 年 10 月 23 日开工,10 月 25 日在 fanficwizard.com 上线;327 个自动化测试通过;三个支付通道在测试环境端到端跑通。刚上线,还没有流量和收入数据。
挑战
写同人的人常常卡在某一场戏;看同人的人想看自己 CP 的某个梗,却没人写过。他们找到的免费工具写得短、角色口吻不像,续写两段就忘了设定。
要把它做成产品,就会遇到所有生产环境 AI 功能都要回答的问题:
- 免费额度要够试用,但不能让脚本把模型预算刷光。
- 模型花费要有按真实 token 计算的每日硬上限,而不是估算。
- 内容规则要同时管住请求和生成结果——支付平台不接受会写露骨内容的工具。FanficWizard 只写青少年级(Teen)内容,绝不写涉及未成年人的恋爱或性内容。
- 收款:个人开发者不能只押一个支付平台。
- 被找到:要能被搜索引擎和 AI 助手收录,赚钱之前固定成本接近零。
方案
首页就是工具。 作品、角色或 CP、可选的设定、最多 3 个梗、基调、人称、长度。故事边写边显示,结尾附 AO3 格式的标题、分级、简介和标签。
| 免费 | 用积分 | |
|---|---|---|
| 账号 | 不用注册 | Google 登录 |
| 额度 | 每天 3 次 | 每章 1 积分 |
| 长度 | 短场景,约 500 词 | 整章,约 1,500 词 |
| 模型档位 | 便宜模型 | 更好的写作模型 |
| 续写 | — | 在作品库里一章接一章 |
续写不跑偏。 付费章节存进作品库。点“Continue this story”时,模型拿到的是作者写的人设、到目前为止的前情摘要、上一章的结尾,以及可选的“接下来发生什么”。
加工具页 = 加配置。 除了首页,还有读者代入(x reader)生成器、作品目录页和单个作品的落地页。每页有自己的表单、提示词、模型档位、积分价格和 FAQ,背后是同一个引擎。
能运营的后台。 当日花费对比上限;每次生成的记录,失败或被拦截时写明原因;内容拦截;按流量来源看收入;模型通道状态;积分流水。付款方式和模型通道都能在后台开关,不用重新部署。
技术亮点
| 生产环境的问题 | FanficWizard 怎么处理 |
|---|---|
| 加一个工具 | 一个引擎,每页一份配置:字段、提示词模板、模型档位、积分价格、FAQ。加工具页就是加一条配置,构建时用 Zod 校验 |
| 等待输出 | 流式输出;访客可以随时停止;被输出上限截断的结果会被识别并标注 |
| 免费额度被刷 | 每天 3 次,按加盐的 IP 哈希和账号同时计数,前面有 Cloudflare Turnstile;IP 只从可信代理读取,伪造不了;失败的请求不计次数 |
| 不安全的内容 | 两层检查(OpenAI Moderation + 用便宜模型做的分类器):写之前查请求,边写边查结果,约每 400 词一次。命中、出错、超时一律拦截。被拦的文本不保存,积分退回。日志只记阶段、哪一层、什么类别,从不记正文 |
| 模型通道挂了 | 按顺序排列的多个 OpenAI 兼容通道:第一个字出来之前失败就自动切到下一个;连续失败 3 次熔断 5 分钟,状态存在数据库里,多个服务器实例共享;开关和顺序在后台设置 |
| 成本失控 | 调用前按候选通道里的最高价预留,调用后按提供商返回的实际 token 记账;全站每日上限,免费额度另有一个上限 |
| 支付 | Waffo、PayPal、Stripe 三个通道。只有验签通过的 webhook 才发积分,每笔订单只发一次;退款和拒付扣回积分;测试密钥在正式站上发不了积分;每个通道后台可开关;订单记录用户第一次来访的来源 |
| 搜索与 AI 回答 | 服务端渲染;SoftwareApplication + FAQPage 结构化数据由配置自动生成;FAQ 用用户问 AI 的原话(如 "Is there a free AI fanfic generator with no sign-up?");robots 放行 AI 搜索爬虫;构建检查强制执行 |
| 泄露密钥或提示词 | CSP 和安全响应头;公开文件里出现密钥,构建直接失败;输出开始复述系统提示词时立即停止 |
底层是我自己的模板。 上面这些都在 Novalith 里。登录、积分、支付、后台、作品库都是可移除的模块,有脚本逐个删掉再构建来证明。引擎的改动都回到模板;FanficWizard 仓库里只有配置、文案、品牌素材和几处很小的布局调整,下一个站从同一个底座开始。
3 天上线,再修只有生产环境才暴露的问题
从第一次提交到网站上线,FanficWizard 用了 3 天(2026-10-23 至 10-25)。做法和客户项目一样:一份简短的产品规格,每个功能一份书面指令,由 Claude Code 实现,所有改动都要先过 npm run verify(lint、类型检查、测试、许可证检查、构建 + 密钥扫描、SEO 检查)。
| 日期 | 做了什么 |
|---|---|
| 10-23 | 导入模板,写站点配置和文案;修模板问题、安全加固 |
| 10-24 | 接真实模型端到端跑通:免费流式生成、每日额度、露骨请求被拒、Google 登录、付费章节存进作品库 |
| 10-25 | fanficwizard.com 上线;模板加入 Waffo 和 PayPal 支付、后台开关、来源归因、模型通道自动切换;同一天接入 Stripe |
| 10-27 至 10-28 | 新后台、读者代入页和作品页、Google One Tap;三个支付通道在测试环境验证通过 |
有四个问题只有接真实服务才暴露:
- 一个模型提供商对我的账号不可用。 解决办法是不依赖任何一家:网站对接任意 OpenAI 兼容通道,模板加上了按顺序的多通道自动切换、熔断和后台开关。
- 内容审核接口写死了官方地址。 改成可配置的接口地址,先用小脚本验证通过再启用。
- 付费章节被截断——输出上限 2,400 token 不够。上限提到 3,200,提示词要求按时收尾,并加上检测:提供商返回“因长度停止”时记录下来,读者会看到“可能在句中结束”的提示。
- 模板测试写死了演示站内容,新站一跑就失败。现在测试用自己的样例数据,任何站点都能通过。
质量与测试
| 检查 | 结果 |
|---|---|
| 自动化测试 | 327 个通过(Vitest)——内容规则、流式输出、通道切换与熔断、免费额度、积分流水、各支付通道的 webhook、安全响应头、SEO |
| 发布门槛 | npm run verify:lint、类型检查、测试、许可证检查、生产构建、密钥扫描、SEO 检查 |
| 模块可移除 | 脚本逐个删掉可选模块后重新构建 |
| 真实模型 | 免费流式生成、每日额度、露骨请求被拒、登录、付费章节保存 |
| 支付 | Waffo、PayPal、Stripe 在测试 / 沙盒环境:下单 → webhook → 发积分 → 退款扣回 |
结果与边界
| 方面 | 现状 |
|---|---|
| 状态 | 2026-10-25 上线;生产环境已开放付款 |
| 流量与收入 | 太早:还没有流量、用户和收入数据,也还没有真实订单。有数据后再补 |
| 模型自动切换 | 模板里已实现并有测试;线上目前只配了一个通道,备用通道随时可以加一条配置启用 |
| 定价 | 积分包按估算的模型成本定价,实测后再调整 |
| 导出 | 复制文本(含 AO3 格式信息);EPUB 还没做 |
交付过程
| 阶段 | 产出 |
|---|---|
| 需求 | 产品规格:用户、免费与付费、定价假设、内容规则、上线清单 |
| SEO / GEO | 选词、页面标题、用真实问题写的 FAQ、结构化数据 |
| UI | 首页即工具、流式结果区、定价页、作品库、后台 |
| 架构 | 基于 Novalith 的配置驱动工具引擎;可移除模块;PostgreSQL |
| 开发 | 每个功能一份书面指令,用 Claude Code 实现 |
| 测试 | 单元测试、verify 门槛、真实模型运行、支付沙盒测试 |
| 上线 | Vercel、自定义域名、Google Search Console、GA4 和 Microsoft Clarity |

