Quaily 最初是打算开源,但一年多来都没有找到开源的理由。如果开源的话,对于代码、架构、文档的质量的要求会很高,社区参与低的话,我是没有精力做这些事情了。

不过也陆续完成了不少开源仓库。这些仓库不是「为了开源而开源」,而是 Quaily 在实际开发里遇到具体问题后诞生的工具。

下面梳理它们的来历,并补充更技术向的细节。

1 · quail-ui  — Vue 3 组件库

虽然我的习惯是不出设计直接代码,但是项目规模稍大以后,还是希望有一套统一的视觉。

当时流行 Tailwind,但我不喜欢,冗余,废话太多,于是需要一套更轻巧、样式统一的 UI 组件,那就自己写吧,反正也不难。

  • 技术 :Vue 3 + <script setup>、SCSS 变量、按需 import+Rollup Tree‑Shaking。
  • 组件 (摘自 src):QButton / QInput / QTooltip / QDialog / QIcon* / QLoading 等 60+ 组件,配套 icon 集可直 import。查看 Demo
  • 特点 :极小外部依赖;支持暗色模式 

用法:

import { createApp } from 'vue'
import { QuailUI } from 'quail-ui'
import 'quail-ui/dist/style.css'
createApp(App).use(QuailUI)

2 · quail-js  — TS/JS SDK

Web 前端与 Obsidian 插件都需要和 Quaily API 交互,那就整个包吧。

src/ 以 ESM 方式导出 QuailyClient,内置 token 注入、重试与错误映射;Rollup 打包生成 dist/。主打一个一把梭,又不是不能用。

调用:

import { Client } from 'quail-js'
const client = new Client({ apibase: 'https://api.quaily.com', access_token: '...' })
const resp = await client.request(url, 'GET', null)

3 · obsidian-quail  — Obsidian 插件

Quaily 早期无 Web‑CMS,一切创作在 Obsidian 中完成,需要一键发布。于是需要个 Obsidian 插件。

  • 主要命令 :Quaily: Publish / Unpublish / Preview / Sync
  • 功能点 :多语言、多渠道投递;AI 自动生成摘要与标签;移动端预览;发布后可直接把邮件发送给订阅者
  • 安装 :在 Obsidian 社区插件商店搜索 “Quail” 即可。

4 · goldmark‑enclave  — Markdown 语法增强(Go)

goldmark 扩展性极好,适合 Quaily 用来扩展 Markdown 语法。

提供的扩展 :

  • 媒体 Embed:YouTube、Bilibili、TradingView、Spotify、Tweet、Quaily Post 等,全部复用 ![](url) 语法;
  • 行内高亮 ==text==<mark>
  • Pandoc‑style fenced div、GitHub‑style callout;
  • 图片尺寸、对齐、主题参数;
  • 自动把链接 title 写进 <a title="…">

调用:

md := goldmark.New(goldmark.WithExtensions(enclave.New()))

详细的方法请查看项目 README.md

5 · quail-cli — 终端与自动化入口(Go)

需要在 CI/CD、脚本或本地终端里操作 Quaily,并探索将 Quaily API 暴露给 LLM 工具链(MCP)。

  • 核心技术:Go + Cobra CLI;OAuth 登录;client/ 复用 quail-js 定义的 API schema;可选 MCP Server(SSE / stdio)。
  • 实验功能:quail-cli mcp --sse 启动本地 AI 工具协议服务,支持搜索、获取、发布等工具调用
  • 主要命令:login|publish|unpublish|deliver|delete。

这里有两篇介绍:

示例:

# 登录(浏览器完成 OAuth)
quail-cli login

# 从 markdown front‑matter 创建或更新文章
quail-cli post upsert article.md -l my-channel

6 · bizdocgen  — PDF 发票/贷记单生成器(Go)

每月要生成大量符合日本税务格式的发票,手工排版麻烦不说而且易出错。那就写个程序吧。

特性 :

  • 内置 NotoSans CJK 字体示例,支持日中英混排;
  • 模板驱动,可扩展其他单据。

使用方式:

读取 YAML/JSON 参数 + 可选字体配置 → GenerateInvoice() 回传 []byte

bd, _ := builder.NewBuilder(cfg, "./params.yaml")
pdf, _ := bd.GenerateInvoice()
os.WriteFile("invoice.pdf", pdf, 0666)

7 · translate-cli  — AI 批量翻译 JSON Locale 工具

Quaily 的 i18n 文案存放在 JSON,手动翻译耗时;希望借助多家 LLM 快速产出可初审的翻译。

  • 功能清单 :
    • OpenAI / Azure / Bedrock 等多提供商切换(还没完成);
    • 支持 Glossary 和背景上下文文件;
    • --batch 控制窗口大小;
    • 中文自动去除 “您” 系列敬辞,日语句末润色;
    • 同步写回多语言文件。

命令示例:

translate-cli translate -s en-US.json -d ./langs -g glossary.json \
		-b background.txt --batch=20

这些工具都源于“先把问题解决掉,然后顺手贡献给社区”的习惯。如果它们也正好能解决你的痛点,欢迎 Star ⭐、提 Issue、开 PR