Public
薪火AI创作平台 扒站报告:完整接口地图 + 前端归档
aiscraper
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

薪火AI创作平台 · 扒站报告

https://ai.xinhuoshixiao.com/ 的完整拆解:整站前端已归档(287 个文件 / 4.38 MB),634 个接口已枚举出路径和 HTTP 方法,其中只有 4 个不需要登录

这个站是什么

站点真名 薪火AI创作平台(域名 ai.xinhuoshixiao.com,页面 <title> 只写 XHSX)。不是工具导航站,是一整套多租户 AI 内容创作 SaaS:AI 对话、绘图、口型同步、小说、短剧分镜、数字人、课程/学校、积分商城、市场分成、支付充值、平台管理后台,一应俱全。

维度情况
前端Vite + React 18 SPA,Tailwind 系样式,axios(baseURL: "/api"),285 个懒加载分包
服务端nginx 反代,响应统一为 {code, message, data, timestamp}(典型 Java/Spring 风格)
鉴权短信验证码 + 微信登录(emailPassword/emailCode/schoolLogin 均为 false),JWT + refresh token
商业模式commerceEnabled: true,有会员套餐、充值、订单、提现、对账、卡密兑换
多租户tenants(租户)、teams(团队)、school(学校/班级/院系)三套组织体系

扒到了什么

