Growth Calendar から Ghost に投稿する
書き上がった記事を、コピー&ペーストなしで Ghost に送れます。1 記事ずつ手で送ることも、生成が 終わったら自動で下書きにすることも、そのまま公開まで任せることもできます。
設定はワークスペースに 1 つで、 Growth Calendar の右上「 CMS 」から開きます。
準備するもの
Ghost 側で Admin API キー を発行します。カスタムインテグレーションから取得します。
- Ghost の管理画面で Settings > Integrations を開きます。
- Add custom integration を押し、名前に
Timotheなどと入れます。 - 表示された Admin API key をコピーします。
Admin API キーは 640b...4f2a:8c1d...9e07 のようにコロンを含む文字列です。すぐ上に表示される Content API key はよく似ていますが読み取り専用の別のキーで、こちらでは接続できません。
接続する
- Growth Calendar の右上「 CMS 」を開きます。
- Ghost を選び、サイト URL (
https://example.com)と Admin API キーを入力します。 - 接続する を押します。
サイト URL は Ghost の管理画面のアドレスを、末尾の /ghost を付けずに入力してください。接続時に サイトへ実際に問い合わせて、投稿できる状態かを確認します。ここでエラーが出た場合は下の 「うまくいかないとき」を確認してください。
送り方を選ぶ
接続後、同じ画面で 3 つから選べます。
初期値は「手動」です。まずは手動か下書きから始めて、書き上がりの品質に納得してから自動公開に 切り替えるのが安全です。
1 記事だけ送る
記事のプレビュー画面右上の CMS で投稿する から送れます。ボタン横で「下書きとして」と 「すぐ公開」を切り替えられます。
一度送った記事をもう一度送ると、新しい記事が増えるのではなく、 Ghost 側の同じ記事が更新されます。 記事を直してから送り直しても重複しません。
記事内のリンクについて
Growth Calendar は同じクラスターの記事どうしを内部リンクでつなぎます。 Ghost に送るとき、すでに 送信済みの記事へのリンクは実際の URL に置き換わります。
これは送信先がまだ下書きの場合でも機能します。 Ghost は下書きに一時的なプレビュー用アドレスを 割り当てるため、 Growth Calendar は公開後のアドレスを組み立てて、そちらへリンクします。
まだ送っていない記事へのリンクは、リンクを外してテキストだけ残します。存在しないアドレスへの リンクを残すと読者がエラーページに飛んでしまうためです。クラスター全体を順番に送っていけば、 後から送った記事は前の記事へ正しくリンクします。
パーマリンクを独自に変更している場合(routes.yaml が /{slug}/ 以外の場合)、相手がまだ 下書きのときに張ったリンクが実際のアドレスとずれることがあります。その記事を公開したあと、 次に送信し直せば正しいアドレスになります。
画像について
記事内の画像は Timothe 側で配信されるアドレスがそのまま使われます。 Ghost のメディアライブラリ には保存されません。
Ghost は独自のエディター形式で記事を保存するため、送信時に変換されます。見出し・表・箇条書き・ 画像・引用はそのまま残ります。表は HTML カードとして届くので、 Ghost のエディター上では編集可能な 表ではなく 1 つのブロックとして表示されます。
うまくいかないとき
「 That does not look like a Ghost Admin API key 」と出る
コロンを含む Admin API キーを入力してください。同じ画面のすぐ隣に表示される Content API キーは 別のキーで、投稿はできません。
「 Ghost did not accept that Admin API key 」と出る
形式は合っていますが、 Ghost が署名を受け付けませんでした。多いのはキーが途中までしかコピー できていないケースです。Settings > Integrations から、コロンより後ろも含めてコピーし直して ください。
「 That site does not know this Admin API key 」と出る
形式は正しいものの、このサイトが知らないキーです。別の Ghost サイトのキーであるか、発行元の インテグレーションが削除されています。カスタムインテグレーションを作り直してください。
「 That address did not return the Ghost Admin API 」と出る
サイト URL が違うか、 Ghost 以外を指しています。 Ghost の管理画面のアドレスを、末尾の /ghost を 付けずに入力してください。
「 Ghost did not treat the request as authenticated 」と出る
キーに投稿の権限がないか、サイトの手前にあるプロキシや CDN が Authorization ヘッダーを落として います。 Ghost の前段のリバースプロキシ設定を確認してください。
「 Ghost rejected the request as expired 」と出る
Ghost へのリクエストは数分だけ有効なトークンで認証しています。このエラーはキーの問題ではなく、 サイト側のサーバー時刻が数分ずれていることを示します。サーバーの時刻設定を確認してください。
ほかの CMS
現在は WordPress ・ Ghost ・ Shopify に対応しています。ほかの CMS も同じ画面から接続できるよう順次 追加していきます。
