Markdown To Image Serve
基于 Next.js 和 Puppeteer 的 Markdown 转图片服务,支持 Docker 一键部署与 API 调用
将 Markdown 内容高效转换为精美图片,提供开箱即用的 API 接口,支持 Docker 快速部署与二次开发。
简体中文 | English🎯 项目简介
Markdown To Image Serve 是一款开箱即用的 Markdown 转图片 API 服务,具备以下特性:
- 🚀 一键部署(支持 Docker Compose)
- 🔄 简洁易用的 RESTful API
- 🎨 支持自定义样式、页眉页脚与主题模板
- 📱 响应式设计,适配多种尺寸
- 🌐 多平台兼容(如 Docker 等)
- 🔒 支持图片防盗链与访问控制
🌟 核心功能
- 📝 Markdown 文本一键转图片
- 🎨 多主题与自定义样式支持
- 📊 代码高亮与表格渲染
- 🖼️ 自定义页眉页脚
- 📱 响应式输出,适配多端
- 🔄 批量转换能力
- 📦 完善的 API 支持
🚀 快速开始
在线体验
本地开发
-
克隆项目
git clone https://github.com/your-username/markdown-to-image-serve.git cd markdown-to-image-serve
-
安装依赖
pnpm install
-
配置环境变量
新建.env
文件,内容如下:NEXT_PUBLIC_BASE_URL=http://localhost:3000 CHROME_PATH=/path/to/your/chrome # Chrome 浏览器路径
-
启动开发服务器
pnpm dev
Chrome 路径获取方式
- macOS:
ls -l /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
- Linux:
which google-chrome # 或 which chromium
- Windows:
Get-Command chrome | Select-Object -ExpandProperty Definition # 或在 chrome://version/ 查看"可执行文件路径"
Docker 部署(推荐)
-
使用 Docker Compose
docker-compose up -d # 或 docker compose build --no-cache
-
直接使用 Docker
docker build -t markdown-to-image-serve . docker run -p 3000:3000 markdown-to-image-serve
📚 API 文档
1. 生成海报(POST /api/generatePosterImage
)
请求参数:
{
"markdown": "string", // Markdown 内容
"header": "string", // 可选:页眉文本
"footer": "string", // 可选:页脚文本
"logo": "string", // 可选:logo图片url
"theme": "blue | pink | purple | green | yellow | gray | red | indigo | SpringGradientWave" // 可选:主题
}
示例请求:
curl -X POST 'http://localhost:3000/api/generatePosterImage' \
-H 'Content-Type: application/json' \
-d '{
"markdown": "# Hello World\n\nThis is a test. \n # 你好,世界!",
"header": "My Header",
"footer": "My Footer"
}'
🛠 开发计划
- [x] Docker 部署支持
- [x] 自定义主题功能
- [ ] 图片压缩优化
- [ ] 批量生成功能
- [x] 中文字体优化
- [ ] 自定义模板系统
- [ ] API 访问控制
🤝 贡献指南
- Fork 本仓库
- 创建特性分支:
git checkout -b feature/AmazingFeature
- 提交改动:
git commit -m 'Add some AmazingFeature'
- 推送分支:
git push origin feature/AmazingFeature
- 提交 Pull Request
📄 许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。
致谢
感谢 markdown-to-image 项目的启发。
如果本项目对你有帮助,欢迎 star 支持!⭐️