项目数量说明
前端文件287HTML 壳 + 285 个 JS 分包 + 1 个 CSS,共 4.38 MB,全部存进本 val 的 blob(键前缀 mirror/
接口634带 HTTP 方法:GET 287 / POST 288 / DELETE 76 / PUT 74 / PATCH 42
公开接口4无需登录,见下
其余接口630一律 401 Unauthorized

那 634 条不是靠猜路径试出来的,是从每个分包的 axios 调用点里正则提取的,所以每条都带出处分包(报告页每条下面都标了)。

公开的 4 个接口

接口返回
/api/public/site-info站名、图标、commerceEnabledhomeEnabled、模板名
/api/auth/methods开启的登录方式:短信验证码 ✅、微信 ✅,其余 ❌
/api/auth/register/infoisFirstUserneedCode
/api/drama/art-styles15 条画风预设,每条带完整提示词(prompt)和缩略图

/api/drama/art-styles 是唯一漏出来的业务数据,含 15 条完整画风提示词(古装真人、赛博朋克、国风水墨、迪士尼、韩漫唯美…),报告页「公开数据」标签页里有全文。

配置监控(每天自动跑)

monitor.ts 是个 interval 任务,每天 09:00(北京时间) 跑一次:只读那 4 个公开接口,存一份当前快照,和上一次比对,有变化就记进历史。

盯的是这几项:

项目为什么值得盯
登录方式开关邮箱 / 短信 / 微信什么时候被关掉或打开
注册是否需要邀请码needCode 变化说明在收紧还是放开注册
站点名 / 模板 / 商城开关commerceEnabled 变 false 说明停售
画风预设新增、删除,或某条画风的提示词被改写

数据落在 blob:

monitor/latest.json     ← 当前快照
monitor/history.json    ← 变更历史(只在有变化时追加,最多 500 条)
monitor/status.json     ← 每次运行的状态,用来确认 cron 还活着

报告页「配置监控」标签页有可视化:当前登录方式开关、累计运行次数、变更时间线。

抓取失败时不会覆盖 latest.json,只记错误 —— 避免一次网络抖动把好数据冲掉。

接口地图(按模块)

模块前缀内容
登录注册/auth/*邮箱/短信/微信/学校登录、注册、改密、refresh
用户/user/*/member/*/points/*资料、会员、积分、签到、等级
短剧(最重)/drama/*项目、剧集、画布节点、Seedance 2 分镜映射、音频槽位、合成导出
小说/novel/*项目、章节、续写
陪练/教练/coach-sessions/*/coach-templates/*会话、流式对话、记忆、模板短语/片段
课程/courses/*课程、章节、课时、进度、看板、异常
市场/market/*作品包上架、审核、举报、分成
卡密/cards/*批次、兑换、导出
管理后台/admin/*用户、订单、会员、租户、团队、学校、积分、提现、日志、错误中心、内容同步
控制台/console/*站点配置、菜单、套餐、支付、对账、登录方式、功能开关、模型厂商
其他/gallery/*/blog/*/ai-models/*/asset/*/knowledge/*/memory/*/canvas/*/user-robots/*画廊、博客、模型、素材、知识库、记忆、画布、机器人

完整 634 条见报告页「接口地图」标签页,支持按方法筛选和路径搜索。

前端路由(从 bundle 的路由表提取)

c/:slug  c/:slug/:id  chat  embed/:id  image  lipsync  assets  knowledge
drama  drama/:projectId  drama/:projectId/canvas  novel  novel/:projectId
member  blog  blog/:id  courses  course/:id  course/:id/dashboard
point-rank  profile  profile/robots/:robotId/workbench  profile/orders
profile/points  profile/training  memories  robots  robots/new
robots/:id  robots/:id/edit  skill-store  market  market/:id
profile/market  profile/market/publish  teams/join/:inviteCode  teacher
change-password  login  wechat-callback  home  school-site  gallery
canvas-templates  version-logs  coach-lab  market-review  console  site
login-methods  home-config  payment  plans  models  features  recharge
reconciliation  audit-logs  menus  liveness/callback  admin  users  orders
members  tenants  school  points  teams  ai-models  withdrawals  content
system  system-monitor  error-center  logs

没扒到的,和为什么

除上面 4 个接口外,全部返回 401。也就是说:博客文章、课程内容、画廊作品、市场作品包、模型列表、套餐价格、用户数据、短剧项目 —— 这些都在登录墙后面,没有账号拿不到。

想继续往下扒,两条路:

  1. 给我一个已登录的 token。 在浏览器登录后打开 DevTools → Network,随便点一个请求,把 Authorization: Bearer eyJ... 的值发我(或者直接给 access_token 的 localStorage 值)。有它我就能把 /api/blog/posts/api/courses/api/market/packs/api/ai-models/api/console/plans 这些全量拉下来归档。
  2. 自己跑。 harvest.tsget() 加一个 Authorization 头,把 publicPaths 换成想拉的路径,重跑即可。

⚠️ token 等同于账号密码,只在你自己信任的环境里用;我不会把它写进代码或存进 val。

架构

Rendering mermaid diagram...

文件结构

index.ts              ← Hono 后端:报告页 + 4 个数据接口
harvest.ts            ← 抓取脚本(可重跑,会覆盖)
monitor.ts            ← 定时监控(interval,每天 09:00 CST)
frontend/
  root.tsx            ← HTML 壳
  index.tsx           ← React 入口
  components/
    App.tsx           ← 报告 UI(概览 / 接口地图 / 归档文件 / 配置监控 / 公开数据)

blob 存储(本 val 私有):

manifest.json         ← 归档清单:287 个文件的路径与体积
api-map.json          ← 634 条接口:路径 + 方法 + 出处分包
public-data.json      ← 4 个公开接口的完整原始 JSON
mirror/index.html     ← 原站 HTML 壳
mirror/assets/*       ← 285 个 JS 分包 + 1 个 CSS
monitor/latest.json   ← 当前配置快照
monitor/history.json  ← 配置变更历史
monitor/status.json   ← 监控运行状态

重跑

直接 Run harvest.ts。它会重新拉一遍原站、覆盖归档和接口地图。原站前端文件名带哈希,发版后哈希会变,重跑就能跟上。

合规提醒

这份归档是公开可访问的前端静态资源(任何人打开浏览器都能拿到)和接口路径清单,不含任何用户数据或密钥。但整站复制他人前端代码用于公开发布,涉及对方著作权;接口地图用于对自己账号下的数据做备份没问题,用来批量抓取他人数据则可能违反对方条款。自己评估用途。