开箱即用的 Markdown 转图片 API 服务的封面图

开箱即用的 Markdown 转图片 API 服务

一个基于 Next.js 和 Puppeteer 的 Markdown 转图片服务,支持 Docker 部署和 API 集成。A Markdown to Image Service based on Next.js and Puppeteer, supporting Vercel deployment and API integration.

Markdown To Image Serve

license
PRs Welcome
Node Version
Issues

基于 Next.js 和 Puppeteer 的 Markdown 转图片服务,支持 Docker 一键部署和 API 调用

将 Markdown 内容转换为精美图片,提供开箱即用的 API 接口,支持 Docker 快速部署和二次开发。

简体中文 | [English](./README_EN.md)

🎯 项目简介

Markdown To Image Serve 是一个开箱即用的 Markdown 转图片 API 服务,支持以下特性:

  • 🚀 一键部署(支持 Docker Compose)
  • 🔄 简单易用的 RESTful API
  • 🎨 自定义样式、页眉页脚和主题模板
  • 📱 响应式设计,适配多种尺寸
  • 🌐 多平台支持(Docker 等)
  • 🔒 图片防盗链与访问控制

示例1
示例2
示例3


🌟 核心功能

  • 📝 Markdown 文本转精美图片
  • 🎨 支持自定义主题和样式
  • 📊 代码高亮与表格渲染
  • 🖼️ 自定义页眉页脚
  • 📱 响应式输出
  • 🔄 批量转换
  • 📦 完整 API 支持

🚀 快速开始

在线体验

本地开发

  1. 克隆项目

    bash
    git clone https://github.com/your-username/markdown-to-image-serve.git
    cd markdown-to-image-serve
  2. 安装依赖

    bash
    pnpm install
  3. 配置环境变量
    新建 .env 文件,内容如下:

    env
    NEXT_PUBLIC_BASE_URL=http://localhost:3000
    CHROME_PATH=/path/to/your/chrome  # Chrome 浏览器路径
  4. 启动开发服务器

    bash
    pnpm dev

Chrome 路径获取方式

  • macOS:
    bash
    ls -l /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
  • Linux:
    bash
    which google-chrome
    # 或
    which chromium
  • Windows:
    powershell
    Get-Command chrome | Select-Object -ExpandProperty Definition
    # 或在 chrome://version/ 查看"可执行文件路径"

Docker 部署(推荐)

  1. 使用 Docker Compose

    bash
    docker-compose up -d
    # 或
    docker compose build --no-cache

    注意:

    • x86 架构(Linux/Windows/Mac Intel):请将 docker-compose.yml 中的 platform 设置为 linux/x86
    • Apple Silicon:请设置为 linux/amd64
  2. 直接使用 Docker

    bash
    docker build -t markdown-to-image-serve .
    docker run -p 3000:3000 markdown-to-image-serve

📚 API 文档

1. 生成海报(POST /api/generatePoster

请求参数:

json5
{
  "markdown": "string",       // Markdown 内容
  "header": "string",         // 可选:页眉文本
  "footer": "string",         // 可选:页脚文本
  "logo": "string",           // 可选:logo图片url
  "theme": "blue | pink | purple | green | yellow | gray | red | indigo | SpringGradientWave" // 可选:主题
}

示例请求:

bash
curl -X POST 'http://localhost:3000/api/generatePoster' \
  -H 'Content-Type: application/json' \
  -d '{
    "markdown": "# Hello World\n\nThis is a test. \n # 你好,世界!",
    "header": "My Header",
    "footer": "My Footer"
  }'

2. 生成图片(POST /api/generatePosterImage

请求参数与 /api/generatePoster 相同。


🛠 开发计划

  • Docker 部署支持
  • 自定义主题功能
  • 图片压缩优化
  • 批量生成功能
  • 中文字体优化
  • 自定义模板系统
  • API 访问控制

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支:git checkout -b feature/AmazingFeature
  3. 提交改动:git commit -m 'Add some AmazingFeature'
  4. 推送分支:git push origin feature/AmazingFeature
  5. 提交 Pull Request

📄 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。


致谢

感谢 markdown-to-image 项目的启发。

如果本项目对你有帮助,欢迎 star 支持!⭐️

相关文章推荐

基于当前文章的分类和标签为您推荐相关内容