PyBoke: 极简博客生成器
- 使用过程极简
- 功能极简,代码极简
因为功能少、代码简单,任何懂编程的人(只要懂 Python 基础) 就能在短时间内完全看明白本软件的全部代码并且随心所欲地修改。
主要功能
- 只支持 Markdown 格式,用户只需要用 Markdown 写文章,即可生成静态博客。
- 添加文章时,不需要在任何地方填写文章标题、文章分类、标签、日期…… 这些全部都不用管,只管写文章
- 博客页面有一个 "random" 按钮,可随机阅读文章
- 自带四个极简主题 (CSS style), 可自行添加更多主题
- 自动生成 RSS (但只提供有限支持,详见 readme)
- 有一个简单的设定图片最大宽度的功能
- 有一个简单的替换图片地址功能
为什么不需要填写文章标题、文章分类、标签?
- 自动提取文件第一行的内容作为标题
- 管理博客文章的最常见的思维是通过 "类别", "标签", "日期" 三个维度来实现
- 本软件的第一版也是这样做的,花了很多时间精力几乎全部功能都实现时 (甚至还用 PyQt 做了一些 GUI), 又全部推倒重做,因为发现了新的文章管理方法。
"类别", "标签", "日期" 的缺点
- 这套方法有很多优点,因此才会流行,但也有缺点。
- 我认为缺点是用户发布文章时,每次都要选择分类、填标签,产生额外的心智负担。
- 而且处理这些功能,要写很多代码。
三个维度发现文章
- 我认为可以从 "三个维度管理文章" 变成 "三个维度发现文章"。
- 管理的目的是使文章井井有条,但我发现我真正担心的并不是文章是否排列整齐, 而是如何让读者(或我自己)从旧文章中挑选一些文章来看,避免旧文章被埋没。
- 因此,我只要提供一些发现文章的维度即可,不需要强迫用户(作者)花时间精力去管理。
- 对于文章数量不会很多的个人博客来说, "标题索引", "日期", "随机" 已经够用了, 同时使代码大幅减少,使用过程也很畅快,这个 trade-off 是值得的。
替换图片地址
- 在 markdown 中可使用

的形式插入图片。 - 在每篇文章对应的 toml 文件的 pairs 项目里,可指定图片的替换地址,例如:
pairs = [ [ '''../output/pics/abc.jpg''', '''https://example.com/abc.jpg''' ], ]
- 一旦提供替换地址, markdown 文件的内容保持不变, HTML 文件中如有第一个字符串,会被替代为第二个字符串。
- 不只是图片地址,该功能可以替换任何字符,但主要用途是替换图片地址。
原来要考虑几十 G 大小,那基于 Git 传输不太合适,可以整站传到对象储存或者 CDN 上。
相册还要考虑一个问题,原图可能很大(几十M),浏览的时候一般要生成缩略图。
Cloudflare Images 可以生成缩略图,但是有起步价格(5刀)。国内的云储存一般也有图片处理功能,但要收出口流量费没有 Cloudflare 便宜(CF 是特例)。
CORS问题正是我担心的。静态相册可能很多人会直接上传到 github pages 之类的地方,如果图片比较多,占用空间就会很大,就算一些小的 VPS 只有小几十 G 空间也不太够用,所以要想办法把图片的储存移到另一个服务里。
现在看来纯静态不太行。
静态网站的话,图片和其他 HTML/CSS/JS 一起发布就好了,传到对象储存似乎没什么优势。
对象储存适合动态应用,例如做个图床,把文件拖进去上传然后返回 URL,然后文章里引用 URL。
然后 Cloudflare R2 功能感觉还比较初级,例如 CORS 设置(浏览器直传需要)得通过 API 调用设置,很不方便。我感觉他们把 R2 当作自家边缘云服务的附属服务,还没有优化第三方的调用。