多来源采集
Notion 数据库轮询、HTTP /v1/ingest 推送、WikiFX 热点选题三条入口,统一归一为内容任务。
多来源采集
Notion 数据库轮询、HTTP /v1/ingest 推送、WikiFX 热点选题三条入口,统一归一为内容任务。
LLM 生成
按语言 × 平台生成平台化文案,Prompt 版本化可回滚,生成质量可审计。
人工审核
生成内容默认进入审核工作台;除非显式授权,绝不自动发布。
自动路由发布
语言 × 类型 × 平台的路由矩阵决定目标账号,经 Postiz 发布并提供投递对账与数据分析。
社媒自动发布系统把「内容来源 → 多语言生成 → 人工审核 → 多平台发布 → 效果分析」串成一条可审计的流水线。
| 模块 | 说明 |
|---|---|
apps/api |
NestJS 单体:Notion 轮询、WikiFX 热点读取、HTTP ingest、LLM 生成、路由矩阵、Postiz 发布(BullMQ worker 同进程) |
apps/console |
Next.js 运营控制台:热点选题 / 内容队列 / 审核工作台 / 发布记录 / 数据分析 / 设置 |
apps/wikifx-content |
WikiFX 正文抓取 sidecar:curl_cffi 抓取、四级正文抽取、SQLite 缓存 |
apps/docs |
本站:Astro Starlight 文档站(静态,部署于 Cloudflare Pages) |
Notion(10语言×2表) ─┐ ┌─> XHTTP /v1/ingest ────┼─> api ─> LLM 生成 ─> 审核工作台 ─> Postiz ─┤─> InstagramWikiFX 热点 ─> 选题 ─┘ (轮询/队列) (console) └─> Facebook │ Postgres(状态) Redis(队列: BullMQ) └─> wikifx-content sidecar(抓取 + SQLite 正文缓存)REVIEW,除非显式开启 AUTO_PUBLISH,绝不自动发布理解以下四个概念,就能读懂系统的大部分行为。
每条内容(ContentItem)在生命周期中经历以下状态:
PENDING ──> GENERATING ──> REVIEW ──> APPROVED ──> PUBLISHING ──> PUBLISHED │ │ │ │ └──> REJECTED └──> FAILED │ └──> FAILED(生成失败,可重新入队)
SUPERSEDED:同一来源内容出现新版本,旧任务自动作废PENDING → GENERATING:内容入库后进入生成队列(BullMQ)REVIEW:生成完成,等待人工审核;这是默认的必经关口APPROVED → PUBLISHING:审核通过后按路由拆分为发布子任务PUBLISHED:全部子任务收敛为成功FAILED:生成或发布失败,失败原因记录在内容与子任务两级一条内容可能对应多个平台/账号的发布子任务,每个子任务独立跟踪:
| 子任务状态 | 含义 |
|---|---|
queued |
已入队,等待 worker 领取 |
publishing |
已被 worker 原子领取,正在调用 Postiz |
sent |
Postiz 已受理(注意:不等于社媒投递成功,见投递对账) |
failed |
失败,可在发布记录页重试 |
unknown |
客户端未收到响应,结果未知,需要人工对账 |
cancelled |
因内容版本更新而作废 |
路由规则形如 语言 × 内容类型 × 平台 → 账号,支持 * 通配内容类型,同一命中可配置多行(priority 决定优劣)。
publishTargets),之后即使路由配置变化,不影响已批准的内容| 变量 | 作用 |
|---|---|
DRY_RUN=true |
只让 Postiz 生成草稿,不推送社媒正式外网 |
AUTO_PUBLISH=true |
跳过人工审核自动发布(WikiFX 与历史重生成内容除外,它们始终强制审核) |
(source, externalId, contentHash) 唯一,同一素材重复推送不会重复生成state=ERROR)回退为可重试状态packageManager 字段锁定)docker-compose.yml 单独起)pnpm install --frozen-lockfile
# 生成 Prisma Client 并应用迁移pnpm db:generatepnpm db:migrate环境变量参照根目录 .env.example(每个变量带注释)。任何情况下不要把真实密钥提交进仓库。
# API(含 BullMQ worker 与定时任务,同进程)pnpm dev:api
# 控制台pnpm dev:console
# 文档站(本站在 apps/docs)pnpm --filter docs dev| 命令 | 作用 |
|---|---|
pnpm build |
构建全部包 |
pnpm --filter api build |
仅构建 API |
pnpm --filter api test |
运行 API 测试(node:test) |
pnpm --filter console build |
仅构建控制台 |
pnpm --filter docs build |
仅构建文档站 |
.env、不触发真实发布」的纪律DRY_RUN=true