2025-05-10 21:16:22 +08:00

210 lines
8.0 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.

# TravelContentCreator
TravelContentCreator是一个用于自动化生成旅游内容和宣传海报的系统。该系统利用AI技术生成景点选题、撰写文章内容并制作相应的宣传海报。
## 功能特点
- 自动生成旅游景点选题(包括目标受众、写作风格等)
- 根据选题生成详细的旅游文章内容
- 为生成的文章制作美观的宣传海报
- 支持多种写作风格和目标受众需求
- 文件模糊匹配功能,增强系统健壮性
- 模块化设计,可单独使用选题、内容生成或海报生成功能
- 内容审核功能,自动检查和修正生成内容与产品资料的匹配度
## 目录结构
```
TravelContentCreator/
├── core/ # 核心功能模块
├── utils/ # 工具类和辅助函数
├── genPrompts/ # 生成提示词
│ ├── Style/ # 风格提示词
│ ├── Demand/ # 需求提示词
│ └── Refer/ # 参考提示词
├── SelectPrompt/ # 选题提示词
├── resource/ # 资源文件
├── main.py # 主程序
├── test_topic_content.py # 选题和内容生成测试脚本
├── test_poster.py # 海报生成测试脚本
├── topic_content_config.json # 选题和内容生成配置
├── poster_config.json # 海报生成配置
└── poster_gen_config.json # 主程序配置
```
## 安装
1. 克隆仓库
```bash
git clone [仓库URL]
cd TravelContentCreator
```
2. 安装依赖
```bash
pip install -r requirements.txt
```
3. 配置环境
- 确保安装了Python 3.6+
- 配置好AI模型API本系统默认使用QwenAPI
- 准备好必要的素材和资源文件
## 使用说明
### 1. 主程序
主程序可以执行完整的流程,包括选题生成、内容生成和海报生成:
```bash
python main.py [--config CONFIG_PATH] [--run_id RUN_ID] [--topics_file TOPICS_FILE] [--debug]
```
参数说明:
- `--config`: 配置文件路径,默认为`poster_gen_config.json`
- `--run_id`: 自定义运行ID用于区分不同批次的生成结果
- `--topics_file`: 预生成的选题文件路径,如果提供则跳过选题生成步骤
- `--debug`: 启用调试级别日志
### 2. 测试选题和内容生成
使用专门的测试脚本运行选题和内容生成模块:
```bash
python test_topic_content.py [--config CONFIG_PATH] [--run_id RUN_ID] [--topics_file TOPICS_FILE] [--debug]
```
参数说明:
- `--config`: 配置文件路径,默认为`topic_content_config.json`
- `--run_id`: 自定义运行ID
- `--topics_file`: 预生成的选题文件路径,如果提供则跳过选题生成
- `--debug`: 启用调试级别日志
### 3. 测试海报生成
使用专门的测试脚本运行海报生成模块:
```bash
python test_poster.py --topics_file TOPICS_FILE [--config CONFIG_PATH] [--topic_index TOPIC_INDEX] [--run_id RUN_ID] [--debug]
```
参数说明:
- `--topics_file`: 必需的选题JSON文件路径用于获取海报生成的主题数据
- `--config`: 配置文件路径,默认为`poster_config.json`
- `--topic_index`: 要生成海报的特定选题索引,如果未提供则为所有选题生成海报
- `--run_id`: 自定义运行ID
- `--debug`: 启用调试级别日志
## 配置文件说明
### 选题和内容生成配置 (topic_content_config.json)
```json
{
"date": "5月15日, 5月16日, 5月17日, 6月1日", // 选题日期
"num": 2, // 生成选题数量
"variants": 1, // 每个选题的变体数量
"topic_temperature": 0.2, // 选题生成的temperature参数
"content_temperature": 0.3, // 内容生成的temperature参数
"model": "qwenQWQ", // 使用的AI模型
"api_url": "http://localhost:8000/v1/", // API地址
"api_key": "EMPTY", // API密钥
"enable_content_judge": true, // 是否启用内容审核功能
"topic_system_prompt": "./SelectPrompt/systemPrompt.txt", // 选题系统提示词路径
"topic_user_prompt": "./SelectPrompt/userPrompt.txt", // 选题用户提示词路径
"content_system_prompt": "./genPrompts/systemPrompt.txt", // 内容系统提示词路径
"content_judger_system_prompt": "./genPrompts/judgerSystemPrompt.txt", // 内容审核系统提示词路径
"prompts_config": [ // 提示词配置
{
"type": "Style", // 风格提示词
"file_path": [...] // 风格提示词文件路径列表
},
{
"type": "Demand", // 需求提示词
"file_path": [...] // 需求提示词文件路径列表
},
...
],
"resource_dir": [ // 资源目录配置
{
"type": "Object", // 对象类型
"file_path": [...] // 对象文件路径列表
},
...
]
}
```
### 海报生成配置 (poster_config.json)
```json
{
"variants": 1, // 每个选题的变体数量
"model": "qwenQWQ", // 使用的AI模型
"api_url": "http://localhost:8000/v1/", // API地址
"api_key": "EMPTY", // API密钥
"poster_content_system_prompt": "./genPrompts/poster_content_systemPrompt.txt", // 海报内容系统提示词路径
"resource_dir": [...], // 资源目录配置
"output_dir": "./result", // 输出目录
"image_base_dir": "...", // 图片基础目录
"poster_assets_base_dir": "...", // 海报素材基础目录
"poster_target_size": [900, 1200], // 海报目标尺寸
"text_possibility": 0.3, // 文本可能性
"img_frame_possibility": 0.7, // 图像框可能性
"text_bg_possibility": 0 // 文本背景可能性
}
```
## 内容审核功能
系统支持内容审核功能,可以自动检查生成的内容是否与产品资料匹配,并进行必要的修正:
1. 启用方式:在配置文件中设置 `"enable_content_judge": true`
2. 审核流程:
- 系统会根据topic中的产品信息获取相关产品资料
- 将生成的内容与产品资料进行比对
- 对不符合产品资料的内容进行修正
- 保留原始内容和修正后的内容
3. 输出格式:无论是否启用内容审核功能,生成的`article.json`文件都会包含以下字段:
- `title`: 文章标题
- `content`: 文章内容
- `tag`/`tags`: 文章标签(两者保持一致)
- `judged`: 是否经过内容审核(布尔值)
- `original_title`: 原始标题未经审核时为null
- `original_content`: 原始内容未经审核时为null
- `judge_analysis`: 审核分析未经审核时为null
## 结果输出
生成的结果保存在配置文件中指定的`output_dir`目录下,按照`run_id`组织。每次运行的结果包括:
- 选题文件:`tweet_topic_{run_id}.json`
- 选题使用的提示词:`tweet_prompt_{run_id}.txt`
- 文章内容:分目录保存在`{run_id}/{topic_index}_{variant_index}/article.json`
- 海报图像:保存在`{run_id}/{topic_index}_{variant_index}/poster/poster.jpg`
- 拼贴图像:保存在`{run_id}/{topic_index}_{variant_index}/collage_img/`
## 自定义扩展
系统各部分设计为模块化,您可以:
1. 添加新的风格提示词到`genPrompts/Style/`目录
2. 添加新的需求提示词到`genPrompts/Demand/`目录
3. 添加新的景点资源到`resource/Object/`目录
4. 修改AI模型参数以适应不同生成需求
5. 自定义海报生成的尺寸和样式
6. 自定义内容审核的提示词和规则
## 注意事项
- 确保提示词文件和资源文件的编码为UTF-8
- API密钥应妥善保管建议使用环境变量或外部配置
- 图像生成需要足够的系统资源,建议在性能良好的设备上运行
- 文件模糊匹配功能可以处理一些文件名不完全匹配的情况,但建议尽量保持文件名规范
- 内容审核功能需要配置相应的系统提示词文件
## 贡献
欢迎提交问题报告和功能建议,或直接提交代码改进。