# ArticleSync **Repository Path**: fan-jibe/article-sync ## Basic Information - **Project Name**: ArticleSync - **Description**: 开源的文章同步管理系统,详见README.md - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-02 - **Last Updated**: 2026-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ArticleSync 文章管理系统,覆盖 **文章编辑 / 多平台抓取(掘金 / CSDN / 知乎)/ 多平台一键发布**。 ## 数据流 ``` 浏览器扩展抓 HTML ↓ 前端 Turndown 转 Markdown ↓ 后端 MySQL 落库 ↓ 详情页 markdown-it 渲染 ``` > **HTML → Markdown 转换在前端做**(`apps/frontend/src/utils/markdown-converter.ts`),原因 MV3 Service Worker 没有 `document` 跑不了 Turndown。 ## 子项目 | 子项目 | 技术栈 | 端口 | 入口 | |---|---|---|---| | [apps/frontend/](apps/frontend/README.md) | Vue3 + Vite + TypeScript + Element Plus | 3001 | `pnpm dev:frontend` | | [apps/backend/](apps/backend/README.md) | Express + TypeScript + MySQL + JWT | 3002 | `pnpm dev:backend` | | [apps/extension/](apps/extension/README.md) | Manifest V3 浏览器扩展 | - | `pnpm build:extension` | | [proxy-server/](proxy-server/README.md) | Node.js HTTP/HTTPS 代理(http-proxy) | 3000 | `pnpm --filter proxy-server start` | 子项目细节(目录结构 / 接口 / 消息 / 平台适配器)见各自的 README.md。 ## 快速开始 ```bash # 1. 安装依赖 pnpm install # 2. 准备数据库 # MySQL 8 起一个 articlesync 库(默认配置见 apps/backend/.env.example) # 跑种子(创建表 + 写入 testuser / 123456 + 教程文章) cd apps/backend && pnpm seed # 3. 启动后端 + 前端 pnpm dev:backend # 端口 3002 pnpm dev:frontend # 端口 3001 # 4. 浏览器装扩展 # 访问 http://localhost:3001/config/extension,按 3 步教程安装 ZIP ``` ## 跨子项目约定 新人 / 新功能前请阅读 [AGENTS.md](AGENTS.md) 根文档(关键技术约定)。 - **HTML → Markdown 在前端**:Turndown 跑在 `apps/frontend/src/utils/markdown-converter.ts`,原因 MV3 Service Worker 没有 `document` 跑不了 Turndown - **stats 字段统一 4 项**:`views / likes / comments / favorites`(**没有 shares**) - **图片本地化**:用户上传 / 抓取第三方图片落 `uploads/images/{yyyy-mm}/`,走 `/uploads/*` 静态访问 - **统一提示**:前端走 `apps/frontend/src/utils/event-bus.ts` 事件总线(`'error' | 'success' | 'warning' | 'info'`),由 `App.vue` 全局监听渲染为 `ElMessage`。业务页面**禁止**直接 `import { ElMessage }` - **发布链路 A 路统一**:扩展 background 调平台草稿 Web API,**完全不开 tab、不填表单**。`apps/extension/src/publish/wechatsync-adapters/` 移植自 [wechatsync v2](https://github.com/wechatsync/Wechatsync) `a98e428`,GPL-3.0-or-later ## 文档 - [AGENTS.md](AGENTS.md) — 跨子项目关键技术约定 - [apps/frontend/README.md](apps/frontend/README.md) — 前端约定 / 关键目录 / Breadcrumb - [apps/backend/README.md](apps/backend/README.md) — 接口列表 / 数据库 / 图片本地化 / AI 对话 - [apps/extension/README.md](apps/extension/README.md) — 目录结构 / 架构 / 平台适配器 / 抓取 - [proxy-server/README.md](proxy-server/README.md) — 代理服务配置 - [docs/DESIGN.md](docs/DESIGN.md) — 系统设计 - [docs/API-DOC.md](docs/API-DOC.md) — API 文档