# 从零学做 MDX，新手实操心得

**URL:** <https://forum.freemdict.com/t/topic/43999>\
**Category:** 技术交流与词典编修\
**Tags:** 分享\
**Created:** [2026 年5 月 13 日 12:50 UTC](https://forum.freemdict.com/t/topic/43999 "2026-05-13T12:50:48Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 13 日 12:50 UTC](https://forum.freemdict.com/t/topic/43999/1 "2026-05-13T12:50:48Z")

</div>

# 从零学做 MDX，新手实操心得

由于要查The Oxford dictionary of English grammar就有了试着做成mdx的想法。在论坛搜索几个经验贴，从[词典制作工具备份](http://forum.freemdict.com/t/topic/1724)下载了工具。拜读了[[教程]从epub/mobi制作MDX方法(零基础可学会)](http://forum.freemdict.com/t/topic/12392) 还有[新手 入门 科普](http://forum.freemdict.com/t/topic/9610) 。谢谢各位的分享。  
做了一个毛坯版，仅仅是能够打开查阅，但是对我来说也够用了。里边肯定还有不少错误，使用的过程中再慢慢校对。  
接触 MDX 词典制作这几天，从一开始一窍不通，到慢慢摸索也积攒了一些经验，特此整理出来，送给同样刚入门想自制词典的朋友。

## 一、了解制作工具。

工欲善其事，就得先磨刀。  
开始使用某个工具，碰到的问题是，不知到有什么功能，用哪个功能可以实现自己的想法。想了解操作界面、菜单、工具栏等等，还是多用搜索引擎。

### 1. MdxBuilder

阅读这个文档[manual\_Chn.txt](https://forum.freemdict.com/uploads/short-url/hbVp8uJjbFdcHCn7yS8QZtDMI6K.txt) (3.4 KB)的3) MDict html format部分，了解一下目标文件的格式要求。一共也没几条，要认真阅读。

### 2.Emeditor

可以查阅官方文档，这是最新的  
[emeditor-May 06, 2026.pdf](https://forum.freemdict.com/uploads/short-url/21cz19345C1ugWlQsxf7XlYSmGG.pdf) (5.0 MB) ，正文内容1833页。  
AI推荐用的Onigmo正则表达式引擎，这是一些介绍  
[Onigmo (Oniguruma-mod) Regular Expressions Version 6.1.0-20161225.txt](https://forum.freemdict.com/uploads/short-url/s0KrGMNehuaR1EktENXjLfcKDOZ.txt) (17.8 KB) 。前几天用onigmo导致软件崩溃，是这个引擎不稳定么？与Boost.Regex孰优孰劣咱也说不清楚。

### 3.正则表达式

阅读这个文档[正则表达式基础.pdf](https://forum.freemdict.com/uploads/short-url/ySdzFhZ5sPHZ3L2CuaFrD5WOWQ8.pdf) (1.3 MB)，对于理解正则的符号组成、作用方式非常有帮助。内容出自[《神奇的匹配：正则表达式求精之旅》](https://book.douban.com/subject/25953857/) 。编辑文本数据时会频繁用到查找-替换，了解一下正则，提高工作效率。

## 二、词典数据源。

输入的质量决定了输出的质量。  
尝试从epub开始。  
用epub制作mdx流程就几个步骤，改后缀、解压缩、编辑数据、生成mdx。  
**大量的时间都花在了数据整理上。**  
如果源文件的数据格式规范，很快就可以完成。要是数据比较混乱，最好还是换个源文件。否则刚开始就劝退，挫败感杠杠滴。  
epub解压后会有很多html文件，建议 **先不要合并** ，合并以后数据量有点大，容易懵。先选一个篇幅小的、数据量少的。了解数据构成，如词头放在哪里、释义放在哪里，分别用什么标签包裹。这是定位获取内容的标记，也是查找、替换内容用的“锚点”。  
如果是没有任何html标签的文本，里边有n个叫做“book”的，你批量操作的时候怎么区分哪个是heaword呢？以目前我的知识储备，没有任何标记的文本，那就只有对照原件手动操作了。  
符合要求的最简单的数据是什么样的？4楼的[test.txt](https://forum.freemdict.com/uploads/short-url/hllnO4FhLLMXF0HNZrcv86mIa25.txt) (594 字节)就是一个例子。每个词条处理成这样，就能制作mdx了。

## 三、其他

这个事本质上是把一种文本格式转换成另外一种文本格式。如果你希望直接获得答案而不想在这上面花费什么时间，那就没必要开始，到[这里](https://downloads.freemdict.com/)或者用搜索引擎找一下可能就实现了。如果你希望控制或驾驭“文本”，掌控文本的细节，愿意花时间和精力，你已经开始行动了。  
正如[《驾驭文本：文本的发现、组织和处理》Taming Text How to Find, Organize, and Manipulate it](https://book.douban.com/subject/26582357/) 这本书里讲的：

> 对于大部分驾驭文本的活动来说，搜索都是起点。Search provides the starting point for most of your text taming activities,

在对html进行改造，编辑txt文本这个过程，是需要考虑一下如何搜索、匹配、识别、标注的。  
有编程经验加持，应该会方便很多。这方面我不了解。  
但愿这些文字对你有所启发。  
另外，论坛对编辑帖子次数有限制。

---

<div class="post-metadata">

**Author:** ![hahaya](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/h/77aa72/32.png) [@hahaya](https://forum.freemdict.com/u/hahaya)\
**Post date:** [2026 年5 月 13 日 13:08 UTC](https://forum.freemdict.com/t/topic/43999/2 "2026-05-13T13:08:16Z")

</div>

这是第一版还是第二版的呢

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 13 日 13:11 UTC](https://forum.freemdict.com/t/topic/43999/3 "2026-05-13T13:11:37Z")

</div>

First issued as an Oxford University Press paperback 1994  
Reissued, with corrections, in new covers 1998

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 19 日 00:10 UTC](https://forum.freemdict.com/t/topic/43999/4 "2026-05-19T00:10:42Z")

</div>

这个test  
[test.txt](https://forum.freemdict.com/uploads/short-url/hllnO4FhLLMXF0HNZrcv86mIa25.txt) (594 字节)  
只有一个词条，可以用MdxBuilder制作成mdx，在goldendict中可以正常显示。

---

<div class="post-metadata">

**Author:** ![xingxingla](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/x/ccd318/32.png) [@xingxingla](https://forum.freemdict.com/u/xingxingla)\
**Post date:** [2026 年5 月 19 日 11:12 UTC](https://forum.freemdict.com/t/topic/43999/5 "2026-05-19T11:12:14Z")

</div>

现代化的方案的话，可以用python和mdtt库生成mdx和mdd文件，使用bs4来解析生成html，如果处理源数据比如xml或者json格式能解析就不用正则去写，

至于MdxBuilder的话，就可以忽略不计了，就按照html格式写就行

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 20 日 02:03 UTC](https://forum.freemdict.com/t/topic/43999/6 "2026-05-20T02:03:40Z")

</div>

编程的方案超出了我的知识边界，刚好有个疑问请教：现代化方案对数据源的要求是什么？是否也需要考虑重新整理数据？  
比如说，epub的html把大多数词头放在class=“level” id="word123"标签，也有一些被放在正文里边，没有类似的标记，对于这种情况，通常怎么处理的？

---

<div class="post-metadata">

**Author:** ![xingxingla](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/x/ccd318/32.png) [@xingxingla](https://forum.freemdict.com/u/xingxingla)\
**Post date:** [2026 年5 月 20 日 02:12 UTC](https://forum.freemdict.com/t/topic/43999/7 "2026-05-20T02:12:50Z")

</div>

可以阅读beautifulsoup文档，也可以问豆包啊千问啊。。。比写正则去解析xml快的多

也可以选择用ai编程工具比如trae等  
现在0基础手搓用ai不难的

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 21 日 09:50 UTC](https://forum.freemdict.com/t/topic/43999/8 "2026-05-21T09:50:13Z")

</div>

# 从零学做 MDX，新手实操心得二

道路千万条，省劲儿第一条。做题讲究简便方法，做事情也要考虑，在满足目的要求的情况下，能不能减少投入。为了避开复杂繁重的数据清洗，把目标瞄向了图片词典。  
[一键制作图片词典 MdxSourceBuilder](https://forum.freemdict.com/t/topic/2882)提供了一个好方法。源文件是扫描版pdf，容易获得。只要建立headword和页码的对应关系txt，词典的主体部分就完成了。  
对于有索引的词典，用这个方法非常方便，能够快速得到与纸质书质量一样的成品。比如这个词典

> **索引**
>
> ![0007](https://forumcdn.freemdict.com/uploads/default/original/3X/d/7/d7014824a704cc8461a2e4eeb3cea2c883ff73b5.jpeg)

有12页，每页有6个切片，所有的切片交给AI会得到完整无误的结果，“headword page”格式的索引就建立了，配合少量的人工调整就可以进入下一环节。

---

<div class="post-metadata">

**Author:** ![wynick27](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/958977/32.png) [@wynick27](https://forum.freemdict.com/u/wynick27)\
**Post date:** [2026 年5 月 21 日 11:02 UTC](https://forum.freemdict.com/t/topic/43999/10 "2026-05-21T11:02:35Z")

</div>

现在直接把mdx格式说明和epub给ai，ai直接就能生成，不需要这么麻烦。

---

<div class="post-metadata">

**Author:** ![zaojz](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/z/c68b51/32.png) [@zaojz](https://forum.freemdict.com/u/zaojz)\
**Post date:** [2026 年5 月 21 日 11:43 UTC](https://forum.freemdict.com/t/topic/43999/11 "2026-05-21T11:43:59Z")

</div>

用的哪个ai呢

---

<div class="post-metadata">

**Author:** ![wynick27](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/958977/32.png) [@wynick27](https://forum.freemdict.com/u/wynick27)\
**Post date:** [2026 年5 月 21 日 12:05 UTC](https://forum.freemdict.com/t/topic/43999/12 "2026-05-21T12:05:01Z")

</div>

我用gemini比较多，也用gpt和claude，不过这种简单工作随便一个ai都可以做。  
做图片词典也可以用paddleocr先识别一遍，然后让ai来写程序提取词头和页码。

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 21 日 13:15 UTC](https://forum.freemdict.com/t/topic/43999/13 "2026-05-21T13:15:12Z")

</div>

我刚刚安装好python,vscode,正在研究怎么弄。跟ai交流忒费劲。安装的时候，每进行一步都截图丢过去，这样反倒是更方便。

---

<div class="post-metadata">

**Author:** ![xingxingla](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/x/ccd318/32.png) [@xingxingla](https://forum.freemdict.com/u/xingxingla)\
**Post date:** [2026 年5 月 21 日 13:23 UTC](https://forum.freemdict.com/t/topic/43999/14 "2026-05-21T13:23:35Z")

</div>

你可以用trae或者一些vibe coding工具就不用不停在浏览器和vscode切换

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 21 日 15:45 UTC](https://forum.freemdict.com/t/topic/43999/15 "2026-05-21T15:45:45Z")

</div>

已经下载了trae cn，在摸索中。安装python时设置了虚拟环境，在设置trae的时候花费了时间。现在用下来，感觉就是在不断试错。给的指令和反馈更准确，效率会高一些。如果不能很好的定义问题，就不知道什么时候能试出个结果了。

---

<div class="post-metadata">

**Author:** ![workmywork](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/w/258eb7/32.png) [@workmywork](https://forum.freemdict.com/u/workmywork)\
**Post date:** [2026 年5 月 22 日 01:19 UTC](https://forum.freemdict.com/t/topic/43999/16 "2026-05-22T01:19:43Z")

</div>

# 从零学做 MDX，新手实操心得三

几天的时间体验了不同阶段的制作技术，这次进入到快速生产的阶段。  
个人体会，对于从未编码的人来说门槛在于：

1. 调试工作环境。我用的Trae和python，是在AI的指导下完成安装调试的。
2. 如何给Trae布置任务。我的做法是让聊天AI把每步出现的问题整理成信息+任务要求的内容给Trae，用过几次就了解怎么给Trae布置任务更高效。  
第一个任务：  
最终把Trae整崩溃，出现了满屏的“让我看看是什么样子的…”，正是由于这句话让我觉得要换个思路，随即把任务删除，工作环境中的相关文件删除。  
第二个任务：  
做了一些改进  
a. 用Trae习惯的指令布置任务。对于“比较文件1和文件2的区别，告诉我结果”这类的工作，那就是一句话的事。对于稍微复杂一些的任务，如果不清楚如何下指令更符合Trae的习惯，这时候可以对任务进行拆分，化整为零分步实施。让Trae多做些一句话的事。  
b. 布置任务时，尽可能多的给Trae提供信息。我提供了词典正文的一张图片、一个词条示例、python的版本以及pip list。

---

<div class="post-metadata">

**Author:** ![xingxingla](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/x/ccd318/32.png) [@xingxingla](https://forum.freemdict.com/u/xingxingla)\
**Post date:** [2026 年5 月 22 日 04:27 UTC](https://forum.freemdict.com/t/topic/43999/17 "2026-05-22T04:27:43Z")

</div>

你切换到trae solo模式更好一点。。至于pip list本身ai就可以调用获取。。

---

<div class="post-metadata">

**Author:** ![dfL](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/dfl/32/68690_2.png) [@dfL](https://forum.freemdict.com/u/dfL)\
**Post date:** [2026 年6 月 9 日 10:59 UTC](https://forum.freemdict.com/t/topic/43999/18 "2026-06-09T10:59:44Z")

</div>

用codex或antigravity会简单很多吧，让他们写Python脚本处理，唯一缺点就是要money
