本文件为 Claude Code (claude.ai/code) 在本仓库中工作时提供指导。
微信公众号文章批量下载导出工具。基于 Nuxt 3(关闭 SSR,纯客户端 SPA)+ Vue 3 Composition API + Nitro 服务端引擎构建。支持导出 HTML/JSON/Excel/TXT/Markdown/DOCX 格式,其中 HTML 格式可 100% 还原文章排版与样式。
# 安装依赖(要求 Node >= 22,yarn 1.22.22 通过 corepack 管理)
corepack enable && corepack prepare yarn@1.22.22 --activate
yarn
# 开发
yarn dev # 启动开发服务器
# 构建与部署
yarn build # 生产构建(输出到 .output/)
yarn preview # 构建 Cloudflare Pages 版本并本地预览
# 代码格式化(Biome 为主要格式化工具,linter 已禁用)
yarn format # biome check --write
# Docker
yarn docker:build
yarn docker:publish- 客户端(SPA):
app.vue→pages/dashboard.vue为唯一路由页面,所有 UI 均在客户端运行(SSR 已关闭)。 - 服务端(Nitro):
server/api/包含约 25 个接口端点,负责代理转发微信公众平台的 API 请求,处理 CORS 和 Cookie 转发。核心代理逻辑在server/utils/proxy-request.ts。
- 用户通过微信公众平台后台扫码登录认证
apis/index.ts定义客户端 API 函数,调用 Nitro 代理端点- 文章数据获取后经过过滤,通过 Dexie 缓存到 IndexedDB(
store/v2/db.ts) - 下载调度:
utils/download/Downloader.ts使用p-queue管理并发下载 - 导出:
utils/download/Exporter.ts将文章转换为目标格式(Cheerio 处理 HTML、Turndown 转 Markdown、ExcelJS 生成表格、JSZip 打包)
apis/— 客户端 API 函数定义(getArticleList、getAccountList 等)composables/— Vue 3 组合式函数:useDownloader.ts(下载调度)、useExporter.ts(导出逻辑)、useBatchDownload.ts(批量下载管理)store/v2/— 基于 Dexie 的 IndexedDB 缓存(文章、评论、元数据、资源、HTML 内容)utils/download/— 核心下载/导出类:Downloader.ts、Exporter.ts、BaseDownloader.ts、ProxyManager.tsserver/api/web/mp/— 代理微信公众平台请求的 Nitro 端点server/utils/— 服务端工具:代理请求处理、Cookie 管理、日志shared/utils/— 客户端与服务端共享代码(HTML 解析、请求工具函数)config/— 应用常量、公共 API 端点定义、AG Grid 配置types/— TypeScript 类型定义(AppMsgEx、AccountInfo、credentials、comments 等)
Nuxt UI v2 + TailwindCSS 提供组件和样式。AG Grid Enterprise 用于文章数据表格。Monaco Editor 用于代码/调试视图。
- Biome 格式化(非 lint):行宽 120 字符、2 空格缩进、单引号、ES5 尾逗号、带分号
- CSS 使用 4 空格缩进
- Vue 文件:script/style 标签内不额外缩进
- 命名:函数/变量使用 camelCase,组件使用 PascalCase
复制 .env.example 为 .env,关键变量:
NUXT_AGGRID_LICENSE— AG Grid 企业版授权密钥NITRO_KV_DRIVER— 存储驱动(本地/Docker 用fs,Cloudflare 用cloudflare-kv-binding)NITRO_KV_BASE— KV 数据目录(默认:.data/kv)NUXT_DEBUG_MP_REQUEST— 开启微信代理请求调试(仅开发环境)DEBUG_KEY— 调试端点认证密钥