Write once, publish everywhere.
多平台内容分发工具——在一个界面里完成 Markdown 写作、AI 选题、一键分发到微信公众号、小红书、知乎、X (Twitter)。
写作台
- Markdown 编辑器(桌面富编辑 / 移动端降级 textarea),实时字符数、段落、标题层级、预计阅读时长
- 成稿预览(接近公众号排版效果)
- 自动保存(停止输入 1s 触发,首次保存自动创建草稿并更新 URL)
- Editorial context 卡片:标题状态、结构统计、可发布建议
AI 写作助手(可选,需配置 LLM)
- 编辑器 Slash 命令:
/ai-expand(扩写)、/ai-condense(缩写)、/ai-rewrite(改写)、/ai-polish(润色)、/ai-continue(续写) - 右侧流式输出面板,支持插入、替换、复制
- 支持任意 OpenAI 兼容 API(智谱GLM、DeepSeek、通义千问、OpenAI、Ollama 等)
AI 选题工作台
- 从 9 个 RSS 数据源抓取 24h AI 行业动态 → 话题聚类 → 五维评分 → 最多 10 条候选题
- 每条附带研究底稿(事件经过、重要性、影响方、写作切口、多方视角、配图)
- AI 深度分析(可选,需配置 LLM):多角度解读、趋势判断、写作建议
- 一键转稿到写作台(含 LLM 分析融入)
稿件库
- 持久化草稿管理(手动创建 / AI 选题转稿),支持状态跟踪(draft → ready → synced)
- Pipeline 视图按「来源 → 写作台 → 分发」展示全部稿件,支持批量删除
多平台发布
- 并发发布(Promise.allSettled),支持微信公众号、小红书、知乎、X (Twitter)
- AI 平台适配(可选):一键生成各平台风格内容(小红书 emoji/tag、X 精炼、微信长文润色)
- 发布进度浮层(右下角轮询更新各平台状态)
- 同步任务追踪:各平台回执、失败原因、AI 诊断、重试 / 手动标记完成
- 发布时机建议(基于历史发布数据)
- 各平台内容格式适配(字数校验、样式转换)
平台连接管理
- 设置页统一管理 API 凭证,OAuth 平台支持一键授权
- 微信 / X 支持凭证验证,连接状态持久化并展示已连接账号名
响应式导航
- 桌面端侧边栏,移动端底部 Tab 栏
- Node.js >= 18
- pnpm
git clone https://github.com/rogerdigital/publio.git
cd publio
pnpm install
cp .env.example .env.local # 填入平台凭据(也可启动后在设置页配置)
pnpm dev # 自动清理残留进程和缓存pnpm dev 会先清理残留的 Next.js 开发进程并清空 .next/cache。跳过清理用 pnpm run dev:raw。
访问 http://localhost:3000 即可使用。
pnpm dev # 开发模式(含端口清理)
pnpm build # 生产构建
pnpm start # 启动生产服务
pnpm preview # 构建 + 启动
pnpm test # 运行测试(Vitest)
pnpm lint # ESLint 检查
pnpm verify # 完整验证(lint + test + build)┌─────────────────────────────────────────────────────────┐
│ Next.js 15 App Router │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ 写作台 │ │ 稿件库 │ │ AI 选题 │ │ 设置 │ │
│ │ / │ │ /drafts │ │ /ai-news │ │/settings│ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬────┘ │
│ │ │ │ │ │
│ ┌────▼──────────────▼──────────────▼──────────────▼───┐ │
│ │ Zustand Store │ │
│ │ (content / platforms / draftId / publishState) │ │
│ └─────────────────────┬──────────────────────────────┘ │
│ │ │
│ ┌─────────────────────▼──────────────────────────────┐ │
│ │ API Routes │ │
│ │ drafts · publish · ai-news · sync-tasks · settings │ │
│ └───┬──────────┬──────────┬──────────┬───────────────┘ │
│ │ │ │ │ │
│ ┌───▼───┐ ┌───▼───┐ ┌───▼───┐ ┌───▼───┐ │
│ │ WeChat│ │ XHS │ │ Zhihu │ │ X │ 各平台发布器 │
│ └───────┘ └───────┘ └───────┘ └───────┘ │
└─────────────────────────────────────────────────────────┘
数据存储:JSON 文件(.publio-data/),原子写(.tmp + rename)
完整目录结构和文件说明见 CLAUDE.md。
Next.js 15 (App Router) · React 19 · TypeScript 5 (strict) · vanilla-extract · Zustand 5 · marked 15 · eventsource-parser · Vitest + Testing Library
- 路径别名
@/*→./src/*,类型定义集中在src/types/index.ts - 客户端组件标注
'use client',重组件用dynamic()按需加载 - 每个组件对应同目录
.css.ts文件,设计 token 集中在src/styles/tokens.css.ts - 第一方源码统一 TypeScript,不新增 JS 源文件(生成产物和第三方代码除外)
各平台 API 密钥通过 .env.local 配置,启动后在设置页也可管理:
| 平台 | 变量 | 获取方式 |
|---|---|---|
| 微信公众号 | WECHAT_APP_ID, WECHAT_APP_SECRET |
mp.weixin.qq.com → 开发 → 基本配置 |
| 小红书 | XHS_APP_ID, XHS_APP_SECRET, XHS_ACCESS_TOKEN |
小红书开放平台 |
| 知乎 | ZHIHU_COOKIE |
浏览器登录后从 DevTools Network 面板复制 Cookie |
| X (Twitter) | X_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET |
developer.x.com |
| 变量 | 说明 |
|---|---|
AGENT_BASE_URL |
OpenAI 兼容 API 地址(如 https://open.bigmodel.cn/api/paas/v4) |
AGENT_API_KEY |
对应平台的 API Key |
AGENT_MODEL |
模型名(如 glm-4-flash、deepseek-chat) |
AGENT_MAX_TOKENS |
可选,默认 2048 |
AGENT_TEMPERATURE |
可选,默认 0.7 |
三项必填配置完成后,编辑器 AI 命令、选题深度分析、平台适配、发布诊断功能自动激活。
- 更多平台支持(掘金、CSDN、B 站专栏)
- 图片上传与管理(图床集成)
- 排版模板系统
- 定时发布
- AI 写作辅助(扩写/缩写/改写/润色/续写)
- AI 平台内容适配
- AI 选题深度分析
- AI 发布诊断与智能重试
- 数据看板(各平台阅读量、互动数据聚合)