Open10

Blog with Astro, Ghost CMS

chocolatchocolat

【Ghost】 カスタムAPI

Settings > Advanced > Integrations
[Add Custom integration] > Titleを入力 > [Save] > [Close]
Content API key (read-only), Admin API key, API URLが表示される

chocolatchocolat

【Ghost】 Make site private

Settings > General > Make site private > [Edit]
Enable password protectionをonにすると以下が適用される

  • Ghost側のフロントエンドにパスワードが設定される
  • SEO機能が無効になる
  • noindex タグが付与される

https://ghost.org/docs/jamstack/

chocolatchocolat

Ghostのセットアップ on Astro

Setting up credentials

.env
CONTENT_API_KEY=YOUR_API_KEY
src/env.d.ts
interface ImportMetaEnv {
  readonly CONTENT_API_KEY: string;
}

Installing dependencies

npm install @tryghost/content-api
npm install --save @types/tryghost__content-api
chocolatchocolat

Fetching

APIをinitializeする

src/lib/ghost.ts
import GhostContentAPI from "@tryghost/content-api";

// Create API instance with site credentials
export const ghostClient = new GhostContentAPI({
  url: "http://YOURDOMAIN.ghost.io",
  key: import.meta.env.CONTENT_API_KEY,
  version: "v5.0",
});

Displaying a list of posts

src/pages/index.astro
---
...
import { ghostClient } from '../lib/ghost';
const posts = await ghostClient.posts
    .browse({
        limit: 'all',
    })
    .catch((err) => {
        console.error(err);
    });
---

<Layout title="Welcome to Astro.">
  <main>
    {
      posts.map(
        (post) =>
          post.visibility && (
            <a href={`/post/${post.slug}`} key={post.id}>
              <h1>{post.title}</h1>
              <p>{post.published_at}</p>
            </a>
          )
      )
    }
  </main>
</Layout>

chocolatchocolat

Google Analyticsが読み込めない
@astrojs/partytown がエラーになる