Đây là hồ sơ nộp Khung năng lực AI 07/2026 của Apero. Sản phẩm md2link biến mọi tài liệu thành URL sạch, có preview trực tiếp, đi kèm MCP server để AI agent (Claude / Cursor / VS Code) tạo — sửa — quản lý folder chỉ bằng ngôn ngữ tự nhiên.
aihub@apero.vnDemo tạo doc markdown, share HTML/JSON, gọi MCP tools từ Claude, và quản lý folder — end-to-end.
Chia sẻ markdown / HTML / JSON tưởng đơn giản nhưng các option hiện tại đều thiếu: Gist không render đẹp, Notion đóng, Pastebin không có MCP cho AI agent. md2link ghép tất cả vào 1 URL.
Một stack, năm sản phẩm nhỏ ghép lại: share markdown chuẩn GFM, share HTML sandbox an toàn, share JSON dạng collapsible tree, MCP server cho AI, và folder collection có edit token riêng.
CodeMirror 6 + live preview, GFM, Shiki syntax highlight, KaTeX, inline comment, version history 20 snapshot.
Render trong iframe sandbox allow-scripts — script chạy được nhưng không thoát sang origin của md2link.
Collapsible tree viewer client-side. Perfect cho share API response, config, debug output.
11 tool cho Claude Desktop / Cursor / VS Code. AI agent tạo, đọc, sửa, xoá doc và folder qua REST API v1.
Nhóm doc vào folder, share cả collection. Mỗi folder có visibility, password, edit token riêng.
Cloudflare Turnstile, Upstash rate limit sliding-window, JWT unlock token, bcrypt password.
Toàn bộ pipeline chạy trên edge của Vercel, dùng serverless Postgres (Neon) và Redis (Upstash). Không có server dài hạn — mọi request tự scale.
md2link.com → editor mở luôn/d/{id} + edit token JWTcreate_doc qua stdiomd2link-mcp package gọi POST /api/v1/docs với x-api-keyshareUrl → Claude paste cho userallow-same-origin. Password doc hash bằng bcrypt. Edit token là JWT ngắn hạn — leaked URL không kèm token thì read-only.md2link.com — editor mở luôn, không cần loginexpiresAt cho doc tự hết hạn/d/{id}| URL | Trả về |
|---|---|
/d/{id} | Reader page đầy đủ |
/d/{id}.md | Raw markdown |
/d/{id}/edit?t=… | Editor (cần token) |
/d/{id}/unlock | Password gate |
curl -X POST https://md2link.com/api/v1/docs \
-H "x-api-key: cm_live_..." \
-H "Content-Type: application/json" \
-d '{"format":"html","content":"<h1>Hi</h1>","visibility":"unlisted"}'
sandbox="allow-scripts" không kèm allow-same-origin. Script chạy được nhưng bị cô lập khỏi context md2link — chống XSS escape triệt để.| URL | Trả về |
|---|---|
/d/{id} | Reader (iframe sandbox) |
/d/{id}.html | Raw HTML, text/html |
/d/{id}.md | 406 Not Acceptable |
/d/{id}.json | 406 Not Acceptable |
curl -X POST https://md2link.com/api/v1/docs \
-H "x-api-key: cm_live_..." \
-d '{"format":"json","content":"{\"user\":\"alice\"}","visibility":"unlisted"}'
| URL | Trả về |
|---|---|
/d/{id} | JSON tree viewer |
/d/{id}.json | Raw JSON |
/d/{id}.html, .md | 406 Not Acceptable |
md2link-mcp trên npm. Chạy 1 dòng, không cần build.{
"mcpServers": {
"md2link": {
"command": "npx",
"args": ["-y", "md2link-mcp"],
"env": { "MD2LINK_API_KEY": "cm_live_..." }
}
}
}
Lấy API key: /settings/account/api-keys. Restart client — 11 tool xuất hiện trong picker.
MD2LINK_BASE_URL=http://localhost:3000 \
MD2LINK_API_KEY=cm_live_... \
npx -y md2link-mcpx-api-key — không qua URL, không log. TLS mặc định. MCP không đọc filesystem — chỉ gọi REST API v1.folderPosition để giữ thứ tựvisibilityEnum (public / unlisted / password)?t=… mới sửa được| URL | Trả về |
|---|---|
/f/{id} | Folder reader (list doc) |
/f/{id}/edit?t=… | Folder editor |
/f/{id}/unlock | Password gate |
folderId = null.Repo private trên GitHub — chứa toàn bộ source code web app (Next.js) và MCP server (Node.js/TypeScript). Đã cấp quyền cho tài khoản đánh giá của L&D và Hội đồng.
aihub@apero.vn (Read/Collaborator). L&D Team và Hội đồng đánh giá vào repo qua invitation. Nếu cần cấp thêm cho ai, ping trực tiếp author.apps/web — Next.js 15 app router, reader/editor/settings, REST API v1packages/mcp — md2link-mcp npm package, 11 toolspackages/db — Drizzle schema, migration, seeddocs/ — Kiến trúc, ADR, API specREADME.md — Getting started, deploymentgit clone git@github.com:KOHuyn/md2link.git
cd md2link && pnpm install
cp .env.example .env.local # set Neon + Upstash keys
pnpm db:push && pnpm dev # → http://localhost:3000Next.js 15 App Router + Neon Postgres serverless + Upstash Redis + Cloudflare Turnstile + Vercel edge. Tất cả có free tier — 1 developer chạy dài dài không tốn tiền.
App Router, ISR, server actions, ImageResponse cho OG.
Serverless. Drizzle ORM, migrations version-controlled.
Rate limit sliding-window trên mọi write endpoint.
Anti-bot cho create, comment, import — miễn phí.
Editor markdown split-pane, Shiki highlight.
Auto-deploy on push, edge middleware cho URL rewrite.