yaojingang
profound-clone
Profound (tryprofound.com) 前后台 1:1 学习复刻 · Next.js 16 / React 19 / SQLite · Educational replica for learning only, not affiliated with Profound Inc.
Documentation snapshot
README 快照
翻译暂时拿不到。
机器翻译的项目简介,仅供参考。原文在下方,也可以直接用浏览器自带的整页翻译 (Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」)。
下面正文是项目自己的英文 README。想读全文就用浏览器自带的整页翻译: Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」; 手机浏览器一般在菜单里。
本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。
Profound Clone
仅供学习交流使用 · An educational local replica of Profound (tryprofound.com). 非官方项目,与 Profound Inc. 无任何关联。/ Not affiliated with Profound Inc. All product names and trademarks belong to their respective owners.
对 AI Search 可视化平台 Profound 的前后台 1:1 学习性复刻:营销官网、产品工作台、平台管理后台三大界面,SQLite 数据层,以及一个可交互的 Agent 模拟引擎。页面与数据基于对公开营销站点的逆向抓取整理(未访问任何需登录的私有页面)。
图片:stack 图片:react 图片:db 图片:ts
截图
| 营销官网(黑色主题) | Answer Engine Insights |
|---|---|
| 图片:营销官网 | 图片:Answer Engine Insights |
| 引用分析 | Prompt Volumes |
|---|---|
| 图片:引用分析 | 图片:Prompt Volumes |
| Agent 与运行 trace | Aim 对话助手 |
|---|---|
| 图片:Agent 详情 | 图片:Aim 对话助手 |
| Pricing | 管理后台(深色主题) |
|---|---|
| 图片:Pricing | 图片:管理后台 |
界面一览
| 层 | 路由 | 主题 | 内容 |
|---|---|---|---|
| 营销官网 | / | 黑色 | 首页、Pricing、Customers、Blog、Careers、Enterprise、AEO Guide、Agent Templates、Integrations、9 个 Features 子页、7 个 Solutions 子页 |
| 产品工作台 | /app | 浅色 | Answer Engine Insights、Visibility / Citations / Sentiment / FactCheck、Prompt Volumes、Agents & Runs、Aim 对话助手、Pages、Shopping、Dashboards |
| 管理后台 | /admin | 深色 | 平台总览、用户、工作区(credits 用量)、Agent 舰队与全平台 Runs、销售线索 |
核心功能
- 7 个 AI 引擎可视化:ChatGPT、Perplexity、Claude、Gemini、Microsoft Copilot、AI Overviews、DeepSeek —— 每日可见度趋势、引用分类(earned / owned / social / competition)、品牌情绪、FactCheck 勘误
- Aim(AI Marketer)对话助手:用自然语言提问可见度 / 引用 / 情绪 / 提示词缺口,或直接触发 Agent —— 会真实写入运行记录与步骤 trace、扣减 trial credits
- Agent 系统:7 个可复用工作流(内容写作、页面优化、引用追踪、FactCheck、社交、购物、发布套件),带运行历史与逐工具耗时
- 认证与权限:scrypt 密码哈希、httpOnly session cookie、middleware 预检、owner / admin 双角色
- 示例数据:虚构品牌 Wrenfield(城市电动自行车)工作区 —— 40 条提示词、90 天可见度数据、引用域名、Agent 模板库、销售线索
快速开始
npm install
npm run seed # 生成示例数据库(data/profound.db)
npm run build && npm start
# 打开 http://localhost:3000
开发模式:npm run dev(首次需先 seed)。
演示账号
| 角色 | 邮箱 | 密码 |
|---|---|---|
| 工作区 Owner | demo@profound.local | demo1234 |
| 平台管理员 | admin@profound.local | admin1234 |
登录页可勾选 “Log in as platform admin” 直接切换。
技术栈
- Next.js 16.4 — App Router、async params、
cacheComponents(PPR 部分预渲染)、Turbopack - React 19 + server components(数据全部在服务端查询,图表 props 用可序列化枚举)
- Tailwind CSS v4 — 单应用三套主题
- better-sqlite3(WAL 模式)— 单文件数据库,
scripts/seed.mjs一键重建
项目结构
app/
(site)/ # 营销官网(首页、features、solutions、customers…)
app/ # 产品工作台(insights、prompts、agents、aim…)
admin/ # 平台管理后台
api/ # auth / aim / leads 接口
login/ signup/ # 认证页
components/ # 图表、双 shell(app/admin)、营销组件、FeatureViz
lib/ # db、auth、session、app-queries、features
scripts/seed.mjs # 示例数据生成
middleware.ts # /app /admin cookie 预检
开发笔记:Next.js 16 cacheComponents 的四个坑
- 渲染期禁用
new Date()—— 会打断 prerender 探测。会话过期判断下推到 SQL:expires_at > datetime('now')。 export const dynamic不可用 —— 需要阻塞式动态路由时用export const instant = false。- Server 组件不能传函数 props 给 Client 组件 —— 图表坐标轴格式化用字符串枚举(
yFmt="pct" | "k")替代格式化函数。 - SQLite 时间戳必须统一格式 —— JS
toISOString()(T分隔)与datetime('now')(空格分隔)混存时,ORDER BY字典序会错排。统一用.toISOString().slice(0, 19).replace("T", " ")。
免责声明 / Disclaimer
本项目仅供个人学习与研究,用于了解现代 SaaS 产品的信息架构、Next.js App Router 与数据可视化实践:
- 与 Profound Inc. 无任何隶属、合作或授权关系;未使用其任何私有代码、私有数据或付费内容;
- 所有品牌名称与商标归各自所有者所有;示例数据均为虚构;
- 请勿将本项目用于商业用途,请勿部署为公开对外服务;
- 如有侵权请联系删除。
Official distribution
获取与安装
暂未发现可确认的官方软件包地址
当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。
本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。
Before installing
使用前核验
本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。