旅游内容创作工具 (Travel Content Creator)
这是一个基于AI的旅游内容自动生成工具,可以根据景点信息自动生成高质量的旅游推文和宣传海报。
功能特点
- 自动选题生成:根据提供的景点信息和配置的提示词模板,自动生成吸引人的旅游选题。
- 内容创作:基于选题和配置的提示词模板,自动生成文字内容(标题、正文)。
- 海报制作:结合景点图片和生成的文字内容,自动创建精美的宣传海报。
- 批量处理:支持一次性生成多个选题和多个变体内容。
- 模块化设计:核心功能(配置加载、提示词管理、AI交互、选题、内容生成、海报制作)分离,方便维护和扩展。
- 配置驱动:通过
poster_gen_config.json文件集中管理所有运行参数。
安装
环境要求
- Python 3.6+
- 依赖库安装:
# 安装依赖库
pip install numpy pandas opencv-python pillow
# 可能还需要安装AI模型的客户端库,例如 requests 或 特定模型的SDK
# pip install requests
项目依赖项
- OpenCV (cv2):图像处理
- NumPy:数据操作
- Pandas:数据处理
- PIL (Pillow):图像处理和绘制
核心组件与目录结构
main.py: 项目入口,负责加载配置、编排主要流程(选题生成 -> 内容与海报生成)。poster_gen_config.json: (用户需从example_config.json创建) 核心配置文件。core/: 核心算法与功能模块ai_agent.py: AI代理: 封装与大语言模型 API 的底层交互逻辑(发送请求、接收响应)。topic_parser.py: 选题解析器: 解析 AI 模型返回的选题文本。contentGen.py: 内容处理器: 对 AI 生成的原始推文内容进行结构化处理,提取适用于海报的元素。posterGen.py: 海报生成器: 负责将图片和文字元素组合生成最终的海报图片,处理字体、布局等。simple_collage.py: 图片拼贴工具: 提供图片预处理和拼贴功能。
utils/: 工具与辅助模块resource_loader.py: 资源加载器: 负责加载项目所需的各种原始资源文件(如文本文件、配置文件中的路径指向的文件)。prompt_manager.py: 提示词管理器: 集中管理不同阶段(选题、内容生成)的提示词构建逻辑。它调用ResourceLoader获取基础文件,并根据配置和当前任务(如特定选题)组装最终的 System Prompt 和 User Prompt。tweet_generator.py: 流程与数据结构: 包含选题生成 (run_topic_generation_pipeline) 和单篇内容生成 (generate_single_content) 的流程函数,以及相关的数据类(如tweetTopicRecord,tweetContent)。
genPrompts/: 内容生成提示词模板目录。SelectPrompt/: 选题生成提示词模板目录。resource/: 存放基础的景点信息.txt文件等数据资源。examples/: 使用示例和测试脚本。result/: 默认输出结果保存目录。
项目流程与技术细节
- 加载配置:
main.py读取poster_gen_config.json文件。 - 选题生成:
- 调用
utils.tweet_generator.run_topic_generation_pipeline。 - 内部调用
utils.prompt_manager.PromptManager.get_topic_prompts()来构建选题阶段的系统和用户提示词(结合模板、资源文件、配置参数)。 - 初始化一个
core.ai_agent.AI_Agent实例。 - 调用 AI Agent 发送请求生成选题文本。
- 使用
core.topic_parser解析结果。 - 保存选题结果 (
tweet_topic.json) 到输出目录。 - 关闭此阶段的 AI Agent。
- 调用
- 内容与海报生成: (在
main.generate_content_and_posters_step中执行)- 初始化
utils.prompt_manager.PromptManager和 一个共享的core.ai_agent.AI_Agent实例供此阶段所有任务使用(优化点:避免为每个变体重复创建Agent)。 - 遍历上一步生成的每个选题 (
topic_item):- 为当前选题调用
prompt_manager.get_content_prompts(topic_item)获取内容生成的特定提示词。 - 遍历每个变体 (variant):
- 调用
utils.tweet_generator.generate_single_content,传入共享的 AI Agent 和特定于此选题的提示词,生成推文内容。
- 调用
- 调用
core.contentGen处理生成的文本内容,准备海报所需元素。 - 调用
core.simple_collage处理图片。 - 调用
core.posterGen结合图片和文本生成最终海报。
- 为当前选题调用
- 所有选题处理完毕后,关闭此阶段共享的 AI Agent。
- 初始化
使用方法
- 准备景点资源信息 (
.txt文件),放入resource/Object/目录(或其他在配置中指定的路径)。 - 准备景点图片资源,按照
README.md中"开始使用"部分的说明组织图片目录结构,并确保poster_gen_config.json中的image_base_dir指向正确的图片根目录。 - 复制
example_config.json为poster_gen_config.json,并根据你的 API Key、模型端点、文件路径、图片根目录等进行修改。 - 运行完整流程:
python main.py - 分阶段运行: (参考
examples/目录下的脚本)# 阶段 1: 仅生成选题 python examples/run_step1_topics.py # (记下输出的 Run ID) # 阶段 2: 处理已生成的选题 python examples/run_step2_content_posters.py <your_run_id>
配置说明
配置文件: poster_gen_config.json
必须配置项:
api_url: 大语言模型 API 地址api_key: API 密钥model: 使用的模型名称topic_system_prompt: 选题生成系统提示词文件路径topic_user_prompt: 选题生成基础用户提示词文件路径content_system_prompt: 内容生成系统提示词文件路径resource_dir: 包含景点等资源文件信息的列表 (结构见example_config.json)prompts_dir: 存放 Demand/Style/Refer 等提示词片段的目录路径output_dir: 输出结果保存目录路径image_base_dir: 图片资源根目录绝对路径或相对路径num: (选题阶段)生成选题数量variants: (内容生成阶段)每个选题生成的变体数量
可选配置项:
date: 日期标记(用于提示词,默认为当前日期)topic_temperature,topic_top_p,topic_max_tokens: 选题生成 API 相关参数content_temperature: 内容生成 API 相关参数camera_image_subdir: 存放原始照片和描述文件的子目录名(相对于image_base_dir,默认"相机")modify_image_subdir: 存放处理后/用于拼贴的图片的子目录名(相对于image_base_dir,默认"modify")poster_target_size: 海报目标尺寸[宽, 高](默认[900, 1200])
项目提供了一个示例配置文件 example_config.json,请务必复制并修改:
cp example_config.json poster_gen_config.json
nano poster_gen_config.json
开始使用
1. 准备景点信息文件
在 resource/Object/ 目录中创建景点信息文件(UTF-8编码),文件名应与配置和选题结果中的 object 字段对应,例如 景点信息-泰宁古城.txt:
景点名称:泰宁古城
位置:福建省三明市泰宁县
简介:泰宁古城始建于宋代...
特色:古城墙、古街巷...
2. 准备图片资源
将景点的高质量图片保存在配置的 image_base_dir 下,并按以下推荐结构组织(子目录名可通过配置修改):
<image_base_dir>/
├── 相机/ (camera_image_subdir)
│ ├── 泰宁古城/
│ │ ├── 图片1.jpg
│ │ ├── 图片2.jpg
│ │ └── description.txt (可选的图片描述文件,供内容生成参考)
│ └── 其他景点/
│ └── ...
└── modify/ (modify_image_subdir)
├── 泰宁古城/
│ ├── 用于拼贴的图片1.jpg
│ ├── ...
└── 其他景点/
└── ...
注意: 海报生成步骤会从 modify 子目录中查找用于制作海报的图片。
3. 配置文件
仔细检查并修改 poster_gen_config.json,确保所有路径(特别是 image_base_dir)和 API 信息正确无误。
4. 运行生成流程
根据需要选择完整流程或分阶段执行(见"使用方法"部分)。
生成的结果将保存在配置的output_dir目录下的 run_id 子目录中。
示例
查看examples/目录及其 README.md 文件,了解如何运行测试脚本或单独使用项目组件。
注意事项
- 确保已安装所有依赖库。
- 图片目录结构和命名需严格符合预期,以便程序能找到对应景点的图片。
- AI生成内容的质量很大程度上取决于提示词的设计和输入资源信息的质量。
- 仔细检查 API Key、URL 和文件路径配置。
- 如果遇到问题,检查程序输出的日志信息和错误提示。
Description
Languages
Python
98%
Shell
2%