2024-08-22-更新:一个新的文章分享方案:《一个简单安全的记事本工具 NotepadTab,却意外解决了匿名分享文章的痛点?附 Obsidian 用法》
我没有订阅 Obsidian 官方的 Publish 服务,因为我的大部分笔记都是给自己写的,并不需要以“库”为单位整个分享出来。
但我有时也需要分享一些笔记,但一直没找到很好的分享方式。
尤其是在我把一篇笔记分享给我认识的人阅读时,我不得不把笔记导出为 PDF 传给对方,如果遇到动图、视频等动态内容,PDF 就不太合适了。
经过思考,其实我的笔记内容最适合的载体应该是网页,我只需要找一个公共的服务,能够允许我把 Markdown 内容放入,并展示成预览页面就可以了。
所以这篇文章就来分享下如何通过 Github Gist 来实现这种“分享给熟人”的文章网页。
了解 Github Gist
在使用之前,首先要了解什么是 Github Gist 服务以及它的可用范围。
GitHub Gist 是 GitHub 上的一个功能,允许用户以简便的方式共享和存储代码片段、文本片段、配置文件。Gist 提供了一个简单易用的界面,可以快速创建和分享代码片段,无需创建完整的代码库。
相比 Evernote 这类自带云服务的笔记服务,Obsidian 这样的本地工具缺乏一个在线的分享手段,因此 Github Gist 正好是一个完美的补充。
手动使用 Gist 的方法
如果你只是需要偶尔分享,并不打算深入使用这一服务。那么只需要 申请 Github 账户,然后遵循 Gist 的创建流程 就可以在 Gist 网页 上手动创建一篇笔记并分享给你的朋友了。
在 Obsidian 中使用快捷 Gist 分享
而想在 Obsidian 中使用,最简单的方法是利用 Obsidian 插件:Share as gist 。你需要申请一个 Github Personal Token,然后在插件的设置界面配置 Token。
申请 Github Token
遵循以下步骤就可以申请一个 Github Token。
- 登录到 GitHub 帐户。
- 在右上角的个人资料菜单中,选择 “Settings”(设置)。
- 在设置页面中,选择 “Developer settings”(开发者设置)。
- 在左侧导航栏中,选择 “Personal access tokens”(个人访问令牌)。
- 选择“Fine-grained personal access tokens”(细粒度的个人访问令牌)。
- 单击“Generate new token”(生成新令牌)按钮。
- 提供一个令牌描述,以便记住该令牌的用途。
- 选择希望该令牌拥有的权限。根据需求,可以选择不同的权限范围,如代码读取、代码写入、存储库管理等。这里我们分配一个 gists 的读写权限(以最小原则申请),申请时间可以设为 1 年。
- 在权限选择完成后,滚动到页面底部,点击“Generate token”(生成令牌)按钮。
- 系统将生成一个新的 Token,并显示在屏幕上。
需要注意的是,这是唯一的机会复制 Token。所以需要把 Token 复制到一个安全的地方,稍后就要用到。
获得 Token 之后,我们开始进入 Obsidian 进行操作。
Obsidian 安装和配置 Share as gist 插件
你可以在 Obsidian 的插件中心搜索 Share as gist
直接安装,也可以在插件的官方仓库下载。
🔗 Share as gist 插件 - Github 仓库
安装完毕后,在插件设置中,粘贴你刚刚生成的 Github Token,配置就完成了。
由于 Github Token 是敏感信息,会被这个插件存在 Obsidian 的 localStorage 中,不会被存储、不会被备份,也不会跟着 Obsidian 库同步。在多台设备上使用时,都需要进行首次配置。
另外有一个安全方面的注意点,理论上其他插件可以访问 localStorage,所以在申请 Token 时,权限范围只需要 gist 读写就够了,这样可以尽可能地保证 Github 的账户安全。
使用 Share as gist 插件分享 gist
安装完毕后,回到主界面,按下 Ctrl + P
,搜索 gist
,可以看到 公开分享
和 私有分享
两个选项。
选择对应选项,就会自动将当前打开的笔记内容分享成为一个 Gist,并将文章链接放入剪贴板,用浏览器就可以访问 Markdown 预览内容。
点击该页面右上角的 RAW 按钮,还能直接查看 Markdown 原文,对方拿到稿件进行二次编辑也很方便。
二次修改 gist 的方法
如果之后在 Obsidian 中对笔记做二次修改,也可以再次进行推送。
在编辑后,再次选中 Share as gist on Github.com,这时候会询问你是更新现有笔记还是创建新笔记。选择更新现有笔记就可以实现二次修改。
插件会自动添加 meta 信息到笔记顶部,但删除这段 meta 信息也只是导致无法更新笔记,并不会对已分享的 gist 产生影响。如果觉得不需要这个功能,也可以在选项中关闭“Enable updating gists after creation
”这个选项。
另一个选项则是把 meta 信息分享到 gist 中,一般是不需要开启的。
图片的处理
如果笔记中包含图片,你可能需要一些额外处理,这款插件并不能帮你自动上传图片到 Github 的图床。
我习惯的方法是,把分享的笔记单独开一篇分享笔记,然后用 Quicker 将图片上传到图床并自动转为 HTML 格式(用 <img src='图片地址'>
标签包裹即可)。Gist 在解析 Markdown 文本的同时,也会解析其中的 HTML 标签。
你可以用一些公开免费图床实现类似的效果,比如 sm.ms 图床。
如果你不想用图床,操作会稍微麻烦一些。Github 有官方图床,但是只能在仓库的 Issue 中快捷使用(拖拽上传),无法在 Gist 中直接拖拽上传图片。所以你开一个自己的仓库,在 Issue 里手动上传图片,再把图片地址拿来用就好。
一些缺点
这个方案很好地满足了 Markdown 内容的在线分享需求。
不过 Obsidian 中的双向链接语法 [[双向链接]]
是 Obsidian 自己定义的,所以没办法体现在 Github Gist 中(就算链接上也无法跳转),显得有些丑陋。
Gist 另一个大问题是国内访问速度慢,Github 经常处于间歇性不可访问的状态。而且 Gist 中的图片即使在第三方图床也需要经过 Github 的缓存,图片会加载地更慢。
所以最好是双方都能够顺利访问 Gist 的情况下,才最适合使用 Gist 分享。