🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

文档转 Markdown AlbertZJ/dsh-markitdown

DeepSeek Harness
AlbertZJ5 天前有提交已提供中文文档扫描:含敏感能力

把 PDF、Office、图片等文件批量转成 Markdown

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add AlbertZJ/dsh-markitdown
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 18 处,展示前 18 条)
  • 读取本地文件
    lib/skills.js:27
    for (const name of readdirSync(assetRoot).sort()) {
  • 读取本地文件
    lib/skills.js:30
    if (!statSync(directory).isDirectory() || !existsSync(path)) continue;
  • 读取本地文件
    lib/skills.js:30
    if (!statSync(directory).isDirectory() || !existsSync(path)) continue;
  • 读取本地文件
    lib/skills.js:49
    const { description } = parseSkill(readFileSync(path, "utf8"), path);
  • 读取本地文件
    lib/skills.js:76
    const content = parseSkill(await readFile(locator, {
  • 写入本地文件
    lib/tools.js:233
    await mkdir(dirname(outputPath), { recursive: true });
  • 写入本地文件
    lib/tools.js:234
    await writeFile(outputPath, markdown, "utf8");
  • 写入本地文件
    lib/tools.js:264
    await mkdir(dirname(outputPath), { recursive: true });
  • 写入本地文件
    lib/tools.js:265
    await writeFile(outputPath, result.markdown, "utf8");
  • 执行外部命令来自配置/变量
    lib/runner.js:199
    child = spawn(connection.command, args, {
  • 写入本地文件
    lib/runner.js:439
    await writeFile(target, bytes);
  • 删除本地文件
    lib/runner.js:446
    await rm(directory, {
  • 读取本地文件
    lib/runner.js:524
    size = (await stat(source)).size;
  • 写入本地文件
    lib/runner.js:560
    await writeFile(effectiveSource, bytes);
  • 读取本地文件
    lib/runner.js:565
    const size = (await stat(source)).size;
  • 删除本地文件
    lib/runner.js:577
    if (downloadedDir !== void 0) await rm(downloadedDir, {
  • 读取本地文件
    lib/runner.js:649
    const resolved = await realpath(head);
  • 读取本地文件
    lib/runner.js:673
    const [rootReal, targetReal] = await Promise.all([realpath(root), realpathBestEffort(target)]);
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-skill@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-markitdown 通过模型侧工具把 PDF、Office、HTML、图片、音频等文件转成 Markdown——不走 MCP、不内置二进制。插件驱动你指定的 Python 解释器运行 markitdown 包(python -m markitdown)。 提供的能力 - markitdown_check:探测所配置的解释器,返回已装的 MarkItDown 版本(配置了 LLM 模式时一并报告 helper 就绪状态);未安装时给出精确的 setup 命令。 - markitdown_convert:把单个来源或批量来源转成 Markdown: - path:单个绝对本地路径或 http(s) URL(如 YouTube 链接,需已装 [all] extra); - paths:最多 16 个路径/URL 的批量,单个失败不影响其他来源; - stdinBase64:以 canonical base64 字节走 MarkItDown stdin(必须给 extensionHint/mimeHint); - 提示参数对应 CLI:extensionHint(-x,也可放行进白名单外的本地扩展名)、 mimeHint(-m)、charsetHint(-c)、keepDataUris;
展开完整文档(README 剩余 1 节)
dsh-markitdown

通过模型侧工具把 PDF、Office、HTML、图片、音频等文件转成 Markdown——不走 MCP、不内置二进制。插件驱动你指定的 Python 解释器运行 markitdown 包(python -m markitdown)。

提供的能力

- markitdown_check:探测所配置的解释器,返回已装的 MarkItDown 版本(配置了 LLM 模式时一并报告 helper 就绪状态);未安装时给出精确的 setup 命令。
- markitdown_convert:把单个来源或批量来源转成 Markdown:
- path:单个绝对本地路径或 http(s) URL(如 YouTube 链接,需已装 [all] extra);
- paths:最多 16 个路径/URL 的批量,单个失败不影响其他来源;
- stdinBase64:以 canonical base64 字节走 MarkItDown stdin(必须给 extensionHint/mimeHint);
- 提示参数对应 CLI:extensionHint(-x,也可放行进白名单外的本地扩展名)、 mimeHint(-m)、charsetHint(-c)、keepDataUris;
- URL 来源经连接级钉扎出口校验后下载字节再转换(校验的地址即连接的地址,无 DNS rebinding 间隙;loopback/私网/链路本地目标默认拒绝,除非 allowPrivateUrls);
- output 把单来源结果写文件,outputDir 按来源写 <名称>.md;默认内联返回 Markdown。
- DOCX 图片导出:Word 内嵌图片会导出成文件,data URI 占位符替换为文件链接,会话可以直接打开原图(read_image)并追问,而不是依赖一次性描述。
指定 output 时图片写入同级的 <名称>.media/ 并用相对路径引用;指定 outputDir 时每个 <名称>.media/ 与对应 Markdown 并排;内联转换则导出到临时目录并用绝对路径引用。全程不涉及模型或 API 密钥。
- 可选图片描述:在独立的 设置 → MarkItDown 页面(不在插件清单里)有一个开关,开启后由模型为每张导出图片额外写描述;同一页面每个提供商一张卡片——OpenAI、DeepSeek 或自定义端点——各自保存模型和 API 密钥,当前启用的卡片决定转换用哪一组。密钥存入 dsh 凭证存储而非配置文件;各提供商的 apiKeyEnv 引用与环境变量仍作为兜底。内置 python/llm_convert.py helper,只有开启描述时才需要 openai 包。
DOCX 单独处理:markitdown 0.1.x 的 Word 转换器从不把内嵌图片交给 LLM,所以 helper 会按文档顺序解包 word/media、导出(以及按需描述)每张图,并原位替换 data URI 占位符。描述使用 temperature=0,要求逐字转录、看不清标 [unreadable]、发送者不确定时明说而不猜,并标注原图成员名以便核对。
- markitdown 技能:打包工作流(环境检查 → 转换 → 汇报注意事项),含各格式预期与已知限制。

支持的输入:PDF、DOCX/DOC、PPTX/PPT、XLSX/XLS、CSV、JSON、XML、 HTML/HTM、EPUB、MD、Outlook MSG、ZIP(内含文件逐个转换)、 JPG/JPEG/PNG/GIF/TIFF/BMP(EXIF 元数据,可用时 OCR)、 WAV/MP3(语音转写,需要 [all] extra)。

安装

前置:某个 Python 环境里已安装 MarkItDown:

python -m pip install 'markitdown[all]'

从 Git 仓库安装插件到 dsh(任一 profile 的插件页"从源码安装",或等价 CLI 命令):

github:AlbertZJ/dsh-markitdown

配置

全部可选;当 PATH 上的 python 已装好包时默认值即可用。

- name: 'dsh-markitdown'
config:
运行 -m markitdown 的 Python 解释器。Windows 上只有 py 启动器时填 py 或绝对路径,例如 C:/Users/you/AppData/Local/Programs/Python/Python312/python.exe command: python timeoutMs: 60000 # 单次转换超时 maxInputBytes: 52428800 # 源文件 50 MiB 上限 maxOutputBytes: 8388608 # 捕获输出 8 MiB 上限(超出即杀进程)可选:把所有读写限制在一个工作区内。路径会跟随符号链接解析,必须落在该根目录之下。
allowedRoot: D:/work/documents
可选:LLM 辅助转换(内嵌图片由 LLM 描述)。需要 pip install openai。
提供商与密钥在「设置 → MarkItDown」页面配置;下面就是它写入的配置:当前启用的提供商 + 每个提供商一组 profile。
llmProvider: deepseek
llmProviders:
openai: { baseUrl: https://api.openai.com/v1, model: gpt-4o, apiKeyEnv: OPENAI_API_KEY }
deepseek: { baseUrl: https://api.deepseek.com/v1, model: deepseek-chat, apiKeyEnv: DEEPSEEK_API_KEY }
custom: { baseUrl: https://api.example.com/v1, model: my-model, apiKeyEnv: MARKITDOWN_API_KEY }
旧的单提供商字段,仅在 llmProvider 未设置时生效: llmModel: gpt-4o llmBaseUrl: https://api.deepseek.com/v1 llmApiKeyEnv: OPENAI_API_KEY 是否让当前模型描述每张导出的 DOCX 图片(默认关闭;无论开关如何,图片都会导出并链接)。可在「设置 → MarkItDown」页面切换。
describeImages: false

验证

pnpm install
pnpm run build
pnpm run verify # 结构校验(包、patch、技能、lib、locale)

verify.mjs 无第三方依赖,每次 push 也会在 CI 里跑。

说明与限制

- 转换以 dsh 宿主子进程方式运行,不经过 Bash 审批流;插件在调用 MarkItDown 前会校验路径(绝对路径、存在、扩展名白名单、大小上限)。
- 无文本层的扫描版 PDF 转换结果会很少或为空。
- 复杂排版会被压平成线性 Markdown。DOCX 内嵌图片会导出为文件(Markdown 旁的 <名称>.media/)并以路径引用;内联转换导出到临时目录,可能被系统清理——需要长期保留时请用 output/outputDir。设置了 allowedRoot 时,内联转换不会在工作区外写文件,而是保留 data URI。
- 图片描述是一次性结果:措辞精确要求高时,应打开导出的原图(read_image)而不是依赖描述。
- 本插件不会自行安装 Python 包;跑 markitdown_check 按其指引安装。

许可

MIT。MarkItDown 本身为 Microsoft 的 MIT 许可项目,未被打包进本插件——请按上面的方式装进你的 Python 环境。
预览分享卡片长什么样 ↓AlbertZJ/dsh-markitdown
分享 · DeepSeek Harness Hub
AlbertZJ/dsh-markitdown

把 PDF、Office、图片等文件批量转成 Markdown

回到顶部