# article-manager **Repository Path**: stone4j/article-manager ## Basic Information - **Project Name**: article-manager - **Description**: 文章管理器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-05 - **Last Updated**: 2026-03-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 📚 文章管理系统 - 后端版 v2.0 一个功能完整的文章管理后端应用,使用 SQLite 数据库存储,支持自动扫描本地文章文件,提供美观的 Web 界面。 ## ✨ 功能特性 ### 📝 文章管理 - 📖 **文章展示** - 卡片式布局,支持内容预览 - 📖 **文章阅读** - 点击阅读按钮查看完整内容,支持 Markdown 渲染 - 🗑️ **文章删除** - 从数据库移除(不删除本地文件) - 📥 **自动同步** - 一键扫描本地文章导入数据库 ### 🏷️ 标签系统 - 🏷️ **添加标签** - 为文章添加多个标签 - 🏷️ **删除标签** - 从单篇文章或全局删除标签 - 🏷️ **标签筛选** - 点击标签云快速筛选相关文章 - 🏷️ **标签云** - 可视化展示所有标签 ### 🔍 搜索筛选 - 🔍 **全文搜索** - 支持标题和内容搜索,高亮显示匹配结果 - 📅 **日期筛选** - 按创建日期筛选文章 - 🏷️ **标签筛选** - 支持多标签组合筛选 - ⚡ **实时搜索** - 输入时自动搜索(防抖优化) ### 📊 数据统计 - 📊 **实时统计** - 文章总数、标签数、本月新增 - 📊 **数字动画** - 统计数据变化时有动画效果 ### 💾 数据管理 - 💾 **SQLite 数据库** - 数据持久化存储 - 📤 **数据导出** - 导出 JSON 格式备份 - 🔄 **自动扫描** - 检测本地新文章并导入 ## 🛠️ 技术栈 - **后端**: Node.js + Express - **数据库**: SQLite (better-sqlite3) - **前端**: 原生 HTML/CSS/JavaScript - **文件扫描**: 自动识别本地 Markdown/HTML/TXT 文件 ## 📁 项目结构 ``` article-manager/ ├── server/ │ ├── server.js # Express 主服务器 │ ├── database.js # SQLite 数据库操作 │ ├── fileScanner.js # 本地文件扫描器 │ └── routes/ │ ├── articles.js # 文章 API 路由 │ └── tags.js # 标签 API 路由 ├── public/ # 前端静态文件 │ ├── index.html # 主页面 │ └── app.js # 前端脚本(增强版) ├── data/ │ └── articles.db # SQLite 数据库文件 ├── package.json # 项目配置 ├── start.bat # Windows 启动脚本 └── README.md # 使用说明 ``` ## 🚀 快速开始 ### 1. 安装依赖 ```bash cd article-manager npm install ``` ### 2. 启动服务器 **Windows**: 双击 `start.bat` **命令行**: ```bash npm start ``` ### 3. 访问系统 打开浏览器访问: http://localhost:3000 ## 📖 使用指南 ### 首次使用 1. **启动系统** - 运行 `start.bat` 或 `npm start` 2. **同步文章** - 点击页面上的 **"📥 同步本地文章"** 按钮 3. **等待完成** - 系统会自动扫描 `../article/` 目录 ### 日常操作 #### 📖 阅读文章 1. 在文章列表中找到想看的文章 2. 点击 **"📖 阅读"** 按钮 3. 在弹窗中查看完整内容(支持 Markdown 渲染) #### 🏷️ 管理标签 1. 点击文章卡片的 **"🏷️ 标签"** 按钮 2. 在输入框输入标签名称,按 **回车** 添加 3. 点击标签上的 **"×"** 删除 4. 点击 **"保存"** #### 🔍 搜索文章 - 在顶部搜索框输入关键词 - 支持标题和内容搜索 - 匹配结果会**高亮显示** #### 🏷️ 按标签筛选 - 点击标签云中的标签 - 可同时选择多个标签 - 再次点击取消筛选 #### 📅 按日期筛选 - 使用日期下拉框选择特定日期 - 选择"所有日期"显示全部 #### 📤 导出数据 - 点击 **"📤 导出"** 按钮 - 下载 JSON 格式的备份文件 ## 🔌 API 接口文档 ### 文章接口 ``` GET /api/articles # 获取文章列表 GET /api/articles?search=xxx # 搜索文章 GET /api/articles?date=2026-03-04 # 按日期筛选 GET /api/articles?tag=AI # 按标签筛选 GET /api/articles/stats # 获取统计数据 GET /api/articles/dates # 获取所有日期 GET /api/articles/:id # 获取单篇文章 POST /api/articles # 创建文章 PUT /api/articles/:id # 更新文章 DELETE /api/articles/:id # 删除文章 PUT /api/articles/:id/tags # 更新文章标签 ``` ### 标签接口 ``` GET /api/tags # 获取所有标签 POST /api/tags # 创建标签 DELETE /api/tags/:name # 删除标签 ``` ### 同步和文件 ``` POST /api/sync # 同步本地文章到数据库 GET /api/file?path=xxx # 获取文件内容 ``` ## 💾 数据库设计 ### 表结构 **articles 表** - 文章信息 ```sql CREATE TABLE articles ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, content TEXT, file_path TEXT UNIQUE, file_name TEXT, file_type TEXT, created_at DATE DEFAULT CURRENT_DATE, updated_at DATE DEFAULT CURRENT_DATE, file_size INTEGER, is_synced BOOLEAN DEFAULT 1 ); ``` **tags 表** - 标签列表 ```sql CREATE TABLE tags ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL, color TEXT DEFAULT '#667eea', created_at DATE DEFAULT CURRENT_DATE ); ``` **article_tags 表** - 文章-标签关联 ```sql CREATE TABLE article_tags ( article_id INTEGER, tag_id INTEGER, PRIMARY KEY (article_id, tag_id), FOREIGN KEY (article_id) REFERENCES articles(id) ON DELETE CASCADE, FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE ); ``` ## 📝 添加新文章 ### 方式一:放入文章目录(推荐) 1. 将 Markdown 文件放入 `../article/YYYY-MM-DD/` 目录 2. 在系统中点击 **"📥 同步本地文章"** 3. 系统自动导入并智能添加标签 ### 方式二:通过 API ```bash curl -X POST http://localhost:3000/api/articles \ -H "Content-Type: application/json" \ -d '{ "title": "新文章", "content": "文章内容...", "file_path": "/path/to/file.md", "file_name": "file.md", "file_type": ".md", "file_size": 1024 }' ``` ## 🎨 界面预览 ### 主界面 ``` ┌─────────────────────────────────────────────┐ │ 📚 文章管理系统 │ │ 管理和筛选你的历史文章 │ ├─────────────────────────────────────────────┤ │ 📊 统计卡片:总文章数 | 标签总数 | 本月新增 │ ├─────────────────────────────────────────────┤ │ 🔍 搜索 + 📅 日期筛选 + 🔄 刷新 + 📥 同步 │ │ 🏷️ 标签云:AI 教程 视频号 小红书 ... │ ├─────────────────────────────────────────────┤ │ ┌─────────────────────────────────────┐ │ │ │ 📄 文章标题 │ │ │ │ 📅 2026-03-04 | 📄 MD | 🏷️ 4个标签 │ │ │ │ 内容预览... │ │ │ │ 🏷️ AI 教程 OpenClaw │ │ │ │ [📖阅读] [🏷️标签] [🗑️删除] │ │ │ └─────────────────────────────────────┘ │ └─────────────────────────────────────────────┘ ``` ### 文章阅读界面 - Markdown 渲染支持 - 代码高亮 - 链接可点击 - 标签快速筛选 ## ⚠️ 注意事项 1. **数据库位置**: `data/articles.db`,请勿删除 2. **文章路径**: 数据库存储文件路径,移动文件后需要重新同步 3. **编码问题**: 确保 Markdown 文件使用 UTF-8 编码 4. **首次启动**: 首次使用需要先同步文章 5. **标签建议**: 使用简洁的标签名,保持标签一致性 ## 🐛 常见问题 ### Q: 启动时提示 "找不到模块" **A**: 运行 `npm install` 安装依赖 ### Q: 同步后没有显示文章 **A**: 检查 `../article/` 目录是否存在 Markdown 文件 ### Q: 如何修改文章内容? **A**: 直接编辑本地 Markdown 文件,然后重新同步 ### Q: 数据库可以迁移吗? **A**: 可以,复制 `data/articles.db` 文件即可 ### Q: 阅读文章时乱码? **A**: 确保 Markdown 文件使用 UTF-8 编码保存 ### Q: 如何备份数据? **A**: 使用"📤 导出"功能,或直接复制 `data/articles.db` 文件 ## 🔮 未来扩展 - [ ] 在线 Markdown 编辑器 - [ ] 文章分类/文件夹管理 - [ ] 全文检索(SQLite FTS) - [ ] 图片上传和管理 - [ ] 多用户支持 - [ ] WebSocket 实时同步 - [ ] 文章分享功能 - [ ] 阅读统计 ## 📄 许可证 MIT License --- **作者**: 小王 🤖✍️ **版本**: 2.0 **创建时间**: 2026-03-04 --- ## 🚀 快速启动命令 ```bash # 1. 进入目录 cd article-manager # 2. 安装依赖 npm install # 3. 启动服务器 npm start # 4. 打开浏览器访问 # http://localhost:3000 ``` Windows 用户直接双击 `start.bat` 即可!