# 内容生成脚本使用指南 ## 概述 本目录包含三个用于生成和导入知识内容的脚本: 1. **generate-content.js** - 使用 LLM API 批量生成知识文章 2. **import-content.js** - 将生成的文章导入数据库 3. **seed-cases.js** - 生成示例案例数据 ## 使用步骤 ### 1. 生成知识文章 ```bash npm run generate-content ``` 该脚本将: - 使用 LLM API 生成 30 篇知识文章 - 覆盖 5 个分类:快速入门(quickstart)、K线逻辑(kline)、八字基础(bazi)、大运流年(dayun)、方法误区(method) - 生成的内容保存到 `scripts/generated-articles.json` - 输出 SQL 插入语句到控制台 **注意事项:** - 确保 `.env` 文件中配置了正确的 `API_KEY` - 生成过程约需 1-2 分钟(包含 2 秒延迟防止 rate limit) - 如果某篇文章生成失败,会显示错误但继续生成其他文章 ### 2. 导入文章到数据库 ```bash npm run import-content ``` 该脚本将: - 读取 `scripts/generated-articles.json` - 导入所有文章到 `knowledge_articles` 表 - 使用 `INSERT OR REPLACE` 避免重复 **前置条件:** - 必须先运行 `generate-content` 生成文章 - 数据库必须已初始化(运行过 `npm run dev` 或 `npm start`) ### 3. 生成示例案例 ```bash npm run seed-cases ``` 该脚本将: - 生成 3 个典型案例(早发型、晚成型、大起大落型) - 每个案例包含完整的 K 线数据(1-80 岁) - 带有关键节点标注(highlights) - 导入到 `cases` 表 ## 文章分类说明 ### quickstart - 快速入门(6篇) 面向新手用户的基础概念和操作指南 ### kline - K线逻辑(6篇) 解释人生K线图的核心逻辑和解读方法 ### bazi - 八字基础(8篇) 命理学基础概念的通俗讲解 ### dayun - 大运流年(6篇) 大运和流年的原理与应用 ### method - 方法误区(4篇) 常见误区和正确使用方法 ## 数据库结构 ### knowledge_articles 表 ```sql - id: 文章ID - slug: URL友好的唯一标识符 - title: 标题 - category: 分类 - level: 难度等级(1=入门, 2=进阶, 3=高级) - tags: 标签数组(JSON) - summary: 摘要(60字内) - content: 正文(Markdown格式) - view_count: 浏览次数 - created_at: 创建时间 - published: 是否发布(1=是, 0=否) ``` ### cases 表 ```sql - id: 案例ID - title: 标题 - persona: 角色类型(创业者、企业家等) - curve_type: 曲线类型(早发、晚成等) - chart_data: K线数据(JSON数组) - highlights: 关键节点(JSON数组) - narrative: 案例叙述 - tags: 标签数组(JSON) - view_count: 浏览次数 - created_at: 创建时间 - published: 是否发布(1=是, 0=否) ``` ## 自定义内容 ### 修改文章主题 编辑 `generate-content.js` 中的 `ARTICLES_TO_GENERATE` 数组: ```javascript const ARTICLES_TO_GENERATE = [ { topic: '你的主题', category: 'quickstart' }, // ... 更多主题 ]; ``` ### 修改案例数据 编辑 `seed-cases.js` 中的 `CASES` 数组: ```javascript const CASES = [ { title: '案例标题', persona: '角色', curveType: '类型', narrative: '案例描述', chartData: generateCustomChart(), // 自定义K线数据 highlights: [ { age: 30, type: 'peak', note: '关键事件' } ] } ]; ``` ## 故障排除 ### 生成失败 - 检查 API_KEY 是否正确 - 检查 API_BASE_URL 是否可访问 - 查看错误信息中的具体原因 ### 导入失败 - 确保数据库文件存在(`server/data/lifekline.db`) - 检查 `generated-articles.json` 文件格式是否正确 - 确保数据库表已创建(重启服务器会自动创建) ### 案例数据异常 - K线数据必须是 1-80 岁的完整数组 - 每个数据点必须包含 age, open, close, high, low, score, isGreen 字段 - highlights 中的 age 必须在 1-80 范围内 ## 扩展功能 可以基于这些脚本扩展更多功能: - 添加文章更新脚本 - 实现增量生成(只生成新主题) - 添加内容质量检查 - 实现批量标签管理 - 添加文章版本控制