# 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密钥应妥善保管,建议使用环境变量或外部配置 - 图像生成需要足够的系统资源,建议在性能良好的设备上运行 - 文件模糊匹配功能可以处理一些文件名不完全匹配的情况,但建议尽量保持文件名规范 - 内容审核功能需要配置相应的系统提示词文件 ## 贡献 欢迎提交问题报告和功能建议,或直接提交代码改进。