lmm333's Clip 介绍
背景
互联网的核心精神是分享,但近期有报告指出,近些年全球链接失效的速度都变快了,比如我有篇收集 别人2014年终总结的博文 ,里面大部分链接都已经失效了,包括不限于个人网站的链接,著名社交网站的链接,传统博客网站的链接等。
为了保存链接里的内容,必须得剪藏网页。
我也有剪藏网页的习惯,这些年用过印象笔记,飞书,Omnivore,Instapaper 以及 selfhost 过 群晖Note 和 wallabag,但是这些工具都有一个共性的问题,就是收藏的内容是私有的,收藏之后再也不会拿出来看了。
为了解决这个问题,我一直想有个地方,可以把我收藏的内容自动公开分享出来,这样不仅可以让我自己看到,也可以让别人看到,提高内容的生命周期。
受限于内容管控机制和审查环境,国服是不可能有这样的产品了,外服也没遇到合适的,直到我看到了DemoChen's Clip,并找到了这个项目。
目录
- 2024-08-26 只此中国色:在六朝博物馆领略中国人文美学魅力
- 2024-08-06 LinkedIn 分享了在构建生成式 AI 产品时的一些宝贵经验教训 @宝玉xp 的微博
- 2024-07-03 2024最拥挤的赛道:离职博主
- 2024-07-03 学生年度人物·2022候选人 | 社会学系2021级硕士研究生徐毅萌
- 2024-07-03 纪念一段棘手的过去:在疆“上海青年”的身份之争与记忆之场(徐毅萌) - 北京大学社会学系
- 2024-07-03 扫了一遍今年学校各院系的毕业典礼发言,最喜欢的是这篇
- 2024-07-03 2024年毕业致辞 | 硕士生代表徐毅萌在毕业典礼上的发言
- 2024-06-30 你的眼中写着怯懦 #1960_水库论坛
- 2024-06-28 中共二十届三中全会前瞻:推迟原因、核心议题与深层背景
- 2024-06-27 粤车南下配套进行中 港珠澳大桥再次站C位 | 韦东庆
- 2024-06-27 Bayfamily | 我的战争预案
- 2024-06-27 吴军:大势面前,如何成功?
- 2024-06-27 苏生不惑 | 一键下载公众号所有文章,导出文件支持PDF,HTML,Markdown,Excel,chm等格式
- 2024-06-26 左思右想 | 从孩子的三十岁回头思考
- 2024-06-26 知乎 | 2024 高考泉州五中卓孟毅语文获满分 150 分,是首位高考语文满分考生吗?语文是怎么考到满分的?
- 2022-11-21 为什么选择 Lisp?
- 2022-11-21 马斯克、贝索斯和扎克伯格所体现的荒诞不平等是对民主的威胁
changelog
以下是我的大致创建流程,详细步骤见下面原始文档,很详细
2024-06-26
- 安装
- 用
clip
作为项目名,fork 了 clip-template git clone
项目到本机的~/Downloads
目录 (放下载目录是为了方便 Markdownload 扩展保存网页到本地)make install
安装依赖(这一步没有成功,特别慢,成功后可以本地预览,没成功也不要紧)
- 用
- 修改配置
- 安装插件
- Chrome 里安装了 Markdownload 扩展,其他浏览器参考源码 并导入 theowenyoung 的 配置文件, 我没有使用 theowenyoung 修改过的插件,似乎也没问题
- 此时可以使用 Markdownload 插件保存文章,点击 Download 按钮,文件会自动按照日期保存到
~/Downloads/clip/content/2024/06/26/{slug}/index.md
,如果有图片,图片也会保存到该目录下,直接git commit
并推送到远程仓库即可
- vercle 部署
- 在 vercel 新建项目,选择从 Github 中导入项目,不需要做额外配置,首次部署完成后,可以看到预览的网址
- 在 Vercel 的后台,默认域名处,可以添加自定义域名,我添加了 CNAME clip.lmm333.com , 这一步需要在自己域名的管理后台操作,需要等待域名解析变更,我等了约1小时吧
- rss feed
- vercel 部署时会自动生成 rss feed, 我的链接是 clip.lmm333.com/feed.xml
- 更多功能
- 自动生成目录 参考 https://github.com/helloChenLei/clip 项目,更新
cli.ts
文件,添加<!-- Table of Content-->
- 增加 GA: 官方的 book.toml 里的 GA 配置不支持 GA4, 建议在 head.hbs 里自定义, theme 目录一开始不生效,换了
cli.ts
文件后,放到static
里生效
- 自动生成目录 参考 https://github.com/helloChenLei/clip 项目,更新
- 参考文档
以下是原始项目的 readme.md
这是 https://clip.owenyoung.com/ 网站的模版,里面收集了我觉得值得收藏的文章全文。本来是个人在使用,但是有朋友也想复制这个流程,所以我就抽出了这个干净的模板,让想用这套流程的朋友方便一点~
大概流程
- 浏览网页,比如 https://www.owenyoung.com/inspires/
- (可选)如果是英文文章,我会使用 Immersive Translate 浏览器扩展将网页翻译为双语文章
- 用markdownload 浏览器扩展,把双语文章保存下来。
- 使用 Git 把本地文件同步到远程仓库
- Vercel会自动部署并发布。
Online Demo: https://clip-template.vercel.app/
如何初始化
注意:当前我只测试了 macOS 和 Linux,我没有 windows 机器,所以没有写 Windows 的脚本,但是欢迎贡献~
-
点此Fork 本项目到你的自己的 Github 账户, 名称修改为
clip
(如果是其他的名字,后面的步骤中安装的插件的配置需要同步修改下) -
把你 fork 后的项目克隆到本地,记得要克隆到本地的
~/Downloads
目录 (浏览器默认下载目录),如果你自定义了其他目录作为浏览器的下载目录,那就克隆到你自定义的下载目录下。
这么做是因为浏览器只允许浏览器扩展将文件下载到
Downloads
目录,所以我们收藏的文章默认会保存到下载目录下的某个目录。记得把下面的地址换成你 fork 后的 repo 地址:
cd ~/Downloads git clone git@github.com:theowenyoung/clip.git
-
本地安装依赖,依赖的二进制完美都会安装在当前项目目录下的
bin
目录内,这样不会污染别的地方,这个命令会安装mdbook
,deno
到本地目录:cd ~/Downloads/clip make install
-
本地启动运行
make serve
此时,打开 http://localhost:8000 应该就能看到文章。
文章会保存在
content/2022/11/14/{slug}/index.md
,如果有图片,图片也会保存在该目录下。我使用我修改的一个Markdownload 扩展,它负责把文章保存到本地目录下。 -
安装插件,请在https://github.com/theowenyoung/markdownload/releases 下载最新版插件,firefox 浏览器可以打开
about:addons
页面,选择从文件安装。 chrome 浏览器手动安装步骤请参考这里 -
安装后,可以从浏览器的扩展管理页面,进入该扩展的配置页面,拉到最后面,导入我的配置文件,之后,可以按照你自己的需求修改配置。
现在可以打开一篇文章,比如:
https://www.owenyoung.com/inspires/
试试使用插件保存文章,保存后,本地运行:
make serve
就可以在浏览器中打开http://localhost:8000 看到预览页面。
-
发布到 Vercel,直接在 https://vercel.com/dashboard 新建一个项目,然后选择从 Github 中导入项目,不需要做额外配置,你可以在首次部署完成后,在 Vercel 的后台设置自定义域名。
初始化之后的常规操作
- 看到想收藏的文章,点击扩展图标保存到本地
- 使用 Git 同步到远程仓库即可,Vercel 会自动部署最新的项目。
如何保持与这个库的同步
git remote add upstream https://github.com/theowenyoung/clip-template.git
git pull upstream main
这样即可合并上游main
分支的代码
RSS 地址
Mdbook 本身的目标是制作电子书,所以并不支持 RSS,但为了方便,我添加了输出 RSS 的功能,地址是根目录下的feed.xml
,比如该 demo 的 RSS 地址:
https://clip-template.vercel.app/feed.xml
配置
网站的标题之类的配置都在book.toml
下,照猫画虎修改即可。 查看所有可配置的东西,请参阅这里
主要是修改你的网站名称,网址,作者以及 Git Repo 相关配置等等。
如果你有静态文件需要提交放在网站根目录到话,可以放在template/archive
下,现在有一个 robots.txt
, 默认只允许搜索引擎收录首页,其他页面一律不允许,因为考虑到 clip 的文章大都是收藏别人的文章,所以不让搜索引擎收录是一个合理的默认选择,你可以根据自己的需要修改。
项目根目录下的README.md
文件被用于作为网站的首页。如果你不想用这个README.md
,也可以在添加template/archive/README.md
文件。
插件配置
我默认的 Markdown Frontmatter 遵循的是 zola 的格式:
---
title: "{pageTitleWithoutSiteName}"
date: {date:YYYY-MM-DDTHH:mm:ss}+08:00
updated: {date:YYYY-MM-DDTHH:mm:ss}+08:00
taxonomies:
tags: {tags}
extra:
source: {baseURI}
hostname: {hostname}
author: {byline}
original_title: "{title}"
original_lang: {lang}
---
如果你需要别的 tags 的格式,可以改为:
---
title: "{pageTitleWithoutSiteName}"
date: {date:YYYY-MM-DDTHH:mm:ss}+08:00
updated: {date:YYYY-MM-DDTHH:mm:ss}+08:00
tags: {tags}
extra:
source: {baseURI}
hostname: {hostname}
author: {byline}
original_title: "{title}"
original_lang: {lang}
---
Epub 相关配置(可选,默认不启用)
我在这个项目里会使用 Github Actions,把当日的文章汇总成一个 epub 文件,然后发送 email 到我的 kindle 邮箱里,这样就能在 kindle 阅读这些保存下来的文章。
如果你不修改相关配置的话,默认是不开启的。
如果你想启用的话,需要把.github/workflows/build-daily.yml
里面的注释去掉
发送 email 需要用到 https://www.mailjet.com/的 API,免费额度每日 200 封,足够个人使用。 你需要注册一个账户,然后拿到 API ID 和 Secret
我使用https://orly.nanmu.me/生成 epub 的封面图,你可以生成一个,然后替换 templates/archive/cover.jpg
以及 templates/cover.jpg
本地测试生成 epub 文件可以运行如下命令:
make today
make yesterday
make day day=2022-11-21
具体配置可以参考我的 clip 配置,等有人需要,我再完善这部分文档吧,或者欢迎你贡献呀!