用 Obsidian 寫部落格:Send to Ghost 完整設定教學

用 Obsidian 寫部落格:Send to Ghost 完整設定教學
Photo by Haluk Demirkaya / Unsplash
用 Obsidian 寫完文章,一鍵推送到 Ghost 部落格。從 Ghost 設定、Obsidian 插件安裝到實際發表,完整走一遍。

為什麼用 Obsidian 寫,發到 Ghost

這個念頭來自 Happy Lee 的一篇文章「AI小聚三部曲之二:輸出的技術」。裡面提到寫作是最好的學習輸出方式,而降低寫作到發表之間的摩擦力是持續輸出的關鍵。

Ghost 的編輯器不差,但如果平常就在 Obsidian 裡寫筆記和文章,每次要發表還得複製貼上到 Ghost 後台就有點煩。Send to Ghost 這個插件解決的就是這件事:在 Obsidian 寫完,一個指令直接推上去,整個設定大概 10 分鐘就能搞定。

你需要什麼

  • 一個 Ghost 部落格(自架或官方託管都可以)
  • Obsidian 桌面版
  • Ghost 的管理員權限(需要建立 API Integration)

第一步:在 Ghost 建立 API Integration

  1. 登入 Ghost 後台(通常是 你的網址/ghost/
  2. 左下角 Settings → 找到 Integrations
  3. Add custom integration
  4. 名稱隨意填,例如 Obsidian
  5. 建立後會看到三個欄位:
欄位 用途
Content API Key 唯讀權限,只能讀取已發表內容(這裡用不到)
Admin API Key 讀寫權限,可以建立和編輯文章(這個要用
API URL 你的 Ghost 網址

Admin API KeyAPI URL 記下來。

Content API Key vs Admin API Key

簡單說:Content 是唯讀、Admin 是讀寫。插件需要「寫入」文章到 Ghost,所以用 Admin API Key。Content API Key 是給前端展示用的(例如做一個自訂的部落格首頁去拉文章資料),這裡不需要。

第二步:安裝 Obsidian 插件

  1. Obsidian → Settings → Community plugins
  2. 如果還沒開啟,先關閉「Restricted mode」
  3. Browse → 搜尋 Send to Ghost
  4. 安裝 → 啟用

第三步:設定插件

  1. Settings → Community plugins → 找到 Send to Ghost → 點齒輪圖示
  2. 填入:
    • Ghost URL:你的 Ghost 網址(例如 https://yourblog.com
    • Admin API Key:剛才記下來的那串

存檔,設定就完成了。

第四步:發表第一篇文章

在 Obsidian 開啟你要發表的文章,然後:

  1. Ctrl+P(Mac 是 Cmd+P)打開命令面板
  2. 輸入 Ghost
  3. 選擇 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 injectionSite 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 後台手動上傳圖片

小結

整個流程就三步:

  1. Ghost 後台建 Integration,拿 Admin API Key
  2. Obsidian 裝 Send to Ghost 插件,填入 Key
  3. 寫完文章,Ctrl+P → Send to Ghost

推送後到 Ghost 後台調整 slug 和做最後檢查就能發表了。寫作和發表的摩擦力降到很低,值得花 10 分鐘設定一下。