everyday · v2.0 EN

每日故事

根据金山词霸每日一句,调用 7+ AI 模型并行生成故事,Markdown 保存,VitePress 展示。

7 个 AI 模型 2,700+ 篇故事 MIT 开源 Python

00 · 展示

站点一览

从首页到故事正文,再到词云分析,一步步感受每日故事的魅力。

01 · 特性

核心能力

  1. 多模型并行各有所长,同题异构

    ThreadPoolExecutor 同时调用 7+ AI 模型生成故事,DeepSeek、智谱、Kimi、豆包、通义千问、Gemini 等各展所长,同一句每日一句产出风格各异的故事。

  2. 插件式配置即插即用,不改核心

    每个模型一个 _config.py 文件,导出 6 个标准化符号(API_KEY、CLIENT_PARAMS、CHAT_PARAMS、PREPROCESSORS、POSTPROCESSORS、POSTPROCESSOR_FILES)即可注册,无需修改任何核心代码。

  3. 惰性加载导入即静,按需请求

    import 时不发起任何 HTTP 请求。金山词霸每日句和网络搜索结果通过 _shared.py 惰性获取,只在首次使用时加载,避免导入时的网络等待。

  4. 流水线架构预处理 · 对话 · 后处理 · 持久化

    PREPROCESSORS → Chat API → POSTPROCESSORS → 文件持久化,每个环节可独立插拔。纯函数式链保证了可测试性和可组合性。

  5. 词云洞察从故事中发现主题脉络

    每周自动对全量故事做分词、词频统计,生成词云图 + 分析报告。从视觉上感知故事的主题变迁和趋势演化。

  6. 自动运维零人工介入,持续运转

    GitHub Actions 每日 23:00 UTC 自动运行,Cloudflare Pages 自动构建部署。超大日志自动归档,全链路无需人工干预。

02 · 原则

设计哲学

  1. 01
    简单稳定 优先选择简单、成熟、易维护的实现。不引入不必要的依赖,不做过度设计。复杂度不是价值,可维护性才是。
  2. 02
    零侵入扩展 新增一个 AI 模型只需一个文件,不改一行核心代码。ModelRegistry 自动发现,流水线自动编排,真正即插即用。
  3. 03
    纯函数式 全局无 class(Registry 例外),无副作用链。处理器是纯函数,流水线是函数组合。可测试、可追溯、可推理。
  4. 04
    全链路可观测 JSON Lines 日志追加写入,元数据追踪每次 API 调用的模型、耗时、token 消耗。兼容旧 JSON 数组格式,O(1) 持久化。
  5. 05
    零配置开发体验 pip install -r requirements.txt + 填写 .env + python main.py 三步上手。没有 Docker 依赖,没有复杂的编排。
  6. 06
    自动化优先 定时触发 · 自动生成 · 自动归档 · 自动部署。GitHub Actions 每日运行,Cloudflare Pages 实时上线。项目常年无人值守运转。

03 · 关于

项目哲学

everyday 始于一个简单的想法:让 AI 为每一天写一个故事。 金山词霸的每日一句是灵感种子,7 个不同的 AI 模型是七种不同的叙事眼睛。 同一个句子,在 DeepSeek 笔下是余华般的冷峻,在 Kimi 那里是刘慈欣式的宏大, 在智谱和豆包那里又各有各的温度。我们不挑模型阵营,不做独家绑定—— 只要模型开口说话,我们就让它讲故事。 2,700 篇故事之后,这个项目活成了它自己的样子:一个每天自动运转的 AI 故事工厂, 零人工介入,却从未间断。

7+ AI 模型
2,700+ 生成故事
16,000+ API 调用记录
812 Git 提交

04 · 常见问题

FAQ

如何快速上手?
克隆仓库,创建 conda 环境,安装依赖,复制 .env.example.env 并填入 API 密钥,然后运行 python main.py。详见项目 README 的「快速开始」。
如何添加新的 AI 模型?
.env 中添加 API_KEY_XXX,创建 model_configs/xxx_config.py 并导出 6 个标准化符号,ModelRegistry 会自动发现并注册。无需修改 core 目录的任何文件。
生成的故事存储在哪里?
以 Markdown 格式保存在 story/故事/ 目录下,按日期嵌套(年/月/日)。story/index.md 为 VitePress 首页,由 save_to_md_file 自动更新链接。
如何本地预览站点?
在项目根目录运行 npm install && npm run docs:dev,VitePress 开发服务器会启动并实时预览。所有故事内容、词云报告均可本地访问。
代码质量如何保证?
使用 ruff 做代码检查,pytest 运行单元测试。chat_ai() 有指数退避重试逻辑,image_utils.py 有内存缓存避免重复下载。Markdown 文件写入使用原子 os.replace() 防止半写。

更多问题?欢迎在 GitHub Issues 提出。