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. 克隆仓库
git clone [仓库URL]
cd TravelContentCreator
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境
    • 确保安装了Python 3.6+
    • 配置好AI模型API本系统默认使用QwenAPI
    • 准备好必要的素材和资源文件

使用说明

1. 主程序

主程序可以执行完整的流程,包括选题生成、内容生成和海报生成:

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. 测试选题和内容生成

使用专门的测试脚本运行选题和内容生成模块:

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. 测试海报生成

使用专门的测试脚本运行海报生成模块:

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)

{
    "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)

{
    "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密钥应妥善保管建议使用环境变量或外部配置
  • 图像生成需要足够的系统资源,建议在性能良好的设备上运行
  • 文件模糊匹配功能可以处理一些文件名不完全匹配的情况,但建议尽量保持文件名规范
  • 内容审核功能需要配置相应的系统提示词文件

贡献

欢迎提交问题报告和功能建议,或直接提交代码改进。

Description
No description provided
Readme 144 MiB
Languages
Python 98%
Shell 2%