Share

外观
风格

share-worker

2026年2月7日 · 工具

share-worker - 文章发布服务

把 Obsidian 笔记快速发布为网页,支持分类和 Wikilinks。

特性

  • Markdown 渲染:支持代码高亮、图片、链接
  • Wikilinks 处理<span class="private-link" title="未发布的笔记">其他笔记</span> 自动转链接
  • 图片自动上传!<span class="private-link" title="未发布的笔记">image.png</span> 自动上传到图床
  • 分类管理/c/技术 查看分类下所有文章
  • Frontmatter 集成share_url 自动回填

API

发布文章

curl -X POST <REDACTED_TOKEN> \
  -H "<REDACTED_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "hello-world",
    "title": "Hello World",
    "category": "技术",
    "content": "# Hello\n\nWorld!"
  }'

返回:

{
  "success": true,
  "url": "https://<REDACTED_TOKEN>/hello-world",
  "slug": "hello-world",
  "publishedAt": "2024-01-15T10:00:00Z"
}

获取文章列表

curl <REDACTED_TOKEN>
curl <REDACTED_TOKEN>?category=技术

删除文章

curl -X DELETE <REDACTED_TOKEN>/hello-world \
  -H "<REDACTED_TOKEN>"

页面

URL 说明
/ 首页,最新文章列表
/{slug} 单篇文章
/c/{category} 分类页

CLI 工具

# 发布单篇
bun tools/share.ts article.md

# 发布所有 share: true 的
bun tools/share.ts --all

# 取消发布
bun tools/share.ts --unpublish hello-world

# 列出已发布
bun tools/share.ts --list

Obsidian 集成

在笔记 frontmatter 中添加:

---
title: 文章标题
slug: article-slug
category: 技术
share: true
---

发布后自动回填:

---
title: 文章标题
slug: article-slug
category: 技术
share: true
share_url: https://<REDACTED_TOKEN>/article-slug
---

部署

1. 创建 R2 Bucket

<REDACTED_TOKEN>

2. 设置 API Key

cd workers/share
<REDACTED_TOKEN>

3. 部署

<REDACTED_TOKEN>

4. 配置自定义域名

添加 <REDACTED_TOKEN> 到 Worker。

CLI 配置

创建 ~/.config/share/config.json

{
  "apiUrl": "https://<REDACTED_TOKEN>",
  "imgUrl": "https://i.chen.rs",
  "apiKey": "sk-share-xxx",
  "vaultPath": "<REDACTED_TOKEN>"
}

项目结构

<REDACTED_TOKEN>
├── src/
│   ├── index.ts      # 主入口 + API
│   ├── markdown.ts   # Markdown 处理
│   └── render.ts     # HTML 渲染
├── wrangler.toml
└── package.json

R2 存储结构

<REDACTED_TOKEN>
├── articles/{slug}.json   # 文章内容
└── index/
    ├── all.json           # 全站索引
    └── c-{category}.json  # 分类索引

依赖

  • img-worker:图片上传到 i.chen.rs