Skip to content

Repository files navigation

Md2Card

将日常 Markdown 文档一键整理为适合发布到小红书的连续图片卡片。

粘贴或导入一篇 Markdown,在线预览、微调排版后,下载 PNG 图片包,直接发布。

在线使用 · 备用站点 · 打开工作台 · 查看完整样例

Md2Card 产品预览

Md2Card 是一个纯前端的 Markdown 转小红书图片工具。它适合把平时写好的学习笔记、读书摘录、课程总结、技术文章、科研记录或知识整理,快速转成一组可连续阅读、可直接发布的图片。

它没有账号、没有后端、不会上传文章:Markdown 解析、本地图片按引用自动匹配、自动分页、实时预览、PNG 生成和 ZIP 下载均在当前浏览器完成。

为什么不用重新排版一遍?

  • 直接复用已经写好的 Markdown,不必复制到另一套排版工具;
  • 自动分页并统一字体、间距和阅读节奏,避免靠截图拼成长图;
  • 可选择主题、封面、画布比例和阅读密度,按内容微调;
  • 导出逐页 PNG 并打包为 ZIP,可按顺序直接发布到小红书。

公式、表格、代码和图片也能正常排版

关注点 Md2Card 的处理方式
内容安全 没有上传接口;GitHub Pages 只托管静态网页,文章与图片留在本地浏览器
复杂内容 KaTeX 公式、GFM 表格、代码与图片各自拥有合适的缩放、续页和样式规则
本地图片 按 Markdown 相对路径定位,只读取当前文章实际引用的图片,不导入无关附件
真实分页 使用与预览一致的 DOM 高度测量,不按字数或行数估算
所见即所得 预览、导出前检查和 PNG 导出共用同一份页面计划与卡片 DOM
可交付导出 标准发布或高清原图逐页生成 PNG,并打包为 ZIP 下载

三步生成小红书图片

在线工作台

打开 Md2Card 工作台,粘贴或导入一篇 Markdown 笔记,把它整理成一组可直接发布的小红书图片。

  1. 输入、拖放或导入单篇 .md / .markdown / .txt
  2. 在右侧检查自动分页后的卡片;
  3. 在“主题 / 画布 / 排版 / 内容”中按需细调;
  4. 点击右上角“下载图片”,通过检查后下载 PNG ZIP。

默认的 3:4 画布、平衡密度与融合首卡 已适合大多数笔记。遇到长公式或宽表格时,优先在“内容”分类调整对应项目,无需连带缩小普通正文。

导入完整样例

首次打开工作台时,会看到一篇不含本地图片、可直接预览多张卡片的产品演示。仓库中的完整样例则包含三张 SVG,用于体验真实文章的本地附件绑定。

examples/
├── Md2Card Example.md
└── images/
    ├── architecture.svg
    ├── sampling-pipeline.svg
    └── wide-matrix.svg
  1. 下载整个 examples 文件夹或 Clone 仓库,不要只下载 .md 文件;
  2. 导入 Md2Card Example.md,也可以直接拖入编辑区;
  3. 检测到图片引用后,选择 examples 目录,或在“管理图片”中点击“自动补齐(选择图片所在文件夹)”;
  4. 确认三张 SVG 已绑定,再尝试不同画布比例、密度与主题;
  5. 分别使用标准发布和高清原图导出,检查页序、图片与表格是否一致。

样例覆盖 H1 / H2 / H3、中文与英文混排、三张本地图片、行内与展示公式、宽表、长表、Python / TypeScript 代码、嵌套列表、长 URL、引用和显式分页。详见 示例说明

本地运行

推荐 Node.js 22 或更高版本。

npm install
npm run dev

使用终端输出的本地地址访问网站,通常为 http://localhost:5173。不要直接双击 HTML 文件:file:// 环境可能限制模块、字体和本地资源读取。

npm test       # 单元测试
npm run build  # 类型检查并构建 dist/
npm run preview

功能清单

内容与资源

  • 粘贴、拖放或导入单篇 .md / .markdown / .txt
  • 一键清空当前文章、附件与图片绑定,同时保留排版设置。
  • 标题、段落、强调、链接、列表、引用、行内代码和水平线。
  • GFM 表格、围栏代码、行内 / 展示数学公式和独立图片。
  • 首个 H1 自动作为文章名与可选首卡标题,正文不重复渲染。
  • 本地图片按完整相对路径、./../ 与目录后缀匹配。
  • 图片路径冲突明确提示,绝不静默随机绑定。
  • 图片管理器支持自动补齐、手动添加、显式绑定和资源清理。

