xLog SDK 的一些进展

7 months ago
CodingxLog
xLogBack

AI generated summary

xLog SDK的出现让我们能够更方便地自定义和控制xLog网站,提供了更多自由度和功能,包括获取站点信息、博客信息、评论信息等。SDK还可以集成到其他平台,提供统一的开发体验。未来还有进一步完善API和实现自动更新博客等展望。通过SDK,xLog更符合去中心化的设定,让用户更好地利用自己的数据。

为什么我们需要 xLog SDK?

尽管我对于 xLog 的整体体验十分满意,但不得不说,相比于 Hexo、VitePress 之类静态生成的站点,它的访问速度还是有些慢。目前来说,我们没有简单的方式来自己部署 xLog 或是利用 xLog 的数据生成静态站点。

xLog 允许我们方便地通过 CSS 自定义网站的外观,但是当涉及到如何渲染页面时,这样的自定义程度就显得有限了。在 如何优雅编译一个 Markdown 文档 一文中 diygod 介绍了 xLog 如何渲染 Markdown。但是你可能会不满意代码高亮的样式,或是有支持高亮特定行的需求。有的时候,你可以通过给 xLog 提 PR 的方式来满足你的需求,但不是所有的需求都适合 xLog 的每个用户。如果我们能自己控制如何渲染 markdown 的话,就有了更多的自由度。

对于很多人来说,xLog 不是他们唯一的博客、笔记或发布日常的平台,可能有人习惯使用 VS Code 来编辑博客,有人喜欢 Obsidian。拥有一个 xLog SDK 的话,集成其它平台时,社区的作者就不需要每个人都去实现一遍 xLog server 的逻辑了。这些重复性的工作应当通过 SDK 来统一解决。

现在 SDK 具备的功能

hyoban/sakuin

SDK for XLog

13Updated 5 months ago

我发布了 sakuin 0.1.0 版本,你可以通过 npm 安装:

ni sakuin

从 sakuin 导入 Client 并使用,它基于 crossbell.js。一般来说,你需要传递 handle 来获取特定站点的数据,它是你的 xLog 子域名。

import { Client } from "sakuin"

const client = new Client()
const site = = await client.site.getInfo(HANDLE)

你可以进行如下几类操作:

  1. 获取站点信息 client.site.getInfo
    1. 获取站点统计信息 client.site.getStat
  2. 获取博客信息
    1. 获取全部博客 client.post.getAll
    2. 分页获取博客 client.post.getMany
    3. 获取单个博客 client.post.get 或是 client.post.getBySlug
    4. 创建博客 client.post.put
    5. 更新博客 client.post.update
  3. 获取评论信息、发送匿名评论
  4. 获取 short,portfolio 信息

在这里我无法介绍全部你可用的 API 和参数,你可以通过 TS 的类型来了解如何使用,后面我也会生成文档。

我们用 SDK 能做什么?

sakuin 是从我的博客项目衍生出来的,所以很自然的我使用它来构建自己的博客,你可以对比它和原版 xLog 的访问速度。此外,我按照自己的喜好重新实现了布局和文章的渲染,我拥有了完全可控的自由度。对接 xLog 提供的匿名评论接口,我可以轻松的实现评论模块。

评论界面截图

hyoban/vscode-xlog

VS Code plugin for xLog

4Updated 7 months ago

VS Code xLog 插件,通过这个插件,你可以下载全部的博客文章到本地,在本地编辑或创建你的博客。你同样也可以在 VS Code 中上传本地文件或是远端链接文件到 IPFS。

一些展望

关于 xLog SDK 的后续,我大概能想到如下几点:

  1. 进一步完善第三方与 xLog 进行交互所需要的 API,与 xLog 社区作者联系,为社区作者提供统一方便的开发体验。
  2. 完整实现 xLog server 的能力,将项目转到 Crossbell 组织下,甚至替换 xLog server 的目前实现。
  3. 为 SDK 提供 server API,使得我们可以不用通过 SDK 来进行交互。

关于利用 SDK 集成 xLog 的想法有:

  1. 集成 git commit hook,实现自动创建更新博客。

相信 xLog SDK 的出现能够让 xLog 更符合去中心化这个设定,有越来越多的人能真正的利用他们自己的数据,而不是只通过平台访问。BTW,这篇博客就是我在 VS Code 中进行编写,使用 xLog 插件发布的。

Comments

  • 1900 : 似乎没有获取tags的函数?

    • Hyoban : post 可以获取 tags https://github.com/hyoban/hyoban.cc/blob/d042d339d345809f36b0ed9f8c44a1860f8c3eee/src/app/(homepage)/post-item.tsx#L25

    • shiqi : 其实直接在设置里面也可以是嘛?不需要直接修改json文件 ![image](ipfs://QmUftAERrsKQhsB517m6rxbZoubzNPksBoikrFfWZiJgMk) 1

      • Hyoban : 这里是为了提醒不要泄漏 token,代码层面没有做这样的限制。确保不提交包含 token 的配置文件时,配置放在哪里都可以。 1

        • Hyoban : 没啥区别,修改这里的设置也会帮你更新 json 文件,在全局用户配置下或者当前工作区下。 1

          • shiqi : get! 谢谢啦。不过好像得*同时*进行用户和工作区设置。(这是为什么呢?如果有多个xlog账户岂不是冲突?)

        • niracler : 太强了,看来可以套壳弄个 xLog CLI,例如 `xlog publish` 就将仓库中的文章同步过来。 我现在是写了个 shell 脚本来实现自动创建更新博客的,不过我是手动上传图片到图床。

          • Hyoban : 是的,可以搞个 cli,然后就可以实现很多玩法了,比如提到的 git commit hook 1

            • niracler : 哈哈,思路是差不多,我之前是考虑 action

          • Nexmoe : 之前一直想开发一个 vscode to xlog 的插件,现在躺平了,可以直接用了 2

            • Hyoban : 欢迎来用,随意提 bug 或者 feature 2

            • rogepi : 支持亮神

              • otto : 是的,众所周知 xlog.app 并不是 xlog 本体,独立自托管的才是。 2

                Comment send here will be anonymous, you can login your account in xLog and comment there.

                Theme

                Accent color

                Gray color

                Appearance

                Radius

                Scaling

                Panel background