字节笔记本

2026年2月22日

Everyday Story Generator - AI 每日故事生成器

Everyday Story Generator 是一个基于多 LLM 模型的创意故事生成工具,能够自动获取金山词霸每日一句,并使用 AI 将其扩展成完整的微型小说。该项目支持 DeepSeek、智谱清言、Kimi、豆包、通义千问等多种大语言模型,通过 GitHub Actions 实现每日自动化生成,并内置精美的 VitePress 文档站点展示生成的故事。

项目简介

Everyday Story Generator 的核心理念是"让经典名言焕发新生"。它从金山词霸获取每日一句经典名言,然后利用多种 AI 大模型(DeepSeek、智谱清言、Kimi、豆包、通义千问等)将这句名言扩展成一个跌宕起伏的微型小说。项目采用时空胶囊式的存储结构,按照年/月/日三维归档,自动生成时光隧道般的故事索引。

截至目前,该项目在 GitHub 上已获得 60+ stars,由 Liao-Ke 开发维护,采用 MIT 开源协议。

核心特性

  • 智能续写引擎:基于 DeepSeek、智谱清言等多个 AI 引擎,将金句拓展成跌宕起伏的微型小说
  • 时空胶囊式存储:采用 年/月/日 三维归档系统,自动生成时光隧道般的故事索引
  • 沉浸式文档站点:内置精美 VitePress 知识库,支持实时故事画廊浏览
  • 云端自动化:GitHub Actions 每日定时生成故事,打造永不间断的文学瀑布流
  • 多模型并发支持:支持同时调用多个 AI 模型生成不同版本的故事
  • 词云分析功能:内置中文词云生成器,可分析故事文本的关键词分布

技术栈

后端技术

  • Python 3.11 - 核心开发语言
  • OpenAI SDK - 统一调用各大 LLM API
  • Requests - HTTP 请求处理
  • Jieba - 中文分词处理
  • Matplotlib + WordCloud - 词云可视化
  • python-dotenv - 环境变量管理
  • ruamel.yaml - YAML 配置文件解析

前端技术

  • VitePress 1.6.4 - 静态文档站点生成器
  • TypeScript - 类型安全的 JavaScript
  • Medium Zoom - 图片缩放插件
  • vite-plugin-compression - 资源压缩插件

部署与自动化

  • GitHub Actions - 定时自动化任务
  • Cloudflare Pages - 静态站点托管

安装指南

前置要求

  • Python >= 3.11
  • Node.js >= 18
  • Conda(推荐用于 Python 环境管理)

步骤 1:克隆仓库

bash
git clone https://github.com/Liao-Ke/everyday.git
cd everyday

步骤 2:创建 Python 虚拟环境

bash
conda create -n storygen python=3.11
conda activate storygen
pip install -r requirements.txt

步骤 3:配置 API 密钥

创建 .env 文件,添加以下 API 密钥(至少需要一个):

bash
# 智谱清言 API 密钥
API_KEY=your_zhipu_api_key

# DeepSeek API 密钥
API_KEY_DS=your_deepseek_api_key

# Kimi API 密钥
API_KEY_KIMI=your_kimi_api_key

# 豆包 API 密钥
API_KEY_DOUBAO=your_doubao_api_key

# 通义千问 API 密钥
API_KEY_QWEN=your_qwen_api_key

获取 API 密钥:

步骤 4:运行故事生成器

bash
python main.py

快速开始

启动文档站点(本地预览)

bash
# 安装依赖
npm install

# 启动开发服务器
npm run docs:dev

访问 http://localhost:5173 查看故事展示站点。

构建生产版本

bash
npm run docs:build
npm run docs:preview

使用示例

单模型生成故事

python
from main import story_generator

# 使用 DeepSeek 模型生成故事
result = story_generator("deepseek")
print(result)

多模型并发生成

python
from main import run_multi_thread

# 指定要使用的模型
models_to_use = [
    "deepseek",
    "zhipu",
    "qwen",
    "gemini"
]

# 并发生成,最多 4 个线程
results = run_multi_thread(models_to_use, max_workers=4)

# 查看各模型生成结果
for model_name, story in results.items():
    print(f"\n=== {model_name} ===")
    print(story)

词云分析

bash
python wordcloud_analysis.py

该脚本会分析 story 目录下的所有 Markdown 文件,生成词云图片展示高频词汇。

项目结构

text
everyday/
├── story/                      # 生成的故事存储目录
│   ├── 2025年/                # 按年份组织
│   │   ├── 01月/              # 按月份组织
│   │   │   └── 05日/          # 按日期组织
│   │   │       └── story.md   # 当日生成的故事
│   ├── images/                # 故事配图存储
│   └── .vitepress/            # VitePress 配置和主题
├── config/                    # 配置文件目录
├── model_configs/             # AI 模型配置文件
├── preprocessor/              # 前置处理器
├── processors/                # 后置处理器
├── utils/                     # 工具函数
├── chat_logs/                 # AI 对话日志
├── .github/workflows/         # GitHub Actions 工作流
├── main.py                    # 主程序入口
├── wordcloud_analysis.py      # 词云分析脚本
└── requirements.txt           # Python 依赖

支持的 AI 模型

项目目前支持以下大语言模型:

模型名称配置标识特点
DeepSeek V3deepseek_v3推理能力强,性价比高
智谱清言zhipu中文理解优秀
智谱 4.5 Flashzhipu_4_5_flash快速响应
豆包doubao字节跳动出品
豆包-思考doubao_think深度思考模式
通义千问qwen阿里云大模型
GeminigeminiGoogle 大模型
ModelScope 体验模型experience_modelscope免费体验

配置自定义模型

model_configs/ 目录下创建新的模型配置文件,例如 my_model_config.py

python
import os
from preprocessor.my_preprocessor import my_preprocessor
from processors.my_processor import my_processor
from processors.file_processors import save_to_markdown

API_KEY = os.getenv("MY_MODEL_API_KEY")

CLIENT_PARAMS = {
    "base_url": "https://api.my-model.com/v1",
    "timeout": 60
}

CHAT_PARAMS = {
    "model": "my-model-name",
    "temperature": 0.8,
    "max_tokens": 2000,
    "stream": True
}

# 前置处理器(在调用 API 前执行)
PREPROCESSORS = [my_preprocessor]

# 后置处理器(在获取响应后执行)
POSTPROCESSORS = [my_processor]

# 文件处理器(保存到文件)
POSTPROCESSOR_FILES = [save_to_markdown]

自动化工作流

项目使用 GitHub Actions 实现每日自动故事生成:

yaml
name: Daily Story Generator

on:
  schedule:
    # 每天 UTC 时间 02:00 运行(北京时间 10:00)
    - cron: '0 2 * * *'
  workflow_dispatch:  # 支持手动触发

jobs:
  generate-story:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Generate story
        env:
          API_KEY: ${{ secrets.API_KEY }}
          API_KEY_DS: ${{ secrets.API_KEY_DS }}
          # ... 其他 API 密钥
        run: python main.py
      - name: Deploy to Cloudflare Pages
        run: npm run docs:build && deploy...

在线预览

贡献指南

欢迎各种形式的贡献:

  • 提交新的故事生成算法(Issue/PR)
  • 优化 VitePress 主题样式
  • 创作配套视觉元素
  • 改进文档和说明

许可证

本项目遵循 MIT 开放协议,您可以自由使用、修改和分享这些故事结晶,唯需保留原创魔法印记。

特别鸣谢

让每个平凡的日子,都有不平凡的故事 ✨

分享: