2025-04-21 09:32:29 +08:00
|
|
|
|
# 旅游内容创作工具 (Travel Content Creator)
|
|
|
|
|
|
|
|
|
|
|
|
这是一个基于AI的旅游内容自动生成工具,可以根据景点信息自动生成高质量的旅游推文和宣传海报。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特点
|
|
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
- **自动选题生成**:根据提供的景点信息和配置的提示词模板,自动生成吸引人的旅游选题
|
|
|
|
|
|
- **内容创作**:基于选题和配置的提示词模板,自动生成文字内容(标题、正文)
|
|
|
|
|
|
- **海报制作**:结合景点图片和生成的文字内容,自动创建精美的宣传海报
|
|
|
|
|
|
- **批量处理**:支持一次性生成多个选题和多个变体内容
|
|
|
|
|
|
- **模块化设计**:核心功能(配置加载、提示词管理、AI交互、选题、内容生成、海报制作)分离,方便维护和扩展
|
|
|
|
|
|
- **配置驱动**:通过配置文件集中管理所有运行参数
|
|
|
|
|
|
|
|
|
|
|
|
## 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 环境准备
|
2025-04-21 09:32:29 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-04-23 16:01:18 +08:00
|
|
|
|
# 克隆项目
|
|
|
|
|
|
git clone https://github.com/yourusername/TravelContentCreator.git
|
|
|
|
|
|
cd TravelContentCreator
|
|
|
|
|
|
|
|
|
|
|
|
# 安装依赖 (假设有requirements.txt文件)
|
|
|
|
|
|
# pip install -r requirements.txt
|
|
|
|
|
|
# 或者手动安装
|
|
|
|
|
|
pip install numpy pandas opencv-python pillow requests tqdm
|
2025-04-21 09:32:29 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
### 2. 配置设置
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 复制示例配置(选择一个或从基础开始)
|
|
|
|
|
|
cp configs/basic_config.json poster_gen_config.json
|
2025-04-22 16:31:03 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
# 编辑配置文件
|
|
|
|
|
|
vim poster_gen_config.json
|
|
|
|
|
|
# 必须修改:api_url, api_key, image_base_dir
|
2025-04-22 16:31:03 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
### 3. 运行系统
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 完整流程(从选题到海报生成)
|
|
|
|
|
|
python main.py
|
|
|
|
|
|
|
|
|
|
|
|
# 或分阶段执行 (使用默认配置)
|
|
|
|
|
|
python examples/run_step1_topics.py
|
|
|
|
|
|
# 记下输出的Run ID
|
|
|
|
|
|
python examples/run_step2_content_posters.py YOUR_RUN_ID
|
2025-04-22 16:33:57 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
# 使用特定配置运行
|
|
|
|
|
|
# python main.py --config configs/social_media_config.json
|
|
|
|
|
|
```
|
2025-04-22 17:51:14 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
### 4. 查看结果
|
2025-04-22 17:51:14 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
# 结果保存在配置的output_dir目录下(默认为./result/)
|
|
|
|
|
|
ls -la ./result/最新的Run_ID/
|
|
|
|
|
|
```
|
2025-04-22 17:51:14 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
## 核心组件说明
|
2025-04-22 17:51:14 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
项目采用模块化设计,主要包含以下组件:
|
2025-04-22 17:51:14 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
- **主流程协调器** (`main.py`): 负责加载配置并协调执行整个生成流程
|
|
|
|
|
|
- **AI交互模块** (`core/ai_agent.py`): 封装与大语言模型的通信
|
|
|
|
|
|
- **选题生成器** (`utils/tweet_generator.py`): 生成旅游选题
|
|
|
|
|
|
- **内容生成器** (`core/contentGen.py`): 处理内容创作
|
|
|
|
|
|
- **海报制作器** (`core/posterGen.py`): 合成文字和图片,生成最终海报
|
2025-04-22 18:14:31 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
## 资源准备指南
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
### 1. 景点信息文件
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
在 `resource/Object/` 目录创建景点信息文件,示例格式:
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
```
|
|
|
|
|
|
景点名称:泰宁古城
|
|
|
|
|
|
位置:福建省三明市泰宁县
|
|
|
|
|
|
简介:泰宁古城始建于宋代...
|
|
|
|
|
|
特色:古城墙、古街巷...
|
|
|
|
|
|
历史:泰宁古城有着悠久的历史...
|
|
|
|
|
|
适合游客:喜欢历史文化的游客、摄影爱好者
|
|
|
|
|
|
建议游览时间:2-3小时
|
|
|
|
|
|
最佳季节:春季和秋季
|
|
|
|
|
|
```
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
> **提示**:景点信息越详细,生成的内容质量越高
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
### 2. 图片资源结构
|
|
|
|
|
|
|
|
|
|
|
|
图片资源应按以下结构组织(可通过配置自定义目录名):
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
<image_base_dir>/ # 配置中的图片根目录
|
|
|
|
|
|
├── 相机/ # 存放原始照片 (camera_image_subdir)
|
|
|
|
|
|
│ ├── 泰宁古城/
|
|
|
|
|
|
│ │ ├── 图片1.jpg
|
|
|
|
|
|
│ │ ├── 图片2.jpg
|
|
|
|
|
|
│ │ └── description.txt (可选的图片描述)
|
|
|
|
|
|
│ └── 其他景点/
|
|
|
|
|
|
└── modify/ # 存放处理后的图片 (modify_image_subdir)
|
|
|
|
|
|
├── 泰宁古城/
|
|
|
|
|
|
│ ├── 图片1.jpg
|
|
|
|
|
|
│ └── ...
|
|
|
|
|
|
└── 其他景点/
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
> **重要**:确保每个景点的图片目录名与景点信息文件中的名称匹配。海报生成默认从 `modify/` 目录选取图片。
|
|
|
|
|
|
|
|
|
|
|
|
## 配置文件详解
|
|
|
|
|
|
|
|
|
|
|
|
`poster_gen_config.json` 是系统的核心配置文件,包含以下主要配置项:
|
|
|
|
|
|
|
|
|
|
|
|
### 基础配置
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"date": "5月15日", // 日期标记,用于提示词
|
|
|
|
|
|
"num": 5, // 生成选题数量
|
|
|
|
|
|
"variants": 3 // 每个选题生成的变体数量
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### AI模型配置
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"model": "qwen", // 使用的模型名称
|
|
|
|
|
|
"api_url": "http://localhost:8000/v1/", // API端点
|
|
|
|
|
|
"api_key": "YOUR_API_KEY", // API密钥
|
|
|
|
|
|
"topic_temperature": 0.2, // 选题生成的随机性
|
|
|
|
|
|
"content_temperature": 0.3 // 内容生成的随机性
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 资源路径配置
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"resource_dir": [ // 景点信息资源
|
|
|
|
|
|
{
|
|
|
|
|
|
"type": "Object",
|
|
|
|
|
|
"num": 3,
|
|
|
|
|
|
"file_path": [
|
|
|
|
|
|
"./resource/Object/景点信息-泰宁古城.txt",
|
|
|
|
|
|
"./resource/Object/景点信息-尚书第.txt"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"image_base_dir": "/path/to/your/image/directory", // 图片根目录
|
|
|
|
|
|
"camera_image_subdir": "相机", // 原始照片子目录
|
|
|
|
|
|
"modify_image_subdir": "modify" // 处理后图片子目录
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 提示词配置
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"topic_system_prompt": "./SelectPrompt/systemPrompt.txt",
|
|
|
|
|
|
"topic_user_prompt": "./SelectPrompt/userPrompt.txt",
|
|
|
|
|
|
"content_system_prompt": "./genPrompts/systemPrompt.txt",
|
|
|
|
|
|
"prompts_dir": "./genPrompts"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 输出配置
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"output_dir": "./result", // 输出目录
|
|
|
|
|
|
"poster_target_size": [900, 1200], // 海报尺寸
|
|
|
|
|
|
"text_possibility": 0.3 // 文字元素出现概率
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
## 配置示例
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
本项目提供了多种预设配置文件,适用于不同场景。这些配置文件位于 `configs/` 目录下:
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
- **基础配置** (`configs/basic_config.json`): 适合初次使用和测试
|
|
|
|
|
|
- **OpenAI配置** (`configs/openai_config.json`): 使用OpenAI API的配置
|
|
|
|
|
|
- **高质量配置** (`configs/high_quality_config.json`): 更高质量的生成设置
|
|
|
|
|
|
- **批量处理配置** (`configs/batch_processing_config.json`): 处理大量景点信息
|
|
|
|
|
|
- **社交媒体配置** (`configs/social_media_config.json`): 针对多个社交平台优化
|
|
|
|
|
|
- **本地LLM配置** (`configs/local_llm_config.json`): 使用本地部署的LLM模型
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
使用示例配置:
|
2025-04-22 21:57:06 +08:00
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
# 复制适合您场景的配置
|
|
|
|
|
|
cp configs/social_media_config.json poster_gen_config.json
|
|
|
|
|
|
|
|
|
|
|
|
# 按需修改配置
|
|
|
|
|
|
vim poster_gen_config.json
|
2025-04-22 21:57:06 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-04-23 16:01:18 +08:00
|
|
|
|
详细说明请参阅 `configs/README.md` 文件。
|
|
|
|
|
|
|
|
|
|
|
|
## 高级使用指南
|
|
|
|
|
|
|
|
|
|
|
|
### 自定义提示词
|
|
|
|
|
|
|
|
|
|
|
|
编辑 `SelectPrompt/` 和 `genPrompts/` 目录下的提示词文件,可自定义生成内容的风格和侧重点。
|
|
|
|
|
|
|
|
|
|
|
|
### 调整生成参数
|
|
|
|
|
|
|
|
|
|
|
|
- 增加 `variants` 值可获得更多内容变体
|
|
|
|
|
|
- 调整 `temperature` 参数可以改变生成内容的创造性
|
|
|
|
|
|
- 修改 `poster_target_size` 可以设置不同的海报尺寸
|
|
|
|
|
|
|
|
|
|
|
|
### 分布式执行
|
|
|
|
|
|
|
|
|
|
|
|
利用分阶段执行功能,可在不同机器上完成选题生成和内容生成:
|
|
|
|
|
|
|
|
|
|
|
|
1. 机器A执行选题生成 (`run_step1_topics.py`),将结果保存到共享存储
|
|
|
|
|
|
2. 机器B从共享存储读取选题 (`run_step2_content_posters.py <run_id>`),执行计算密集的内容和海报生成
|
|
|
|
|
|
|
|
|
|
|
|
## 常见问题
|
|
|
|
|
|
|
|
|
|
|
|
1. **生成内容质量不高?**
|
|
|
|
|
|
- 尝试提供更详细的景点信息
|
|
|
|
|
|
- 调整提示词模板
|
|
|
|
|
|
- 降低 `temperature` 参数以减少随机性
|
|
|
|
|
|
|
|
|
|
|
|
2. **找不到景点图片?**
|
|
|
|
|
|
- 确保图片目录名与景点信息匹配
|
|
|
|
|
|
- 检查配置文件中的 `image_base_dir` 路径是否正确
|
|
|
|
|
|
|
|
|
|
|
|
3. **API调用失败?**
|
|
|
|
|
|
- 验证 API Key 和 URL 是否正确
|
|
|
|
|
|
- 检查网络连接和防火墙设置
|
|
|
|
|
|
|
|
|
|
|
|
## 示例
|
|
|
|
|
|
|
|
|
|
|
|
查看 `examples/` 目录中的示例脚本及其 `README.md` 文件,了解更多使用方法。
|
|
|
|
|
|
|
|
|
|
|
|
## 贡献指南
|
|
|
|
|
|
|
|
|
|
|
|
欢迎提交 Pull Request 或 Issue 来帮助改进本项目。
|
|
|
|
|
|
|
|
|
|
|
|
## 许可证
|
|
|
|
|
|
|
|
|
|
|
|
本项目采用 MIT 许可证。
|