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