# TravelContentCreator 项目总览 > 更新日期: 2024-12-10 > 版本: 2.3.0 --- ## 一、项目简介 TravelContentCreator 是一个 **旅游内容自动创作系统** 的 Python 后端服务,主要功能包括: - **选题生成** - 基于热点、节日、目标人群生成小红书选题 - **内容生成** - 生成小红书风格的图文笔记正文 - **海报生成** - 自动生成配图海报 - **热点数据** - 多平台热点数据采集 ### 技术栈 | 组件 | 技术 | |-----|------| | Web 框架 | FastAPI | | AI 模型 | OpenAI GPT-4 | | 模板引擎 | Jinja2 | | 配置格式 | YAML / JSON | | 图像处理 | Pillow | | 爬虫 | aiohttp / MediaCrawler | --- ## 二、目录结构 ``` TravelContentCreator/ ├── api/ # FastAPI 应用层 │ ├── main.py # 应用入口 │ ├── routers/ # API 路由 │ │ ├── aigc.py # V2 AIGC 统一接口 │ │ ├── hotspot.py # 热点数据 API │ │ ├── prompt.py # Prompt 管理 API │ │ └── reference.py # 参考文献 API │ ├── models/ # 请求/响应模型 │ └── services/ # 服务层 (部分已迁移) │ ├── domain/ # 领域层 (核心业务逻辑) │ ├── aigc/ # AIGC 引擎 │ │ ├── engines/ # 引擎实现 │ │ │ ├── base.py # 引擎基类 │ │ │ ├── topic_generate_v2.py │ │ │ ├── content_generate_v2.py │ │ │ └── poster_generate_v2.py │ │ ├── engine_registry.py # 引擎注册 │ │ ├── engine_executor.py # 引擎执行器 │ │ └── shared/ # 共享组件 │ │ └── llm_client.py # LLM 客户端 │ │ │ ├── hotspot/ # 热点数据模块 │ │ ├── crawlers/ # 爬虫实现 │ │ │ ├── base.py # 爬虫基类 │ │ │ ├── baidu.py # 百度热搜 │ │ │ ├── bing.py # Bing 搜索 │ │ │ ├── calendar.py # 节日日历 │ │ │ ├── weibo.py # 微博热搜 │ │ │ ├── xiaohongshu.py # 小红书 │ │ │ └── mediacrawler/ # MediaCrawler 桥接 │ │ ├── manager.py # 热点管理器 │ │ └── models.py # 数据模型 │ │ │ ├── prompt/ # Prompt 管理 │ │ ├── registry.py # PromptRegistry │ │ └── reference_manager.py # 参考文献管理 │ │ │ ├── poster/ # 海报领域 │ │ ├── poster_service.py # 海报服务 │ │ ├── poster_renderer.py # 渲染器 │ │ ├── template_manager.py # 模板管理 │ │ └── fabric_generator.py # Fabric.js JSON │ │ │ ├── content/ # 内容领域 │ │ ├── topic_engine.py # 选题引擎 │ │ ├── content_engine.py # 内容引擎 │ │ └── judge_engine.py # 评判引擎 │ │ │ └── container.py # 依赖注入容器 │ ├── prompts/ # Prompt 模板 (YAML) │ ├── topic_generate/ # 选题生成 Prompt │ ├── content_generate/ # 内容生成 Prompt │ ├── content_judge/ # 内容评判 Prompt │ └── reference/ # 参考文献库 │ ├── titles.yaml # 标题范例 │ └── contents.yaml # 正文范例 │ ├── poster/ # 海报模板 │ ├── templates/ # 模板实现 │ │ ├── vibrant_template.py # 活力风格 │ │ ├── business_template.py # 商务风格 │ │ └── collage_template.py # 拼图风格 │ └── utils.py # 图像处理工具 │ ├── config/ # 配置文件 │ ├── ai_model.json # AI 模型配置 │ ├── engines.json # 引擎配置 │ ├── poster_gen.json # 海报生成配置 │ └── ... │ ├── libs/ # 外部库 │ └── MediaCrawler/ # 社交媒体爬虫 │ ├── core/ # 核心模块 (部分遗留) ├── docs/ # 文档 └── tests/ # 测试 ``` --- ## 三、核心模块 ### 3.1 AIGC 引擎 (`domain/aigc/`) 统一的 AIGC 引擎框架,支持选题、内容、海报生成。 #### 引擎列表 | 引擎 | 类 | 状态 | 说明 | |-----|-----|------|------| | `topic_generate` | `TopicGenerateEngineV2` | ✅ | 选题生成 | | `content_generate` | `ContentGenerateEngineV2` | ✅ | 内容生成 | | `poster_generate` | `PosterGenerateEngineV2` | ✅ | 海报生成 | #### 架构设计 ``` EngineRegistry (引擎注册) ↓ EngineExecutor (引擎执行) ↓ BaseEngine (引擎基类) ├── TopicGenerateEngineV2 ├── ContentGenerateEngineV2 └── PosterGenerateEngineV2 ``` #### API 调用 ```bash POST /api/v2/aigc/execute { "engine": "topic_generate", "params": { "style_id": "travel_casual", "audience_id": "young_couple", "hot_topics": {...} } } ``` --- ### 3.2 热点数据模块 (`domain/hotspot/`) 多平台热点数据采集和管理。 #### 爬虫列表 | 爬虫 | 类 | 状态 | 说明 | |-----|-----|------|------| | 百度热搜 | `BaiduCrawler` | ✅ | 实时热点 + 旅游榜 | | 节日日历 | `CalendarCrawler` | ✅ | 预设节日数据 | | 小红书 | `XiaohongshuCrawler` | ✅ | MediaCrawler 集成 | | Bing | `BingCrawler` | ✅ | 搜索建议 | | 微博 | `WeiboCrawler` | ⚠️ | 需要优化 | #### 架构设计 ``` HotspotManager (热点管理器) ├── BaiduCrawler ├── BingCrawler ├── CalendarCrawler ├── XiaohongshuCrawler (→ XHSCrawlerBridge → MediaCrawler) └── WeiboCrawler ``` #### API 路由 | 方法 | 路径 | 说明 | |-----|------|------| | GET | `/api/v2/hotspot/all` | 获取所有来源 | | GET | `/api/v2/hotspot/baidu` | 百度热搜 | | GET | `/api/v2/hotspot/bing` | Bing 搜索 | | GET | `/api/v2/hotspot/calendar` | 节日日历 | | GET | `/api/v2/hotspot/xiaohongshu` | 小红书热门 | | GET | `/api/v2/hotspot/travel` | 旅游相关聚合 | | GET | `/api/v2/hotspot/trending` | 热门话题 | --- ### 3.3 Prompt 管理 (`domain/prompt/`) YAML 格式的 Prompt 版本管理系统。 #### 核心组件 | 组件 | 说明 | |-----|------| | `PromptRegistry` | Prompt 加载、版本管理、模板渲染 | | `ReferenceManager` | 参考文献库管理 (标题/正文范例) | #### Prompt YAML 结构 ```yaml meta: name: topic_generate version: "2.0.0" description: "选题生成" model: temperature: 0.2 top_p: 0.3 variables: - name: style type: object required: true system_prompt: | 你是一个小红书内容策划专家... user_prompt: | 请根据以下信息生成选题: 风格: {{ style.name }} ``` #### 参考文献库 位置: `prompts/reference/` | 文件 | 说明 | |-----|------| | `titles.yaml` | 55+ 爆款标题模板 | | `contents.yaml` | 10+ 完整正文范例 | | `index.yaml` | 配置索引 | --- ### 3.4 海报模块 (`domain/poster/` + `poster/`) 自动生成配图海报。 #### 组件 | 组件 | 说明 | |-----|------| | `PosterServiceV2` | 轻量服务,无数据库依赖 | | `PosterRenderer` | 渲染引擎 | | `TemplateManager` | 模板管理 | | `FabricGenerator` | Fabric.js JSON 输出 | #### 模板 | 模板 | 说明 | |-----|------| | `vibrant` | 活力风格 | | `business` | 商务风格 | | `collage` | 拼图风格 | --- ### 3.5 MediaCrawler 集成 (`libs/MediaCrawler/`) 第三方社交媒体爬虫项目。 - **来源**: https://github.com/NanmiCoder/MediaCrawler - **支持平台**: 小红书、抖音、微博、B站、快手、知乎、贴吧 - **桥接器**: `domain/hotspot/crawlers/mediacrawler/xhs_crawler.py` --- ## 四、API 概览 ### V2 API (主要使用) | 路由前缀 | 说明 | |---------|------| | `/api/v2/aigc` | AIGC 统一接口 | | `/api/v2/hotspot` | 热点数据 | | `/api/v2/reference` | 参考文献管理 | ### V1 API (部分保留) | 路由前缀 | 状态 | |---------|------| | `/api/v1/prompt` | ✅ 可用 | | `/api/v1/tweet` | ❌ 已禁用 | | `/api/v1/poster` | ❌ 已禁用 | --- ## 五、配置文件 | 文件 | 说明 | |-----|------| | `config/ai_model.json` | AI 模型配置 (API Key, Model) | | `config/engines.json` | 引擎配置 | | `config/poster_gen.json` | 海报生成配置 | | `config/paths.json` | 路径配置 | | `config/database.json` | 数据库配置 (遗留) | --- ## 六、快速启动 ```bash # 安装依赖 pip install -r requirements.txt # 启动服务 cd /root/TravelContentCreator PYTHONPATH=. uvicorn api.main:app --host 0.0.0.0 --port 8001 # 测试 curl http://localhost:8001/ curl http://localhost:8001/api/v2/hotspot/baidu?limit=10 ``` --- ## 七、文档索引 | 文档 | 说明 | |-----|------| | `PROJECT_OVERVIEW.md` | 项目总览 (本文档) | | `PROJECT_STATUS.md` | 详细项目状态 | | `HOTSPOT_MODULE.md` | 热点模块文档 | | `NEXT_PHASE_PLAN.md` | 下阶段计划 | | `POSTER_REFACTOR_PLAN.md` | 海报重构计划 | | `TECHNICAL_DEBT.md` | 技术债务分析 | | `JAVA_MIGRATION_GUIDE.md` | Java 端迁移指南 | | `ARCHITECTURE_V2_MAINTAINABLE.md` | 架构设计 V2 | --- ## 八、技术债务 (摘要) 详见 `docs/TECHNICAL_DEBT.md` | 问题 | 优先级 | |-----|--------| | 数据库双端访问 | 🔴 高 | | ppid/sid/pid 混乱 | 🔴 高 | | 图片 Base64 传输 | 🟡 中 | | 临时文件堆积 (943MB) | 🟡 中 | | 巨型文件 (poster.py 3031行) | 🟡 中 | --- ## 九、模块依赖关系 ``` ┌─────────────────────────────────────────────────────────────┐ │ API Layer │ │ api/routers/aigc.py hotspot.py reference.py prompt.py │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Domain Layer │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ aigc │ │ hotspot │ │ prompt │ │ poster │ │ │ │ engines │ │ crawlers │ │ registry │ │ service │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Infrastructure │ │ prompts/ config/ libs/MediaCrawler poster/templates │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 十、版本历史 | 版本 | 日期 | 说明 | |-----|------|------| | 2.3.0 | 2024-12-10 | 热点模块增强,MediaCrawler 集成 | | 2.2.0 | 2024-12-09 | 海报服务重构,参考文献库 | | 2.1.0 | 2024-12-08 | V2 AIGC API,Prompt Registry | | 2.0.0 | 2024-12-07 | 架构重构 |