hubian bf6b9457c4 feat: 搜索结果持久化保存 + 结果数量可配置
- 新增 search_results 表,搜索结果按主题持久保存
- 搜索API自动保存结果到数据库,获取详情时更新raw_content
- 页面加载时自动加载历史搜索结果,按搜索词分组显示
- 支持单条删除和清空所有搜索结果
- 搜索结果数量默认10条,可通过输入框调整(1-20)
- 搜索面板标题显示结果计数badge
2026-05-23 23:48:44 +08:00

Article Writer - 文章编写系统

基于 Flask + LLM 的智能文章编写系统,支持主题管理、素材收集、网络搜索、分类标签和大模型生成文章。

功能

  • 主题管理:创建、编辑、删除文章主题
  • 分类系统:多级分类,每个主题可归属多个分类
  • 标签系统:灵活标签,每个主题支持多个标签,支持增删改
  • 素材收集支持文本素材和图片素材含Ctrl+V粘贴截图
  • 网络搜索:集成 Tavily Search在主题页面直接搜索网络资料一键添加为素材
  • Prompt编辑每个主题可自定义生成提示词支持历史记录
  • 大模型生成:调用 LLM 根据素材自动生成文章
  • 文章管理:查看、编辑、删除、复制、下载生成的文章

技术栈

  • 后端Python 3 + Flask + SQLite
  • 前端HTML/CSS/JSBootstrap 5 暗色主题)
  • LLM兼容 OpenAI API 格式的大模型接口
  • 搜索Tavily Search API

快速开始

# 安装依赖
pip install flask requests

# 配置环境变量
export LLM_URL="https://your-llm-api/v1/chat/completions"
export LLM_API_KEY="***"
export LLM_MODEL="qwen3.6-plus"

# 启动服务
python app.py

访问 http://localhost:19200

配置

LLM 配置

通过环境变量或页面配置 LLM 接口:

环境变量 说明 默认值
LLM_URL 大模型 API 地址 -
LLM_API_KEY API 密钥 -
LLM_MODEL 模型名称 qwen3.6-plus

搜索配置

在首页右上角点击「搜索配置」按钮,配置 Tavily Search API Key。

获取 API Key: tavily.com

支持的搜索参数:

  • 搜索深度:基础(basic) / 深度(advanced)
  • 时间范围:不限 / 最近一天 / 一周 / 一月 / 一年

网络搜索功能

在每个主题的详情页中,提供「网络搜索」面板:

  1. 输入关键词,选择搜索深度和时间范围
  2. 点击搜索结果以列表形式展示标题、URL、摘要、相关度
  3. 点击「查看详情」可获取网页完整内容
  4. 点击「添加为素材」可将搜索结果(含详细内容)一键添加为文本素材

数据结构

  • topics - 文章主题
  • categories - 分类(支持多对多关联)
  • tags - 标签(支持多对多关联,自动清理孤立标签)
  • topic_categories - 主题-分类关联表
  • topic_tags - 主题-标签关联表
  • materials - 素材(文本/图片)
  • articles - 生成的文章
  • llm_config - LLM接口配置
  • search_config - 搜索接口配置
  • prompt_history - Prompt历史记录
  • prompt_templates - Prompt模板

项目结构

article-writer/
├── app.py              # 主应用Flask后端
├── templates/
│   ├── index.html      # 首页(主题列表 + 分类/标签筛选 + 搜索配置)
│   └── topic.html      # 主题详情页(素材 + 网络搜索 + 文章生成 + 分类标签编辑)
├── static/
│   └── uploads/        # 图片上传目录
├── .env.example        # 环境变量示例
└── .gitignore

API

搜索

  • GET /api/search-config - 获取搜索配置API Key 脱敏)
  • PUT /api/search-config - 更新搜索配置
  • POST /api/search - 执行网络搜索
  • POST /api/search/detail - 获取搜索结果详细内容

分类

  • GET /api/categories - 分类列表(含主题计数)
  • POST /api/categories - 创建分类
  • PUT /api/categories/<id> - 更新分类
  • DELETE /api/categories/<id> - 删除分类

标签

  • GET /api/tags - 标签列表(含主题计数)
  • POST /api/tags - 创建标签
  • PUT /api/tags/<id> - 更新标签
  • DELETE /api/tags/<id> - 删除标签

主题

  • POST /api/topics - 创建主题(支持 category_ids, tag_ids, new_tags
  • PUT /api/topics/<id> - 更新主题(支持更新分类和标签关联)

License

MIT

Description
文章编写系统 - Flask + LLM智能文章生成
Readme 232 KiB
Languages
HTML 73.7%
Python 26.3%