基于语雀的白嫖博客

曾经使用过typecho、wordpress等博客系统,

但因为服务器花费贵、内容编辑器不够强大等原因没有持续运行下去。

在这之后一直在使用语雀记录各种学习资料,感觉非常的方便,还支持数学公式、思维导图、插入PDF、代码高亮等功能。突然有一天在账号设置中看到了Personal Access Token,去官网一查发现语雀是支持使用api的,也就是能通过api去获取语雀的数据。那岂不是能用语雀的数据做个博客了。在手机上浏览语雀文章还是挺麻烦的,得安装语雀客户端,或者登录网页版语雀。如果做成博客网页就可以直接看到文章了,并且可以对知识库进行二次分类,过滤一些不常用的文章。

说干就干,但有个问题,服务器怎么解决,因为我打算使用php开发这个博客,少说一年也得花费几百块。还好平时经常冲浪,vercel成为了我的首选目标,它是支持php的,甚至python。

Vercel + PHP:https://php.vercel.app/

对php的支持:

基于语雀的白嫖博客_第1张图片

有了免费的运行平台,那还得有域名、证书,这些vercel都免费提供(域名是二级域名),当你完成部署后vercel会自动添加证书。既然已经白嫖了那么多东西,那再来点免费劳动力-chatgpt帮我写代码。

基于语雀的白嫖博客_第2张图片

语雀开发者文档

此处为语雀内容卡片,点击链接查看:Overview · 语雀


程序部分

后端使用php调用语雀api

主要用到两个接口:

1.https://www.yuque.com/api/v2/repos/{知识库id}/docs
//获取一个仓库知识库的文档列表
2.https://www.yuque.com/api/v2/repos/{知识库id}/docs/{文章id}
//获取单篇文档的详细信息

接口2返回的数据解析:

  • id - 文档编号
    slug - 文档路径
    title - 标题
    book_id - 仓库编号,就是 repo_id
    book - 仓库信息 ,就是 repo 信息
    user_id - 用户/团队编号
    user - 用户/团队信息 
    format - 描述了正文的格式 [lake , markdown]
    body - 正文 Markdown 源代码
    body_draft - 草稿 Markdown 源代码
    body_html - 转换过后的正文 HTML
    body_lake - 语雀 lake 格式的文档内容
    creator_id - 文档创建人 User Id
    public - 公开级别 [0 - 私密, 1 - 公开]
    status - 状态 [0 - 草稿, 1 - 发布]
    likes_count - 赞数量
    comments_count - 评论数量
    content_updated_at - 文档内容更新时间
    deleted_at - 删除时间,未删除为 null
    created_at - 创建时间
    updated_at - 更新时间

body_html 为需要的部分,用["data"]["body_html"]提取出来。

然后用js处理body_html 显示异常的问题:代码没有高亮、图片显示过大。

代码高亮(来源知乎):



更多样式:

highlight.js/src/styles at main · highlightjs/highlight.js · GitHub

图片显示:



搭建运行

先把php项目上传到github仓库,里面添加一个文件vercel.json

{
  "functions": {
    "api/index.php": {
      "runtime": "[email protected]"
      /*
      对应的php版本
    	[email protected] - PHP 8.1.x
	[email protected] - PHP 8.0.x
	[email protected] - PHP 7.4.x
      */
    }
  },
  "routes": [{ "src": "/(.*)", "dest": "/api/index.php" }]
}

然后创建api文件夹,api下创建index.php文件

登录vercel,绑定github

New Project – Vercel

选择要导入的仓库

基于语雀的白嫖博客_第3张图片

然后点击部署

基于语雀的白嫖博客_第4张图片

这样就部署完成了

基于语雀的白嫖博客_第5张图片

github仓库有推送时,vercel会自动部署最新的版本,所以只需要注重代码,部署是全自动的。

在settings/domains中可以绑定自己的域名

基于语雀的白嫖博客_第6张图片

最后测个延迟,不挂梯子速度也非常快

基于语雀的白嫖博客_第7张图片

你可能感兴趣的:(php,开发语言,个人开发)