这是由Deepseek flash v4.1进行编写的文章编辑器。
纯前端(无后端、无构建、无依赖安装)的 Markdown 文章编辑器,直接读写本项目Hexo博客的source/_posts,格式与ZEROKAMI站内已有文章完全一致。因此本项目可能在图片路径、视频块使用等方面与各位的Hexo博客有着较大差异,可能并不适用于你的Hexo博客。
1 | hexo-editor/ |
本项目已经上传至Github仓库,可直接使用 https://xieyuqaq.github.io/Hexo-editor/。如果你所处的地方对Github访问并不友好,也可以从https://zerokami.cn/tools/hexo-editor上进行访问。
双击 index.html,用 Chrome / Edge 打开(Firefox / Safari 没有 File System
Access API,只能「导入文件夹」只读编辑 + 下载,见下方说明)。
只有第一次打开、或有目录没连上时才会弹出「连接目录」引导(里面分别连文章目录(必填)和 图片目录(可选),连完点「进入编辑器」)。两个目录都连好之后,
以后再打开就直接进编辑器,不弹任何窗口。目录记在浏览器里,下次打开自动恢复;
连没连上,看左下角列表底部的两个圆点(绿=已连接,红=未连接),点圆点随时能回来换目录。
选项目根目录最省事(编辑器会自动找到
source/_posts与source/images);
选source或直接选_posts也都能识别。
关于 file :file:// 的 origin 虽然是 null,但 Chromium 只在「跨源子框架」
「没有用户手势」时拦目录选择器,不拦 file:// —— 双击打开同样能直接写盘
(2026-10 实测)。唯一代价是源不透明,浏览器对目录授权的长期记忆不可靠:重开浏览器后
圆点可能变红并提示「已记住 X,需要重新授权」,点一下「重新授权」即可,不用重新翻目录。
早期版本这里写着「
file://下 API 被禁用、只能导入并下载」,那是把 OPFS 的规则
错套到了 picker 上 —— 已实测推翻。
不再需要本地服务:原来的 serve.mjs / start-editor.bat 已删除,纯静态文件即可运行。
| 面板上的名字 | 字段 | 说明 |
|---|---|---|
| 标题 | title |
必填 |
| 链接 | abbrlink |
新建时锁定;hexo generate 写入文件后,点 ↻ 重新读取即解锁 |
| 文章描述 | description |
单行自动转标量;多行自动变成 >- 折叠块(与站内 5 篇文章一致) |
| 标签 | tags |
内联数组 tags: [网站, 软件];带站点已有标签的联想 |
| 时间 | date |
新建后锁定;文件保存一次后解锁,格式 YYYY-MM-DD HH:mm:ss |
| 封面 | cover |
站内绝对路径 /images/... 或完整 URL;可从本地选图并自动复制进 source/images/YYYY/MM/ |
锁定逻辑按你的要求实现:
_config.yml 的abbrlink.alg: crc32 + rep: hex 算出 crc32(title) 供参考正文区不再是纯文本框,也不再需要手动开预览:打字时块级效果立刻生效 ——
输入 # + 空格 + 文字,这一行马上变成一级标题(H2 到 H6 同理),> 变成带竖线的引用、- 变成 • 列表、``` 变成代码块底色。
#、** 都在),方便改标记;**粗体** 真的加粗。- 、1. 、> 、- [ ] ),在空的列表项上回车会退出列表;test/wysiwyg.test.mjs)。Ctrl+Z / Ctrl+Shift+Z),| a | b | 行拼成一张真表(表头加粗底色、:---: 对齐生效、分隔行收成一条细线,悬停可展开去改);点进任意一行| a | b | 供编辑,光标一走立刻恢复表样。工具栏覆盖:H1–H6、加粗、斜体、删除线、行内代码、文字颜色(<font color>)、
无序/有序/任务列表、引用、链接、图片、表格、代码块(可填语言)、分割线、<!-- more -->、<kbd>、上标、下标、折叠块、居中容器、脚注、撤销/重做。
插入图片:点「图片」选本地文件,或直接把图片拖进编辑区 ——
图片按年月存进 source/images/YYYY/MM/,文件名自动换成 10 位随机字母数字
(如 7k3f9a2c1d.png,后缀沿用原文件),正文插入 。
「封面」里的「选图」走同一条路径,命名规则一致。
插入视频:点「▶ 视频块」,填哔哩哔哩 BV 号 / YouTube 链接。默认勾选
「判断网络,自动选择哔哩哔哩 / YouTube」(两个平台都必须填),生成的代码
与站内 23 篇文章完全相同:
1 | <div id="videoContainer"> |
取消勾选则只需填其中一个平台,生成单平台 iframe(不判断网络、不带 script)。
支持两种布局(等比 16:9 / 固定高 450),并可追加 > 视频 / > 哔哩哔哩 ... / > YouTuBe ... 引用块。
视频块在编辑器里可直接预览:折叠态显示成 16:9 的播放器 iframe(哔哩哔哩优先),
块内源码隐藏;点进块内任意一行即展开全部源码供编辑,光标移出后自动折叠回播放器。
代码块(```)里的视频块示例代码不会被误识别。
x / y 篇 + 两个圆点 绿=已连接 / 红=未连接,点一下能重开引导换目录html[data-theme="light"|"dark"]),跟随系统时监听 prefers-color-scheme 实时切换Ctrl+S 保存、Ctrl+B/I/K、Ctrl+2/3/4、Shift+Ctrl+N 新建assets/core.js 只做最小必要解析,核心策略是:没改过的字段按原始行逐字节回写。
因此:
test/roundtrip.test.mjs:当前 90/90,含临时测试文章)cover: 的写法、description: >- 折叠块、单引号包裹、test/edit.test.mjs)新文章则按站内主流顺序生成:title → abbrlink → description → tags → date → cover,abbrlink 留空、cover 留空(都输出成 cover: ,与 45 篇无封面文章一致)。
文件名建议规则复刻现有命名:<两位年份> <标题>.md(如 26 迈从G3 A鼠标开箱.md),
也可切换成 YYMM 或纯标题。
已用编辑器生成一篇包含标题/列表/表格/代码/图片/字体颜色/视频块的文章,
放入 source/_posts 跑 hexo clean && hexo generate:
abbrlink 被自动填入(37fab123),生成 public/37fab123.html<h2>、<table>、<img>、<font color="red">、<script> 与 checkGoogle() 全部原样输出1 | node hexo-editor/test/roundtrip.test.mjs # 全部文章逐字节往返一致 |
当前全部通过(473 条断言)。
index.html + assets/ 里,双击即用;node。file:// 可以直接写盘,但源是 opaque —— 目录授权存进 IndexedDB 后,abbrlink 预估只是参考值:Hexo 采用「有就不改」的策略,hexo generate 写入的为准。