# golang-markdown-slicer **Repository Path**: alex.cai/golang-markdown-slicer ## Basic Information - **Project Name**: golang-markdown-slicer - **Description**: (Golang)markdown文本分片器,分片后主要用于创建知识库 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-19 - **Last Updated**: 2025-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Markdown Slicer 一个用Golang实现的Markdown文本自动分片工具,专为知识库智能问答场景设计。该工具可以将长Markdown文本按照指定规则分割成多个片段,方便后续的知识库存储和问答检索。 ## 功能特点 - [x] 将长Markdown文本自动分片为多个片段 - [x] 每个片段包含完整的标题路径和对应的内容 - [x] 支持多级标题结构(一级到六级) - [x] 内容部分不包含任何标题信息 - [x] 分片后的信息可以完整还原原始Markdown文件内容 - [x] 支持处理缺少中间级别标题的情况 - [x] 规章制度的条款拆分 - [ ] 章节内部按段落的拆分 ## 实现原理 1. 使用 [gomarkdown/markdown](https://github.com/gomarkdown/markdown) 包将Markdown文本转换为HTML 2. 基于HTML结构进行分片处理,提取每个标题及其对应的内容 3. 使用 [JohannesKaufmann/html-to-markdown](https://github.com/JohannesKaufmann/html-to-markdown) 包将HTML内容转换回Markdown格式 4. 生成包含完整标题路径和纯文本内容的片段数组 ## 输出格式 ```json [ { "title": "# 一级标题\n## 二级标题\n### 三级标题", "content": "该标题下的文本内容" }, // 更多片段... ] ``` ## 安装依赖 ```bash # 初始化Go模块(如果尚未初始化) go mod init md-slicer # 安装依赖包 go get github.com/gomarkdown/markdown github.com/JohannesKaufmann/html-to-markdown ``` ## 构建与运行 ```bash # 构建程序 go build # 运行程序(传入Markdown文件路径) ./md-slicer.exe ``` ## 示例 假设我们有一个名为`test.md`的Markdown文件: ```markdown # 一级标题 1 这是一级标题1下的内容。 ## 二级标题 1.1 这是二级标题1.1下的内容。 ### 三级标题 1.1.1 这是三级标题1.1.1下的内容。 ``` 运行程序后,输出结果将类似于: ```json [ { "title": "# 一级标题 1", "content": "这是一级标题1下的内容。" }, { "title": "# 一级标题 1\n## 二级标题 1.1", "content": "这是二级标题1.1下的内容。" }, { "title": "# 一级标题 1\n## 二级标题 1.1\n### 三级标题 1.1.1", "content": "这是三级标题1.1.1下的内容。" } ] ``` ## 注意事项 - 确保输入的Markdown文件格式规范,标题使用`#`标记 - 程序会自动处理标题级别,但建议遵循标准的Markdown标题层级结构 - 对于特别复杂的Markdown文档,可能需要根据实际情况调整分片逻辑