阅读与排版

  • 3:4 标准卡片与 2:3 长内容画布。
  • 融合首卡、独立封面与无封面三种首卡策略。
  • 纯净排版、雾蓝实验室、柔光浅紫、雾松笔记四套完整主题。
  • 舒展、技术平衡、紧凑三种密度预设,以及主题、画布、排版、内容四类细调。
  • 表格字号、公式缩放、代码字号独立控制,不连带缩小普通正文。
  • H2 / H3 / H4 分级页尾安全区与标题簇保护,避免标题孤立在页尾。
  • 超高表格按行续页并重复表头,长代码按行续页;图片与图注保持同块。
  • 手动分页标记 <!-- md2card:break -->,而 --- 保持 Markdown 分隔线语义。

预览、导出与交付

  • 桌面端可拖动的编辑 / 设置 / 预览工作台;移动端分为编辑、设置、预览三个工作区。
  • 预览区按一、二、三列自动计算卡片缩放,默认双列。
  • 标准发布与高清原图两档 PNG,逐页打包为 ZIP。
  • 导出前检查 Markdown 诊断、字体、图片解码和卡片垂直溢出。
  • 对 PNG MIME 类型与文件头进行校验,避免下载损坏文件。
  • 草稿、配置、图片 Blob 与显式绑定关系保存到当前浏览器的 IndexedDB。
  • GitHub Actions 自动测试、构建并部署到 GitHub Pages。

使用说明

文章名、首卡与标题分页

文章名按以下优先级确定:手动填写的文章名 → 首个 H1 → 导入文件名 → 未命名笔记。首个 H1 是文章元数据,会用于浏览器标题、草稿、ZIP 名称和可选首卡,因此不在正文重复渲染;后续 H1 仍视为章节起点。

分页不是按行数或字符数切割。应用会在屏幕外以与最终卡片相同的 CSS 测量内容,再生成页面计划。H2 / H3 / H4 拥有独立的页尾安全区,标题会携带必要的上下文移动;H2 还会尽量带上短引言之后的实质内容。安全区与 H2 / H3 段前留白可在 排版 → 标题 中调整。

内容 处理策略
普通段落 保持正文宽度、字号、行距与块间距
宽表格 单独使用表格字号;超高时按行续页并重复表头
长公式 单独缩放;特别复杂时建议使用 aligned 等多行写法
长代码 独立字号、可选 macOS 代码块外观;按源代码行续页
图片 在安全区内 contain 缩放,图片和图注不拆开
明确换页 写入单独一行 <!-- md2card:break -->

本地图片与附件绑定

Markdown 只保存路径,例如:

![模型结构](assets/diagram.png)

单独选择 .md 文件后,浏览器没有该文件父目录的操作系统权限。这是浏览器的安全模型,不是 Md2Card 的限制。检测到本地图片引用时,选择文章根目录或 assets 文件夹即可:应用先索引相对路径和文件名,再只读取当前文章实际引用到的图片,不会把整个目录都导入草稿。

操作 适用场景 行为
自动补齐(选择图片所在文件夹) Markdown 有缺失或冲突的图片引用 选择文章根目录或 assets,按路径匹配实际引用
手动添加图片 无目录权限、替换图片、处理冲突 多选图片;选中某个引用时直接建立显式绑定

完整相对路径优先。存在同名候选或相同路径后缀时,状态会显示为“路径冲突”,需要在图片管理器中确认;原 Markdown 不会被自动改写。远程图片由浏览器直接请求其来源站点,若来源不允许 CORS 访问,导出前检查会提示失败。

导出

选项 3:4 2:3 建议
标准发布 1080 × 1440 1080 × 1620 常规发布,速度更快、文件更小
高清原图 2160 × 2880 2160 × 3240 公式、表格放大查看或留存

导出前会等待字体和图片加载,并检查 Markdown 警告、图片状态和卡片边界。通过后,预览当前所见的同一份卡片 DOM 会逐页生成 PNG,并被打包成 ZIP。长文或高清导出会使用更多浏览器内存,请在导出时保持页面打开。

Markdown 支持与边界

类型 支持
标题 #######
基础文本 段落、粗体、斜体、删除线、链接、行内代码、换行
列表与引用 有序 / 无序 / 嵌套列表,引用块
表格 GFM 表格及列对齐
代码 围栏代码;Python、Bash、JSON、TypeScript、JSX、TSX 高亮,其余语言降级为纯文本
数学 $...$$$...$$\(...\)\[...\]
图片 独立图片块 ![替代文本](路径 "图 1:图注");图片标题优先作为图注,未填写时使用替代文本
图注与表注 图片 / 表格后紧随 图 1:说明表 1:说明 时,会自动归入前一个内容块并与其同页
分隔线 ---

