You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandoc转换Nimbus Notes导出HTML为Markdown的问题及异常

问题分析与解决办法

异常原因

添加-t gfm-raw_html参数确实是导致部分笔记空白的原因,具体两点:

  • gfm-raw_html会过滤GFM不支持的HTML标签,如果Nimbus Notes导出的部分HTML里,所有内容都包裹在这类被过滤的标签中,转换后自然就没有内容输出。
  • 部分Nimbus Notes的HTML可能存在结构异常(比如标签嵌套错误、带特殊属性的自定义标签),启用gfm-raw_html的严格过滤规则后,Pandoc无法识别出有效内容。

解决办法

方案1:调整参数平衡过滤效果与内容保留

把参数换成-t gfm --markdown-headings=atx --strip-comments,既可以清理大部分冗余内容,又不会过度过滤导致内容丢失。修改后的脚本如下:

#!/bin/bash

# Use the current working directory as the root directory
root_dir="."

# Recursively traverse the directory structure
find "$root_dir" -name '*.html' -type f -exec sh -c 'pandoc "$1" -t gfm --markdown-headings=atx --strip-comments -o "${1%.html}.md"' _ {} \;

这个参数组合的作用:

  • 生成Obsidian兼容的ATX格式标题
  • 去除HTML中的注释类冗余内容
  • 保留合法HTML标签并转换为对应Markdown格式,不会轻易过滤核心内容

方案2:针对空白笔记单独处理

  1. 找到那4份空白笔记对应的原HTML文件,用文本编辑器打开查看结构
  2. 如果发现内容被包裹在特殊自定义标签里,可临时用--html-q-tags参数强制保留内容,单独转换这些文件:
pandoc "问题文件名.html" -t gfm --html-q-tags -o "问题文件名.md"
  1. 要是HTML存在结构错误,手动修复后再重新转换

方案3:脚本添加兜底逻辑避免空白

在脚本里加入检查,要是转换后的Markdown为空,自动用默认参数重新转换:

#!/bin/bash

root_dir="."

find "$root_dir" -name '*.html' -type f -exec sh -c '
    input_file="$1"
    output_file="${1%.html}.md"
    # 先用gfm-raw_html转换
    pandoc "$input_file" -t gfm-raw_html -o "$output_file"
    # 检查文件大小,为空则用默认参数重转
    if [ ! -s "$output_file" ]; then
        pandoc "$input_file" -o "$output_file"
        echo "重新转换空白文件: $input_file"
    fi
' _ {} \;

内容的提问来源于stack exchange,提问作者Tesgin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:24:57