Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WeRead AI 阅读助手

基于微信读书书架数据,使用 DeepSeek AI 帮助用户:

  1. 筛选书籍:分析书架内容,推断兴趣领域,识别知识缺口
  2. 学习知识:针对推荐书籍生成结构化导读
  3. 融入认知地图(后续版本):通过苏格拉底式追问沉淀个人观点

MVP 版本聚焦前两个功能:兴趣分析 + 智能推荐 + 导读生成。


技术栈

  • 前端:Next.js 16 + React 19 + TypeScript + Tailwind CSS + shadcn/ui
  • 后端:Next.js API Routes
  • 数据库:PostgreSQL + Prisma 5(开发/生产统一)
  • LLM:DeepSeek API
  • 微信读书:直接调用微信读书 Agent Gateway API

快速开始

1. 安装依赖

npm install

2. 准备 PostgreSQL 数据库

本项目统一使用 PostgreSQL,开发环境和生产环境一致。

推荐使用 Neon 免费 PostgreSQL:

  1. 注册 Neon 账号
  2. Create a new project
  3. 复制 Connection string

3. 一键启动(推荐)

npm run dev:setup

这个脚本会自动:

  • 安装依赖(如果 node_modules 不存在)
  • 从 .env.example 创建 .env
  • 自动生成有效的 ENCRYPTION_KEY
  • 检查 DATABASE_URL
  • 启动开发服务器

4. 手动启动

如果你不想用脚本:

cp .env.example .env

编辑 .env:

DATABASE_URL="postgresql://用户名:密码@host:5432/dbname?sslmode=require"
DEEPSEEK_API_KEY="your-deepseek-api-key"
ENCRYPTION_KEY="your-64-char-hex-key"
WEREAD_MOCK="false"
  • DATABASE_URL:PostgreSQL 连接字符串(开发/生产一致)
  • DEEPSEEK_API_KEY:从 DeepSeek 平台 获取
  • ENCRYPTION_KEY:运行 node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" 生成
  • WEREAD_MOCK:true 使用模拟书架数据(无需微信读书 key),false 调用真实微信读书 API

然后初始化数据库并启动:

npx prisma migrate dev
npm run dev

访问 http://localhost:3000


获取微信读书 API Key

  1. 访问 https://weread.qq.com/r/weread-skills
  2. 登录微信读书账号
  3. 点击「获取 API KEY」
  4. 复制以 wrk- 开头的 key

项目结构

app/
  page.tsx              # 首页:产品介绍 + 输入 key
  report/[id]/page.tsx  # 分析报告详情页
  api/analyze/route.ts  # 分析 API
components/ui/          # shadcn/ui 组件
lib/
  db.ts                 # Prisma Client
  encryption.ts         # AES-256-GCM 加密
  deepseek.ts           # DeepSeek API 封装
  weread.ts             # 微信读书 API 封装
  analyze.ts            # 分析流程编排
prisma/
  schema.prisma         # 数据库模型
Dockerfile              # 阿里云 FC 容器部署
s.yaml                  # Serverless Devs 部署配置

安全说明

  • 用户微信读书 API Key 使用 AES-256-GCM 加密后存储
  • 加密密钥通过环境变量 ENCRYPTION_KEY 管理,不存入数据库
  • Key 仅用于读取书架数据,不做任何写入操作
  • 用户标识使用 key 的 SHA-256 hash,实现用户隔离

部署到线上

方案一:Vercel + Neon PostgreSQL(推荐)

这是最简单、最快的部署方式,适合验证 MVP。

1. 准备 PostgreSQL 数据库

  1. 访问 Neon 注册账号
  2. Create a new project
  3. 在 Dashboard 中找到 Connection string,复制类似:
    postgresql://用户名:密码@host.neon.tech/dbname?sslmode=require
    

2. 推送代码到 GitHub

cd /Users/tomchen/Documents/project/WeRead
git init
git add .
git commit -m "init"

# 在 GitHub 创建仓库后
gh repo create weread-ai --public --source=. --push
# 或手动:
# git remote add origin https://github.com/你的用户名/weread-ai.git
# git push -u origin main

3. 在 Vercel 导入项目

  1. 访问 Vercel Dashboard
  2. 点击 Add New Project
  3. 选择你的 GitHub 仓库 weread-ai
  4. Framework Preset 会自动识别为 Next.js

4. 配置环境变量

在 Vercel 项目设置的 Environment Variables 中添加:

Name Value
DATABASE_URL Neon 的连接字符串
DEEPSEEK_API_KEY 你的 DeepSeek API Key
ENCRYPTION_KEY 运行下面命令生成
WEREAD_MOCK false

