一个围绕“真实 X 登录态绑定 -> 推荐流抓取 -> 去重归档 -> AI 整理 -> 报告与发布”打造的内容工作台。
当前仓库已经不是最早期的单点抓取 Demo,而是一套可本地运行、可 Docker 部署、可继续演进的管理平台:支持真实 X 账号绑定、按账号维护抓取策略、沉淀帖子归档、配置 AI 模型、生成报告、整理发布草稿,并管理微信公众号 / 知乎 / CSDN 等发布渠道。
推荐模式、热点模式、搜索模式,并通过可视化周期配置管理抓取频率。绑定账号 + 帖子 ID 去重,沉淀正文、媒体、链接、关系信息和抓取来源。以下截图来自当前仓库本地运行环境。
| 首页概览 | 工作台仪表盘 |
|---|---|
![]() |
![]() |
| 绑定与渠道工作区 | 策略工作区 |
|---|---|
![]() |
![]() |
| 归档中心 | AI 模型与调用审计 |
|---|---|
![]() |
![]() |
flowchart LR
A["登录平台"] --> B["绑定真实 X 账号"]
B --> C["保存加密 Cookie 与账号资料"]
C --> D["创建抓取策略"]
D --> E["定时 / 手动执行抓取"]
E --> F["标准化帖子与媒体"]
F --> G["按账号 + 帖子 ID 去重归档"]
G --> H["分类 / 标签 / AI 自动分析"]
H --> I["生成周报 / 月报"]
I --> J["创建发布草稿"]
J --> K["投放到公众号 / 知乎 / CSDN"]
x.com/home 推荐流、热点页和搜索结果页。| 层级 | 技术 |
|---|---|
| 前端 | Next.js 16、React 19、TypeScript、Tailwind CSS 4、ShadCN / Base UI |
| 后端 | NestJS 11、Prisma、Playwright |
| 数据库 | PostgreSQL |
| 认证 | NextAuth.js 5 beta + Prisma Adapter |
| AI / 网关 | 多 Provider / 多 Model 配置、调用审计、任务模型路由 |
| 包管理 | pnpm workspace |
| 部署 | Docker Compose / Vercel + Neon |
.
├── apps
│ ├── api # NestJS API、抓取执行、AI、报告、发布、Prisma
│ └── web # Next.js 管理后台
├── docs # 需求、设计、TODO、部署文档
├── packages
│ └── config # 共享配置
└── docker-compose.yml
cp .env.example .env
如果你使用本仓库自带的 Docker PostgreSQL,请把 .env 中的 DATABASE_URL 改成:
DATABASE_URL=postgresql://postgres:postgres@localhost:55432/auto_x_to_wechat?schema=public
关键变量:
| 变量 | 说明 |
|---|---|
DATABASE_URL |
PostgreSQL 连接串 |
NEXTAUTH_SECRET |
NextAuth 会话密钥 |
NEXTAUTH_URL |
Web 地址 |
INTERNAL_API_BASE_URL |
Web 访问 API 的内部地址 |
INTERNAL_API_SHARED_SECRET |
Web / API 内部签名密钥 |
CREDENTIAL_ENCRYPTION_KEY |
凭证与 Cookie 加密密钥 |
CRAWLER_ADAPTER_NAME |
mock 或 real |
X_BINDING_SESSION_TIMEOUT_SECONDS |
X 浏览器绑定会话时长 |
REAL_CRAWLER_MAX_POSTS |
单次真实抓取帖子上限 |
pnpm install
pnpm db:migrate
pnpm --filter api db:seed
默认演示账号:
demo@example.com
demo123456
pnpm dev
默认地址:
http://localhost:3000http://localhost:3001docker compose --profile full up -d --build
docker compose exec api pnpm --filter api db:seed
默认地址:
http://localhost:3000http://localhost:300155432http://localhost:6080/vnc.html?autoconnect=1&resize=scale&reconnect=1当前 docker-compose.yml 为了更安全的默认体验,api 服务里默认使用:
CRAWLER_ADAPTER_NAME: mock
如果你要测试真实 X 绑定与真实抓取,请把它改成:
CRAWLER_ADAPTER_NAME: real
然后重新构建 API:
docker compose up -d --build api web
绑定 页面。x.com 登录流程。绑定 页面发起浏览器辅助绑定。绑定:验证真实 X 绑定、账号状态、凭证校验和发布渠道管理。策略:验证多账号策略拆分、模式切换和周期配置。归档:验证推荐流沉淀、媒体、详情、分类标签。AI 模型:验证 Provider / Model 配置、测试连接和调用审计。报告:验证周报 / 月报生成与编辑。发布:验证草稿管理、AI 改写、渠道发布工作流。推荐在提交前执行:
pnpm --filter web test
pnpm --filter api test
pnpm --filter api build
pnpm --filter web build
如果 API 测试依赖本地 Docker PostgreSQL,可显式指定:
DATABASE_URL='postgresql://postgres:postgres@localhost:55432/auto_x_to_wechat?schema=public' pnpm --filter api test
适合自托管、内网部署、个人服务器。
建议流程:
db + api + web。推荐拓扑:
关键点:
apps/webDATABASE_URL 同时供 Web 与 API 使用INTERNAL_API_BASE_URL 指向已部署的 NestJS API详细说明见 docs/部署上线说明.md。
$ claude mcp add TideDesk \
-- python -m otcore.mcp_server <graph>