6.6 KiB
6.6 KiB
宇之然内容管理平台
自动化内容生产 + 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️⃣ 启动管理平台(推荐)
cd /root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran
./start-platform.sh 8001
访问:
2️⃣ 测试自动化流水线
cd /root/.openclaw/workspaces/yzr-yxl/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️⃣ 查看当前状态
# 选题库统计
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 界面:平台 → "运行创作任务" 按钮
或命令行:
python scripts/creator.py --topic-id A03
生成发布包
Web 界面:选题 → 发布 → "重新生成"
或命令行:
python scripts/publisher.py --topic-id A01
发布包位置:
content/published/A01/手动发布/
├── 知乎/文章.html
└── 小红书/文章.html
标记为已发布
在 Web 界面"发布管理"中填写各平台链接 → "确认发布"
这会更新选题状态为"已发布"并保存链接。
⚙️ 配置
数据源(automation/config/sources.yaml)
sources:
- name: "新华网-环保频道"
type: "rss"
url: "http://..."
- name: "本地案例库"
type: "local_markdown"
path: "automation/data/cases.md"
环境变量(platform/.env,可选)
PROJECT_ROOT=/root/.openclaw/workspaces/yzr-yxl/projects/yu-zhi-ran
LOG_LEVEL=INFO
📝 开发调试
# 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