这是一个基于 TESTV「值不值得买」视频内容整理的中文产品目录站。公开站点提供产品搜索、排序、分类筛选、详情页、/api/products 和 sitemap。
当前生产运行时只读取脱敏公开快照 public-catalog/products.json,不需要连接 Postgres。Prisma/Postgres 仍保留给本地维护端,用于同步视频、补字幕、抽取产品、清洗回填和导出新的公开快照。
最近一次完整维护端基准以 npm run sync:status 为准,历史口径约为 Video.total=705、Product.total=705。
npm install
npm run dev -- --port 3001打开:
http://localhost:3001
页面数据来自 public-catalog/products.json。如果当前文件还是空快照,页面会正常启动但目录为空。
维护端数据库可用后运行:
npm run db:generate
npm run sync:status
DRY_RUN=true npm run export:public-catalog
npm run export:public-catalog导出脚本会复用展示层清洗逻辑,只写入公开页面/API 需要的字段,不导出完整 Transcript.content、抓取日志、cookie 路径、ASR 响应或原始 data/** 资产。
导出或手动修复快照后运行:
npm run public-catalog:audit
npm run privacy:checkpublic-catalog:audit 会检查总数、状态分布、缺评分/价格/字幕、坏名称、公开占位和空 searchIndex。缺评分、缺价格和缺字幕只作为报告项;公开占位、坏名称和空 searchIndex 会失败退出。
Copy-Item .env.docker.example .env
docker compose up -d --buildDocker 生产栈只启动 app 服务,并随镜像携带 public-catalog/products.json。部署、升级、回滚和 VPS 自动部署见 docs/deployment.md。
完整文档入口见 docs/README.md。
- docs/quick-start.md:最短本地启动步骤。
- docs/backfill-guide.md:字幕抓取、ASR、AI 清洗、快照导出和状态指标。
- docs/testing.md:自动化、API、页面和数据验收。
- docs/deployment.md:只读 JSON 生产部署和维护端数据库边界。
- AGENTS.md:维护者和 Agent 工作规则。
本地生产预览形态:
npm run build
$env:APP_URL="http://localhost:3001"
$env:NEXT_PUBLIC_APP_URL="http://localhost:3001"
$env:PORT="3001"
npm startnpm start 会为本地 standalone 预览准备 .next/static、public 和 public-catalog 资源,再启动 .next/standalone/server.js。日常开发仍可使用 npm run dev -- --port 3001,但上线验收建议使用生产预览,避免 dev HMR 和文件监听造成页面闪烁。
VPS 生产 standalone 形态:
$env:APP_URL="https://your-domain.example"
$env:NEXT_PUBLIC_APP_URL="https://your-domain.example"
$env:PORT="3003"
node .next/standalone/server.js重点检查 /api/health、/api/products?sort=date&pageSize=3、/api/products?sort=score&pageSize=3、/robots.txt 和 /sitemap.xml。/api/health 应返回 catalog.generatedAt、catalog.products 和 catalog.sourceType。
- 公开运行时不在线写库,线上默认没有数据库容器。
prisma/schema.prisma变更、线上数据库写入和全量回填必须先得到确认。- 本地回填先跑小批量
DRY_RUN=true,确认后再分批写入。 - 文档和公开文案统一使用 UTF-8 简体中文。
- 修改 Next.js 相关代码前,先阅读本仓库
node_modules/next/dist/docs/中对应版本文档。 - 提交信息遵循 Conventional Commits,详细规则见 AGENTS.md。
本仓库只应提交代码、文档、测试、脱敏样例和公开快照。以下内容不要提交到 GitHub:
.env、.env.*、生产deploy/.env、数据库备份和本地 SQLite/Postgres 数据文件。youtube-cookies.txt、Bilibili Cookie、浏览器 profile、任何导出的登录态 cookie。data/下的原始字幕、ASR 响应、yt-dlp/Bilibili/browser 抓取响应、错误日志和完整导出。- OpenAI/Codex Manager 凭据、GitHub token、SSH 私钥、VPS 密码和任何真实 API key。
提交前运行:
npm run privacy:check