Files
article-writer/README.md
hubian 6bf20062d2 feat: 添加网络搜索功能(Tavily Search)
- 后端:新增 search_config 表存储搜索接口配置
- 后端:实现 /api/search 和 /api/search/detail API
- 前端:首页添加搜索配置入口(模态框)
- 前端:主题详情页添加搜索面板(搜索框+结果列表+详情查看)
- 搜索结果可一键添加为素材
- 支持搜索深度和时间范围筛选
- 更新 README 文档
2026-05-23 23:22:30 +08:00

126 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Article Writer - 文章编写系统
基于 Flask + LLM 的智能文章编写系统,支持主题管理、素材收集、网络搜索、分类标签和大模型生成文章。
## 功能
- 主题管理:创建、编辑、删除文章主题
- 分类系统:多级分类,每个主题可归属多个分类
- 标签系统:灵活标签,每个主题支持多个标签,支持增删改
- 素材收集支持文本素材和图片素材含Ctrl+V粘贴截图
- **网络搜索:集成 Tavily Search在主题页面直接搜索网络资料一键添加为素材**
- Prompt编辑每个主题可自定义生成提示词支持历史记录
- 大模型生成:调用 LLM 根据素材自动生成文章
- 文章管理:查看、编辑、删除、复制、下载生成的文章
## 技术栈
- 后端Python 3 + Flask + SQLite
- 前端HTML/CSS/JSBootstrap 5 暗色主题)
- LLM兼容 OpenAI API 格式的大模型接口
- 搜索Tavily Search API
## 快速开始
```bash
# 安装依赖
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](https://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