生成 ENCRYPTION_KEY:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

5. 部署

点击 Deploy。Vercel 会自动运行 prisma generate && next build。

6. 初始化数据库

Vercel 首次部署后,在本地运行:

export DATABASE_URL="你的 Neon 连接字符串"
npx prisma migrate deploy

或者使用 Vercel CLI:

npx vercel env pull .env.production.local
npx prisma migrate deploy

7. 完成

访问 Vercel 分配的域名即可使用。


方案二:阿里云部署

如果你需要部署到国内阿里云,请参考下方方案。

阿里云函数计算 FC

使用函数计算 FC 的 Custom Container Runtime 部署,按量付费、自动扩缩容。

1. 准备工作

  • 注册阿里云账号
  • 开通函数计算 FC 和容器镜像服务 ACR
  • 安装 Serverless Devs CLI:
npm install @serverless-devs/s -g
s config add  # 配置阿里云 AccessKey

2. 准备 PostgreSQL 数据库

阿里云提供多种 PostgreSQL 选择:

  • RDS PostgreSQL(推荐生产使用)
  • PolarDB PostgreSQL(高并发)

创建数据库后,复制连接字符串:

postgresql://用户名:密码@host.rds.aliyuncs.com:5432/dbname?schema=public

3. 修改部署配置

编辑 s.yaml:

  • region:你的地域(如 cn-hangzhou、cn-shenzhen)
  • serviceName / functionName:自定义名称
  • image:你的 ACR 镜像地址

4. 构建并推送镜像

# 登录阿里云 Docker 仓库
# 在 ACR 控制台获取登录命令

# 构建镜像
docker build -t registry.cn-hangzhou.aliyuncs.com/你的命名空间/weread-ai:latest .

# 推送镜像到 ACR
docker push registry.cn-hangzhou.aliyuncs.com/你的命名空间/weread-ai:latest

5. 部署函数

# 设置环境变量后部署
export DATABASE_URL="postgresql://..."
export DEEPSEEK_API_KEY="sk-..."
export ENCRYPTION_KEY="你的64位hex密钥"

s deploy

6. 初始化数据库

export DATABASE_URL="postgresql://..."
npx prisma migrate deploy

7. 绑定自定义域名

在函数计算控制台:

  1. 进入你的函数
  2. 点击「域名管理」
  3. 添加自定义域名
  4. 配置 DNS 解析
  5. 申请/上传 HTTPS 证书

方案二:阿里云轻量应用服务器

适合想要完全掌控服务器、预算固定的场景。

1. 购买服务器

  • 推荐配置:2 核 4G 起步
  • 系统镜像:Ubuntu 22.04 / CentOS 8

2. 安装环境

# 安装 Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# 安装 PM2
sudo npm install -g pm2

# 安装 Nginx
sudo apt-get install -y nginx

# 安装 PostgreSQL
sudo apt-get install -y postgresql postgresql-contrib

3. 配置 PostgreSQL

sudo -u postgres psql -c "CREATE DATABASE weread;"
sudo -u postgres psql -c "CREATE USER weread_user WITH PASSWORD '你的密码';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE weread TO weread_user;"

4. 部署代码

# 在服务器上
git clone https://github.com/你的用户名/weread-ai.git
cd weread-ai
npm install
npm run build

# 设置环境变量
export DATABASE_URL="postgresql://weread_user:密码@localhost:5432/weread"
export DEEPSEEK_API_KEY="sk-..."
export ENCRYPTION_KEY="你的64位hex密钥"
export WEREAD_MOCK="false"

# 初始化数据库
npx prisma migrate deploy

5. 用 PM2 启动

pm2 start npm --name "weread-ai" -- start
pm2 save
pm2 startup

6. 配置 Nginx

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

然后申请 SSL 证书(可用 certbot)。


生产环境检查清单

  • DATABASE_URL 使用 PostgreSQL,不是 SQLite
  • ENCRYPTION_KEY 是强随机 64 位 hex 密钥
  • DEEPSEEK_API_KEY 已配置且有效
  • WEREAD_MOCK="false"
  • 已执行 npx prisma migrate deploy
  • 已配置 HTTPS
  • 已绑定自定义域名
  • .env 未提交到 Git

后续计划

  • 苏格拉底式追问流程
  • 认知地图可视化
  • 用户账户系统(替代 key hash)
  • 阅读进度追踪
  • 多轮对话与笔记沉淀

About

微信读书Agent

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages