项目介绍 · 新人入门

从一条抖音评论
到一条已送达的私信

Akke 是面向全屋定制行业的智能获客 SaaS:抓抖音评论 → AI 筛意向 → 人工审核 → 自动私信触达。这一页是新人入职后理解全貌所需的背景知识;要找具体文档/报告,去知识库目录。

产品 · 抖音获客 + AI 筛选 + 自动 DM 目标客户 · 全屋定制商家(橱柜/衣柜/家具) 当前阶段 · V1 内测(2026-04 起)

项目快照

技术栈
Next.js 16 · TS
App Router · Tailwind v4 · shadcn UI
部署平台
Vercel + Fly.io
前端: akke.upio.ai · worker: akke-worker-prod (NRT)
数据库
Supabase Postgres
21 migrations · 多租户 RLS · Auth SSO
LLM 网关
OpenRouter
Chat: Qwen3-235B · Analysis: DeepSeek V3

业务全景 · 7 步流水线

从公开评论到私信送达,再到人工接手成交。

① 抓评论 视频/评论入库 ② AI 评分 高/中/低意向 ③ AI 起草 个性化首发 ④ 人审 通过/编辑/拒绝 ⑤ 自动发送 本地 Mac / iPhone WDA ⑥ 跟进回复 收件箱轮询 ⑦ 转交微信 人接管成交 公 域 数 据 私 域 触 达

三段式架构

前端 + API

🖥️ Vercel · Next.js 16

仪表盘 UI(运营审消息)+ API 层 + Vercel Cron 定时器(每天 9 点抓 / 10 点评分 / 12 点查回复 / 23 点出日报)。鉴权用 Supabase SSR。

事实源

🗄️ Supabase Postgres

三方共享的唯一事实源。多租户隔离靠 Row-Level Security 政策按 org_id 自动过滤。schema 在 supabase/migrations/

脏活承包商

🤖 Fly.io Worker · Python

FastAPI + Playwright,跑在东京。负责所有需要"调抖音原生 API / 开浏览器"的脏活:评论抓取、签名直调、号源解析。

新人必读 · 六件大事

① Supabase 是唯一事实源

三段代码不直接通信,全部通过 Supabase 共享状态。任何一段改了数据,下一轮其他段读到的就是新值 —— 没有消息总线、没有 webhook 总线。

② Fly worker 必须 cd worker 再 deploy

仓库根有 node_modules.next,不进子目录 build context 会炸到 1.9GB;-c worker/fly.toml 不会改 root。正确:cd worker && fly deploy

③ Worker HTTP 200 可能是假成功

抖音发送失败时 worker 仍返回 HTTP 200 + {success:false}。只判 res.ok 会把"没发出去"当成功。必须同时判 data.success,且解 protobuf 校验业务级 status_code。

④ Fly Tokyo 出口 IP 被抖音封

handle/搜索/profile API 全返回空;QR 登录面板根本不出现。绕过路径:评论抓取走 f2 签名直调;号源解析走 v.douyin.com 短链 302;Cookie 在本地 Mac Playwright 登录后导入;DM 已切到本地 iPhone WDA。

⑤ 陌生人 DM 是 1 条/对/方向 永久配额

同一 sec_uid 招呼信息只能发 1 条 — 对方没回复 / 没互关之前再发都返 7462 错误码。规模触达只能扩号,单号扩不动。

⑥ 推完 ≠ 已部署

必须 gh run list 确认 CI success,再用 curl 验证生产文件包含改动。Vercel 推 main 自动部署;worker 必须手动 fly deploy,不在 CI 里。

你是哪种角色 · Day 1

🧑‍💼

Staff

Akke 内部团队
  • Lark SSO 登录
  • Org Switcher 切组织巡检
  • /staff/admin 管授权
  • 读"多租户三层防御"
👔

Owner

商家老板
  • 配置抖音号源(粘链接即可)
  • /knowledge 录品牌话术
  • /members 邀审批员
  • /stats 看转化率
🧑‍🔧

Operator

一线审批员
  • /queue 待审消息
  • 3 选 1:通过/编辑/拒绝
  • 有疑问看"评论的旅程"
  • 下班看 /stats 自评
👨‍💻

工程师

开发 Akke 本身
  • clone + 补 5 个密钥
  • npm run dev
  • npm run test:all 健康体检
  • 必读 CLAUDE.md

术语速查

org 组织 / 租户
一家客户公司在 Akke 里的隔离单位,所有数据按 org_id 强隔离。
sec_uid
抖音用户内部 ID,36 位字符串。系统内部使用,永远不要让用户手动输入,由分享链接自动解析。
scraping account vs messaging account
两类抖音账号:抓评论的(公开数据)vs 发 DM 的(私域触达)。独立账号池、独立速率预算、独立健康监控,一边被风控不影响另一边。
intent_score 意向打分
0~10 分。LLM 看完评论 + IP 属地 + 视频上下文给的"这条评论后的人多想买"评分。≥7 算高意向,触发自动起草。
stage 状态机
conversation 的 5 阶段:ice_break(破冰)→ nurture(沟通)→ decision(要微信)→ handed_off(人接手)→ closed
message_queue 闸门
所有出站 DM 必须先经过这张表:pending_approval 等审、approved 待发、rejected 丢弃、sent 已送达。没有"自动发不审"模式。
RLS Row-Level Security
Postgres 的行级权限。Akke 每张业务表的 RLS 政策都是"只能看自己 org 的行",由 Supabase auth 自动注入用户身份。
WDA WebDriverAgent
2026-04-30 后的 DM 发送方案:iPhone 真机 + WDA 自动化抖音 app + iPhone Mirroring 远程操控。比 Web 路径风控宽松 10 倍。
handoff 转交
LLM 检测到客户表达决策意向("加微信"/"现在能上门"),自动推品牌微信号 / 二维码并标 handed_off,运营人工接手。

外部资源