从零开始建立个人博客X:微博备份计划

个人非常喜欢微博,作为每日生活记录,简单的几句话、几张图,非常好用。而且没有朋友圈的好友负担,完全随心。但鉴于微博的审核越来越严格,因此希望能做一个self-hosted的“微博”。

微博站点

对于微博,个人中最中意的功能是图片九宫格,最多九张图片。不像Instagram那样限制每次只能一张,难以完整表达一个主题,同时又不会太多,作为生活记录,刚刚合适。尤其是其中有一段时间测试的自适应九宫格:当图片不足九张时,基于固定的规则自适应调整缩略图大小,始终组成一个宽度与正文一致的正方形。只可惜当时很多人反对说图片太大了,影响阅读,该功能最终被放弃了。

要实现完全自控的微博(self-hosted microblogging site),一个选择是使用开源的微博系统实现,比如长毛象(Mastodon)、GNU social等去中心化微博。不过这些微博系统注重的似乎是社交功能,界面一般,配置起来还不简单,也不清楚是否有图片九宫格。

另一个选择基于现有的Hexo博客实现类似微博的功能。Hexo博客中图片默认会占据一整行,多张图片依次排布不但占用空间,也不美观,需要自行实现图片九宫格。最简单的方式就是使用CSS column-countFlexbox实现图片分栏排布,具体可参考网页图片展示。一个问题是这里的九宫格并不会像微博/微信一样调整缩略图,确保行列对齐,而是按原图大小成比例缩放,如果图片本身尺寸不一,最终效果会不太美观,不过还是可以基本应对大部分情况的需求。

主题也可以换一个更适合微博的,感觉curry不错,不过有不少小问题,目前还是使用NexT。

最后还有,微博的内容对于个人博客而言太过琐碎,可以将微博内容单独拿出来,放在二级域名mblog.yelf.me下:要做的是新建一个项目,作为微博站点,开启项目页面并绑定该次级域名。
需要注意的是,GitHub(GitLab)限制每个账号只有一个由用户名确定的域名username.gitlab.io。对于名称不是username.gitlab.io的项目,开启项目页面后,访问网址为 username.gitlab.io/projectname 。而DNS解析中CNAME的记录值只能是域名,不能是域名下的子目录,因此DNS中CNAME记录值依然需要指向username.gitlab.io,而非username.gitlab.io/projectname,网站会正确转跳。

设置变更

博客_config.yml
博客名称由C'Joy变为C'Daily
博客url由yelf.me变为mblog.yelf.me
注释掉RSS feed设置

主题_config.yml
Menu项目:注释掉关于、分类,添加返回博客的入口
侧边栏:关闭RSS订阅、去掉社交链接、关闭分类显示
文章页面:关闭分类及更新时间的显示、去掉打赏及版权声明
第三方:去掉数学、评论、访问统计及SEO等相关内容

更多功能

实现相册功能
将博客中所有的图片文件集中展示,生成一个相册(Album)页面,搜了一下发现实现起来有点麻烦,暂时没时间弄。
https://www.cnblogs.com/xljzlw/p/5137622.html
https://www.cnblogs.com/jarson-7426/p/5515870.html
https://blog.csdn.net/u013082989/article/details/70162293

关于图床

微博内容相当大一部分都是图片,因此需要一个图床,如七牛云、腾讯云、SM.MS图床。
对于微博的内容,其实完全可以直接把新浪微博作为图床使用,在图片上右键复制链接就可以得到图片的外链。外链的格式如下:

1
2
3
https://wx3.sinaimg.cn/mw690/63e72e9aly1fq3353ju55j21hc0u07gq.jpg
https://wx3.sinaimg.cn/mw1024/63e72e9aly1fq3353ju55j21hc0u07gq.jpg
https://wx3.sinaimg.cn/large/63e72e9aly1fq3353ju55j21hc0u07gq.jpg

  • 主网址为ws*.sinaimg.cn、ww*.sinaimg.cn或wx*.sinaimg.cn,*取1, 2, 3, 4之一;
  • 中间,mw690、mw1024、large代表缩略图、大图、原图三种尺寸图片;
  • 最后为随机生成的图片ID。
  • 需要注意的是,微博加入了防盗链,为了图片正确显示,需要将图片属性referrerPolicy设为no-referrer,具体可参考网页图片展示