#obsidian #markdown #neorg #cli

app obsidian2neorg

将 Obsidian Markdown 转换为 Neorg 格式

2 个版本

0.1.1 2023 年 10 月 29 日
0.1.0 2023 年 10 月 29 日

#2388命令行工具

MIT 许可证

16KB
389

Obsidian2Neorg

将 Obsidian Markdown 转换为 Neorg 格式。

obsidian2neorgstdin 读取输入并将转换输出到 stdout

您可以这样转换文件

cat file.md | obsidian2neorg > file.norg

安装

您需要安装 rustup。然后使用 Cargo 进行安装

cargo install obsidian2neorg

批量转换

您可以在本仓库中找到一个 Shell 脚本,该脚本将转换文件夹中所有 .md 文件并将所有其他文件复制。我已经使用此脚本来将所有笔记通过 obsidian2neorg 转移到 Neorg。

folder_path="vault"
out_path="vault_neorg"
mkdir -p $out_path
find "$folder_path" -type f -not -path "*/.git/*" -not -name "*.md" | while read -r file; do
    relative_path="${file#$folder_path/}"
    out_file="${out_path}/${relative_path}"
    mkdir -p "$(dirname "$out_file")"
    cp "$file" "$out_file"
done

find "$folder_path" -type f -not -path "*/.git/*" -name "*.md" | while read -r file; do
    lowercase_filename=$(basename "$file" | tr '[:upper:]' '[:lower:]')
    final_filename=${lowercase_filename// /-}
    relative_path="${final_filename#$folder_path/}"
    out_file="${out_path}/${relative_path%.md}.norg"
    mkdir -p "$(dirname "$out_file")"
    cat "$file" | obsidian2neorg > "$out_file"
done

转换基于正则表达式,并不是所有可能的 Markdown 样式都得到了实现,但应该足以使您的笔记达到可以开始在 Neorg 上工作的状态。

默认情况下,文件链接将强制转换为 lowercase-without-spaces 形式。这使得轻松重命名所有文件以便轻松转移关系。如果您想保持原样,请传递 --literal-links 标志

obsidian2neorg --literal-links

在这种情况下,您需要修改批量转换脚本来避免重命名

folder_path="vault" # change this to the location of your vault/notes folder
out_path="vault_neorg" # this will be the output folder

mkdir -p $out_path
find "$folder_path" -type f -not -path "*/.git/*" -not -name "*.md" | while read -r file; do
    relative_path="${file#$folder_path/}"
    out_file="${out_path}/${relative_path}"
    mkdir -p "$(dirname "$out_file")"
    cp "$file" "$out_file"
done

find "$folder_path" -type f -not -path "*/.git/*" -name "*.md" | while read -r file; do
    relative_path="${file#$folder_path/}"
    out_file="${out_path}/${relative_path%.md}.norg"
    mkdir -p "$(dirname "$out_file")"
    cat "$file" | obsidian2neorg > "$out_file"
done

依赖项

~4.5–6MB
~108K SLoC