强大编辑器

写文章 / 编辑器

先说清楚版权:这个编辑器可以原样粘贴网页格式,但“能粘贴”不等于“能发表”。只发表你自己的作品,或你已获得授权 / 属于公开许可的内容;转载必须填来源链接并保留作者信息。不要把别人的付费、未授权内容原封不动当成自己的发出来。

粘贴提示:在浏览器里选中网页内容 → 复制 → 点进编辑器 → 粘贴。脚本和跟踪代码会被自动去掉,图片如果来自外站,建议下载后用下面“上传图片 / PDF”重新上传,避免外链失效。

导入文件

.md/.html/.txt 直接导入正文;.pdf 会以嵌入阅读器 + 下载链接的形式插入正文。

上传的文件在“发布到 GitHub”时会一并上传到 uploads/;本地模式会先以文件形式保存,你再手动放进 uploads/。

草稿与发布

后台数据库管理(SQLite / Cloudflare D1)

检查登录状态…

说明:数据库模式和静态 posts.json 模式并存。首页优先读数据库,数据库不可用时自动回落静态。本地用 node server/index.js 启动就是真 SQLite 文件 blog.db;Cloudflare 上用 Pages Functions + D1(SQLite 方言,Cloudflare 全球分布),配置见 docs/cloudflare-deploy.md。

备份、导出与异地灾备

异地灾备 = 三份互不依赖的副本:① 本地下载的备份文件(你自己存到另一块盘 / 网盘);② GitHub 私有仓库(每次发布 + 备份提交都在异地留一份,见下方“备份到 GitHub”);③ Cloudflare D1 + Pages(全球分布,单点故障不丢站)。任何一份丢了,都能用另外两份恢复,恢复步骤见 docs/disaster-recovery.md。R2 对象存储是预留的第四份:如果你在 Pages 里绑了 R2(变量名 BLOG_BACKUPS),备份接口会尝试同时写一份到 R2,未绑定时如实提示未配置,不会假装成功。

发布到 GitHub 的设置(只在本次浏览器会话里用,不保存到仓库)

原理:编辑器直接调用 GitHub Contents API,把 posts/<slug>.html 和更新后的 posts.json 提交到仓库;如果 Cloudflare Pages 已关联该仓库,提交后会自动重新部署,几十秒后线上就更新了。没有 Token 时,用“下载文章文件”同样可以发布:把文件放进仓库 posts/ 再推送即可。

同步到知乎 / X

真实情况:知乎没有面向个人的公开写文章 API,不能靠一个密钥就“自动发专栏”;X 发帖 API 需要付费开发者账号和用户授权,免费的普通密钥发不出去。所以本博客的做法是:生成两个平台的适配版本,一键复制 + 一键打开撰写页,粘贴即发;如果你之后拿到 X 的授权 Bearer Token,可以在下面尝试直接调用 X API(失败会原样显示平台返回的错误,不会假装成功)。

打开知乎撰写页 ↗ 打开 X 撰写页 ↗

编辑已有文章

回首页