e1ba31afda
- 修复system.py缩进错误 - 优化前端页面样式(待重构) - 改进API接口结构 - 完善文档和自动化脚本 - 平台基本功能稳定运行
263 lines
6.5 KiB
Markdown
263 lines
6.5 KiB
Markdown
# 宇之然内容管理平台
|
||
|
||
> 自动化内容生产 + Web 管理界面
|
||
|
||
一个可持续、可管理的内容创业系统,实现从选题采集到多平台发布的全流程自动化。
|
||
|
||
---
|
||
|
||
## 🎯 核心能力
|
||
|
||
- ✅ **全自动流水线**:采集 → 创作 → 合规 → 发布准备(每日凌晨运行)
|
||
- ✅ **Web 管理界面**:一键控制、实时监控、可视化发布包管理
|
||
- ✅ **降级策略**:外部源失效时自动切换本地案例库,保证稳定产出
|
||
- ✅ **多平台支持**:知乎、小红书、微信公众号(HTML 发布包)
|
||
- ✅ **风控设计**:半自动发布(生成 HTML + 人工复制),避免平台封号
|
||
|
||
---
|
||
|
||
## 📦 项目结构(简洁版)
|
||
|
||
```
|
||
yu-zhi-ran/
|
||
├── platform/ # Web 管理平台(FastAPI + Vue 3)
|
||
│ ├── backend/ # API 服务
|
||
│ └── frontend/ # 管理界面
|
||
├── automation/ # 自动化数据 + 日志
|
||
│ ├── data/ # JSON 选题库、草稿、发布包
|
||
│ ├── logs/ # 运行日志
|
||
│ └── scripts/ → ../scripts/ # 软链到 scripts/
|
||
├── scripts/ # CLI 脚本(collector, creator, optimizer...)
|
||
├── content/ # 已发布内容存储
|
||
├── config/ # 配置文件(RSS源、机器人)
|
||
├── start-platform.sh # 快速启动管理平台
|
||
└── README_NEW.md # 本文档
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1️⃣ 启动管理平台(推荐)
|
||
|
||
```bash
|
||
cd /root/openclaw-workspace/projects/yu-zhi-ran
|
||
./start-platform.sh 8001
|
||
```
|
||
|
||
访问:
|
||
- 界面:http://localhost:8001/
|
||
- API 文档:http://localhost:8001/docs
|
||
|
||
### 2️⃣ 测试自动化流水线
|
||
|
||
```bash
|
||
cd /root/openclaw-workspace/projects/yu-zhi-ran
|
||
python test_full_pipeline.py --topic-id A01
|
||
```
|
||
|
||
预期输出:
|
||
- 生成 `automation/data/drafts/2026-04-19/A01_*.md`
|
||
- 生成 `automation/data/releases/2026-04-19/*/A01_*.html`
|
||
- 合规自动通过
|
||
|
||
### 3️⃣ 查看当前状态
|
||
|
||
```bash
|
||
# 选题库统计
|
||
python -c "import json; d=json.load(open('automation/data/sustainability_topics.json')); print(f'总{len(d)} 待处理:{sum(1 for t in d if t.get(\"status\")==\"待处理\")} 待发布:{sum(1 for t in d if t.get(\"status\")==\"待发布\")}')"
|
||
|
||
# 日志(今日)
|
||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 系统架构
|
||
|
||
```
|
||
定时任务 (cron)
|
||
│
|
||
├─▶ 05:00 collector.py → automation/data/sustainability_topics.json(选题)
|
||
├─▶ 05:30 creator.py → drafts/ + releases/(HTML)
|
||
├─▶ 05:45 optimizer.py → 合规报告
|
||
└─▶ 06:00 publisher.py → content/published/(发布包)
|
||
|
||
Web 平台(可选控制)
|
||
│
|
||
├─▶ 一键触发创作/优化
|
||
├─▶ 查看选题列表和详情
|
||
├─▶ 生成发布包、预览HTML、复制
|
||
└─▶ 查看实时流水线状态
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 当前运行状态(2026-04-19)
|
||
|
||
| 指标 | 数值 |
|
||
|------|------|
|
||
| 总选题数 | 22 |
|
||
| 待处理 | 20 |
|
||
| 待发布 | 2 (A01, A02) |
|
||
| 自动运行 | ✅ 正常(05:00-06:00) |
|
||
| 最新运行 | A02(05:30 完成,8秒) |
|
||
| 合规通过率 | 100%(3/3) |
|
||
|
||
待发布内容已就绪,可手动发布到知乎/小红书。
|
||
|
||
---
|
||
|
||
## 🎮 主要操作指南
|
||
|
||
### 触发创作任务
|
||
|
||
**Web 界面**:平台 → "运行创作任务" 按钮
|
||
|
||
**或命令行**:
|
||
```bash
|
||
python scripts/creator.py --topic-id A03
|
||
```
|
||
|
||
### 生成发布包
|
||
|
||
**Web 界面**:选题 → 发布 → "重新生成"
|
||
|
||
**或命令行**:
|
||
```bash
|
||
python scripts/publisher.py --topic-id A01
|
||
```
|
||
|
||
发布包位置:
|
||
```
|
||
content/published/A01/手动发布/
|
||
├── 知乎/文章.html
|
||
└── 小红书/文章.html
|
||
```
|
||
|
||
### 标记为已发布
|
||
|
||
在 Web 界面"发布管理"中填写各平台链接 → "确认发布"
|
||
|
||
这会更新选题状态为"已发布"并保存链接。
|
||
|
||
---
|
||
|
||
## ⚙️ 配置
|
||
|
||
### 数据源(automation/config/sources.yaml)
|
||
|
||
```yaml
|
||
sources:
|
||
- name: "新华网-环保频道"
|
||
type: "rss"
|
||
url: "http://..."
|
||
|
||
- name: "本地案例库"
|
||
type: "local_markdown"
|
||
path: "automation/data/cases.md"
|
||
```
|
||
|
||
### 环境变量(platform/.env,可选)
|
||
|
||
```bash
|
||
PROJECT_ROOT=/root/openclaw-workspace/projects/yu-zhi-ran
|
||
LOG_LEVEL=INFO
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 开发调试
|
||
|
||
```bash
|
||
# 1. 检查环境
|
||
cd platform
|
||
python check.py
|
||
|
||
# 2. 启动服务(开发模式)
|
||
./run.sh 8000
|
||
|
||
# 3. 查看 API 日志(新终端)
|
||
tail -f automation/logs/creator_$(date +%Y-%m-%d).log
|
||
|
||
# 4. 重置数据库(如需)
|
||
rm -f data/yzr.db
|
||
cd platform/backend
|
||
python -c "from app.database import init_db; init_db(); from app.initial_data import import_topics_from_json; import_topics_from_json()"
|
||
```
|
||
|
||
---
|
||
|
||
## 🚧 注意事项
|
||
|
||
### 路径规范
|
||
|
||
所有 `platform/backend/app/**/*.py` 必须使用相对路径计算 `PROJECT_ROOT`:
|
||
|
||
- `app/database.py`, `initial_data.py`: `Path(__file__).resolve().parents[3]`
|
||
- `app/api/*.py`, `app/core/*.py`: `Path(__file__).resolve().parents[4]`
|
||
|
||
禁止使用硬编码绝对路径!
|
||
|
||
### 软链接
|
||
|
||
```
|
||
platform/data → ../data
|
||
platform/logs → ../logs
|
||
automation/scripts → ../scripts/
|
||
```
|
||
|
||
这些链接确保平台和自动化模块共享数据。
|
||
|
||
### 数据流向
|
||
|
||
**唯一真理源**:`automation/data/sustainability_topics.json`
|
||
|
||
- 所有状态更新(待处理 → 待发布 → 已发布)都应写入此 JSON
|
||
- `platform` 通过 `sync.py` 同步到 SQLite 供前端快速查询
|
||
- 不要直接修改数据库而不更新 JSON!
|
||
|
||
---
|
||
|
||
## 📚 详细文档
|
||
|
||
- `YUZHIRAN_PLATFORM.md` - 完整项目文档(架构、API、扩展)
|
||
- `platform/PORTFOLIO.md` - 平台架构详解
|
||
- `platform/README.md` - 平台使用说明
|
||
- `PROJECT_STRUCTURE.md` - 目录结构说明
|
||
|
||
---
|
||
|
||
## 🐛 故障排查
|
||
|
||
| 问题 | 检查点 | 命令 |
|
||
|------|--------|------|
|
||
| Web 界面无数据 | JSON 是否同步? | `curl http://localhost:8000/api/system/status` |
|
||
| 创作失败 | creator 日志 | `tail -n 50 automation/logs/creator_*.log` |
|
||
| 发布包缺失 | releases 目录 | `ls automation/data/releases/$(date +%Y-%m-%d)/` |
|
||
| 端口占用 | 8000 被谁用? | `lsof -i:8000` |
|
||
|
||
---
|
||
|
||
## 🎉 现状总结
|
||
|
||
昨天(4月18日)完成:
|
||
- 数据源切换(新华网+人民网)
|
||
- 降级策略(本地案例库保底)
|
||
- 锁机制(2小时超时)
|
||
- publisher 发布包系统
|
||
- 前端管理界面
|
||
|
||
今天(4月19日):
|
||
- 统一项目结构,整合 platform + automation
|
||
- 修正所有路径计算
|
||
- 添加软链接统一数据目录
|
||
- 创建启动脚本和文档
|
||
|
||
**状态**:✅ 系统稳定运行,每日自动产出内容,Web 平台就绪。
|
||
|
||
---
|
||
|
||
**维护**: AI 助手小然
|
||
**更新**: 2026-04-19
|