share-worker
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