面向微信公众号的内容创作工作台:选题 → 大纲 → 正文 → 配图 → 预览 / 检测 → 推送草稿箱。支持桌面与移动端;长任务异步执行,前端轮询进度。
- 创作流程:工作台选题 → 多方案大纲 → 正文生成(含精炼关)/ 扩写 / 润色 → 标题摘要与配图 → 公众号样式预览 → 推送草稿箱 / 同步到博客
- AI:主模型 + 可选辅助模型(可跨厂商);封面与章节配图(需配置图像模型);面向微信「高信息量 / 反低质 AIGC」的写作约束与风险检测
- 内容质量:生成后自动精炼(提信息密度、去套话);风险检测覆盖 AI 套话、闲聊开篇、空洞注水、同质化骨架等信号
- 账号:登录 / 注册;文章与设置按用户隔离;超管可管理用户
- 后台任务:大纲 / 正文 / 配图等入队执行,浮标追踪进度;支持每用户并发与日配额
- 博客同步:将正文转为 Markdown,经 GitHub Contents API 写入 vuepressblog,触发 Pages 自动部署
Next.js 16、React 19、Tailwind CSS 4、PostgreSQL、Prisma、Zod、Vitest
需要 Node.js 20+ 与 PostgreSQL。
npm install
cp .env.example .env
# 终端 1:本机 Postgres(无 Docker 时)
npm run db:pg
# 或:docker compose up -d db
# 终端 2
npx prisma migrate deploy
npx prisma generate
npm run dev打开 http://localhost:3000。默认超管见 .env.example 中的说明。
在 设置 页配置 AI / 图像 / 微信公众号,或写入环境变量(完整列表见 .env.example)。
注册需填写邮箱并完成邮箱验证码验证;忘记密码通过绑定邮箱的验证码重置。邮件支持双通道(见
.env.example):
- SMTP:
MAIL_PROVIDER=smtp+SMTP_HOST/SMTP_PORT/SMTP_SECURE/SMTP_USER/SMTP_PASS/SMTP_FROM(163 / QQ / 企业邮等,全局配一次即可给任意收件人发信) - Resend:
MAIL_PROVIDER=resend+RESEND_API_KEY+SMTP_FROM(发件域名需在 Resend 验证)
不配 MAIL_PROVIDER 时默认 auto:有 RESEND_API_KEY 走 Resend,否则有 SMTP_HOST 走 SMTP。
未配置任何通道时,开发模式把验证码打印到服务端日志,生产环境会提示「邮件服务未配置」。
正文生成后,可在文章页「发布」区点击 同步到博客,将 Markdown 写入 vuepressblog 的 website/sync/<section>/,并触发 GitHub Actions 部署到 GitHub Pages。
每个账号可在自己的「设置 → 博客同步」里填 GitHub Token(contents:write + actions:write)、
目标仓库、分支与站点 URL。Token 仅保存在该用户下,其他人不可见。
未在设置中填写时会回退到 .env 中的全局默认值:
BLOG_GITHUB_TOKEN=ghp_xxx # PAT:contents:write + actions:write
BLOG_GITHUB_REPO=lp-Imagine/vuepressblog
BLOG_GITHUB_BRANCH=master
BLOG_SITE_URL=https://lp-imagine.github.io/vuepressblog/契约见博客仓库 docs/SYNC.md。同一篇文章再次同步会覆盖同路径文件(幂等)。
npm run dev # 开发
npm run db:pg # 本机嵌入式 Postgres
npm run build # 生产构建
npm run start # 生产运行
npm run test # 单元测试docker compose up -d --buildCompose 会启动 PostgreSQL 与应用。请持久化 Postgres 数据卷,并参考 .env.example 配置 DATABASE_URL、任务配额、COOKIE_SECURE 等。
反代时建议拉长超时(如 proxy_read_timeout 300s),示例见 docker/nginx-baota.conf.example。有域名并启用 HTTPS 后,将 COOKIE_SECURE=1。
从旧版 SQLite 迁库可用:npm run db:migrate:sqlite-to-pg(需自行指定 SQLITE_PATH 与 DATABASE_URL)。
仓库可公开;下列内容不要提交到 Git,也不要发到 Issue / 聊天:
.env、API Key、微信 AppSecret、数据库密码、超管密码- 数据库备份 / 导出(含用户与文章)、服务器 SSH 密钥
本地:cp .env.example .env 后只改自己的 .env(已忽略)。
生产:务必设置强 POSTGRES_PASSWORD / SUPER_ADMIN_PASSWORD;未设超管密码时生产环境会生成随机密码并打一次日志。仅 HTTP 时不要开 COOKIE_SECURE;上 HTTPS 后再设 COOKIE_SECURE=1。
Private — 本地 / 内部使用。