为保证导出安全与一致,原始 HTML 会被忽略。内联图片、复杂 HTML 混排、脚注和 Mermaid 暂不属于稳定支持范围;复杂宽表和极长公式建议优先拆分内容或使用 2:3 长内容画布。

隐私与浏览器支持

数据 存放与处理方式
Markdown 与排版设置 当前浏览器内存与 IndexedDB 草稿
本地图片 浏览器内存、Object URL 与 IndexedDB Blob
PNG / ZIP 在浏览器生成并下载到本机
GitHub Pages 只托管 HTML、CSS、JavaScript、字体和静态资源
GitHub Actions 只安装依赖、测试、构建和部署代码,不处理用户文章

最新版桌面 Chrome / Edge 是完整支持平台,尤其适合目录索引与稳定导出。手机浏览器可编辑和预览,但高清长文导出受内存限制;Safari / Firefox 可进行基础预览,暂不承诺完全一致的导出结果。清除本站点数据会清除该浏览器保存的草稿和导入图片。

技术架构

flowchart LR
  A["Markdown 与本地图片"] --> B["解析与资源解析"]
  B --> C["文档模型"]
  C --> D["真实 DOM 测量与分页"]
  D --> E["统一卡片渲染"]
  E --> F["实时预览"]
  E --> G["PNG 校验与 ZIP 打包"]
  G --> H["本地下载"]
Loading
层级 技术 责任
应用 Vite、Preact、TypeScript 静态应用与交互
解析 unified、remark-parse、remark-gfm、remark-math Markdown AST 与数学语法
公式与代码 KaTeX、Prism 公式、语法高亮
分页 MeasureStage + DOM 高度 基于真实卡片尺寸的页面计划
本地资源 File System Access API、目录选择器、Object URL 图片路径解析与绑定
存储 IndexedDB 草稿、配置、图片 Blob、显式绑定
导出 html-to-image、fflate PNG 生成、校验与 ZIP 打包
交付 GitHub Pages、GitHub Actions 静态部署

parser 只处理内容结构,layout 只生成分页计划,renderer 是唯一生成卡片 DOM 的位置,export 只导出已渲染卡片,app 负责界面和状态编排。这让预览与导出避免各自重新解析、重新分页。

项目结构

md2card/
├── .github/workflows/       # 测试、构建与 GitHub Pages 部署
├── app/                     # /app/ 工作台入口
├── examples/                # 可直接导入的 Markdown 与本地图片
├── public/                  # favicon、OG 封面、robots、sitemap
├── src/
│   ├── app/                 # 状态与交互编排
│   ├── data/                # 首次打开工作台时的示例内容
│   ├── domain/              # 文档、分页和排版类型
│   ├── export/              # PNG、校验、ZIP 下载
│   ├── layout/              # DOM 测量与分页规则
│   ├── parser/              # Markdown 解析与规范化
│   ├── renderer/            # 卡片、封面和富文本渲染
│   ├── resources/           # 本地图片索引、绑定与状态
│   ├── storage/             # IndexedDB 草稿仓储
│   └── styles/              # 工作台、网站与卡片主题样式
└── tests/                   # 解析、分页和资源绑定回归测试

部署与开发

仓库自带 GitHub Pages 部署工作流。推送到 main 时会使用 Node.js 22,依次安装依赖、运行测试、构建 dist/ 并部署。首次部署时,在仓库 Settings → Pages 将 Source 设为 GitHub Actions

Vite 使用相对资源路径,因此同一份构建产物可部署到 GitHub Pages 项目路径、其他静态托管服务或任意本地 HTTP 服务器,无需为仓库名修改基址。站点地图只收录产品首页,工作台声明为 noindex

当前测试覆盖 GFM 表格分隔线、数学公式、超高表格和代码续页、标题簇与页尾安全区、封面与页码、本地图片相对路径绑定及同名冲突等场景。修改分页、公式、导出或资源逻辑后,至少运行:

npm test
npm run build

视觉改动还应使用 完整样例,在 Chrome / Edge 中人工检查表格、长公式、多级标题、代码和三张本地图片的预览与导出。

License

本项目采用 MIT License。代码可自由使用、修改、分发和商业化,但须保留版权声明与许可证文本。项目名称、Logo 与展示素材不自动授予商标或品牌使用权。

About

Turn Markdown notes into Xiaohongshu-ready image cards — preview, refine, and export PNG ZIP entirely in your browser.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages