用 Obsidian 寫部落格:Send to Ghost 完整設定教學
用 Obsidian 寫完文章,一鍵推送到 Ghost 部落格。從 Ghost 設定、Obsidian 插件安裝到實際發表,完整走一遍。
為什麼用 Obsidian 寫,發到 Ghost
這個念頭來自 Happy Lee 的一篇文章「AI小聚三部曲之二:輸出的技術」。裡面提到寫作是最好的學習輸出方式,而降低寫作到發表之間的摩擦力是持續輸出的關鍵。
Ghost 的編輯器不差,但如果平常就在 Obsidian 裡寫筆記和文章,每次要發表還得複製貼上到 Ghost 後台就有點煩。Send to Ghost 這個插件解決的就是這件事:在 Obsidian 寫完,一個指令直接推上去,整個設定大概 10 分鐘就能搞定。
你需要什麼
第一步:在 Ghost 建立 API Integration
- 登入 Ghost 後台(通常是
你的網址/ghost/) - 左下角 Settings → 找到 Integrations
- 點 Add custom integration
- 名稱隨意填,例如
Obsidian - 建立後會看到三個欄位:
| 欄位 | 用途 |
|---|---|
| Content API Key | 唯讀權限,只能讀取已發表內容(這裡用不到) |
| Admin API Key | 讀寫權限,可以建立和編輯文章(這個要用) |
| API URL | 你的 Ghost 網址 |
把 Admin API Key 和 API URL 記下來。
Content API Key vs Admin API Key
簡單說:Content 是唯讀、Admin 是讀寫。插件需要「寫入」文章到 Ghost,所以用 Admin API Key。Content API Key 是給前端展示用的(例如做一個自訂的部落格首頁去拉文章資料),這裡不需要。
第二步:安裝 Obsidian 插件
- Obsidian → Settings → Community plugins
- 如果還沒開啟,先關閉「Restricted mode」
- 點 Browse → 搜尋 Send to Ghost
- 安裝 → 啟用
第三步:設定插件
- Settings → Community plugins → 找到 Send to Ghost → 點齒輪圖示
- 填入:
- Ghost URL:你的 Ghost 網址(例如
https://yourblog.com) - Admin API Key:剛才記下來的那串
- Ghost URL:你的 Ghost 網址(例如
存檔,設定就完成了。
第四步:發表第一篇文章
在 Obsidian 開啟你要發表的文章,然後:
Ctrl+P(Mac 是Cmd+P)打開命令面板- 輸入
Ghost - 選擇 Send to Ghost: Publish
文章會以 draft(草稿)狀態推送到 Ghost。到 Ghost 後台 → Posts → Drafts 就能看到。
在那邊可以做最後確認:檢查排版、補特色圖片、調整 URL,確認沒問題再正式發表。
用 YAML Frontmatter 控制文章設定
插件會讀取文章開頭的 YAML frontmatter 來設定 Ghost 的文章屬性:
---
title: "文章標題"
tags:
- "coding"
- "Obsidian"
featured: false
published: false
excerpt: "文章摘要,會顯示在社群分享預覽"
feature_image: "https://example.com/image.jpg"
---
各欄位說明:
| 欄位 | 說明 | 預設值 |
|---|---|---|
title |
Ghost 上顯示的文章標題 | 檔名 |
tags |
標籤(陣列格式) | 無 |
featured |
是否為精選文章 | false |
published |
true = 直接發表,false = 草稿 |
false |
excerpt |
摘要,用於 SEO 和社群預覽 | 空 |
feature_image |
特色圖片 URL | 空 |
如果不寫 YAML,插件會用檔名當標題,其他都用預設值,一樣可以推送。
幾個實際使用後會遇到的事
URL (Slug) 需要手動調整
插件不支援設定文章的 URL slug。Ghost 會根據標題自動產生。如果標題是中文,生成的 slug 會是拼音轉寫,不太好讀。
推送後到 Ghost 後台 → 打開文章 → 右側齒輪 → Post URL → 手動改成你想要的英文 slug。
表格可能需要加 CSS
Obsidian 的 Markdown 表格推送到 Ghost 後,技術上會正確轉成 HTML 表格,但很多 Ghost 主題沒有內建表格樣式,看起來會沒有框線。
解法是在 Ghost 後台加一段 CSS。Settings → Code injection → Site Header:
<style>
/* 使用 .gh-content 提高優先級,覆蓋主題預設樣式 */
.gh-content table {
width: 100% !important;
border-collapse: collapse !important;
margin: 1.5em 0 !important;
font-size: 0.95em !important;
}
.gh-content table th,
.gh-content table td {
border: 1px solid #ddd !important;
padding: 8px 12px !important;
text-align: left !important;
}
.gh-content table th {
background-color: #f4f4f4 !important;
font-weight: 700 !important;
font-size: 1.05em !important;
}
.gh-content table tr:nth-child(even) {
background-color: #f9f9f9 !important;
}
.gh-content table tr:hover {
background-color: #f1f1f1 !important;
}
</style>
加一次就好,之後所有文章的表格都會套用。
重複推送會建立新文章
每次執行 Send to Ghost 都會在 Ghost 建立一篇新文章,不會更新既有的。如果修改了內容想重新推送,記得到 Ghost 後台把舊的那篇刪掉。
圖片處理
插件會把文章中的圖片連結原樣帶過去。如果圖片是本地檔案,Ghost 收不到。建議:
- 用外部圖床(Imgur、Cloudinary 等),在 Markdown 中用完整 URL
- 或是推送後到 Ghost 後台手動上傳圖片
小結
整個流程就三步:
- Ghost 後台建 Integration,拿 Admin API Key
- Obsidian 裝 Send to Ghost 插件,填入 Key
- 寫完文章,
Ctrl+P→ Send to Ghost
推送後到 Ghost 後台調整 slug 和做最後檢查就能發表了。寫作和發表的摩擦力降到很低,值得花 10 分鐘設定一下。