TravelContentCreator/docs/PROJECT_OVERVIEW.md

12 KiB
Raw Blame History

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 调用

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 结构

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/)

第三方社交媒体爬虫项目。


四、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 数据库配置 (遗留)

六、快速启动

# 安装依赖
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 APIPrompt Registry
2.0.0 2024-12-07 架构重构