AstroのStarlightテンプレートにブログを追加する
Starlightはドキュメントサイト用のテンプレートですが、プラグインを追加することでブログを導入することもできます。
この記事では、AstroのStarlightテンプレートにブログ機能を追加する方法を紹介します。
Starlightプロジェクトの作成
Starlightでプロジェクトを作成していない方は、下記の記事を参考に作成してください。
ブログを導入する
ブログを導入するには、以下の手順に従ってください。
-
以下のコマンドをプロジェクトのルートで実行して、ブログを追加します。
Terminal window pnpm add starlight-blogTerminal window npm i starlight-blogTerminal window yarn add starlight-blog
-
プラグインを追加するために、設定ファイル
astro.config.mjs
に以下のコードを追加します。astro.config.mjs import starlight from '@astrojs/starlight'import { defineConfig } from 'astro/config'import starlightBlog from 'starlight-blog'export default defineConfig({integrations: [starlight({plugins: [starlightBlog()],title: 'My Docs',}),],}) -
右上にBlogのリンクが追加されているのでクリックしてブログを確認します。
-
ブログページが表示されます。
ブログ記事を追加する
ブログページができたので、実際にブログ記事を追加してみましょう。
-
まず、ブログ記事を追加するためのスキーマを作成します。
src/content.config.ts
に以下のコードを追加します。src/content.config.ts import { defineCollection } from 'astro:content';import { docsLoader } from '@astrojs/starlight/loaders';import { docsSchema } from '@astrojs/starlight/schema';import { blogSchema } from 'starlight-blog/schema';export const collections = {docs: defineCollection({loader: docsLoader(),schema: docsSchema({extend: (context) => blogSchema(context)})}),}; -
ブログ記事を追加するための、
src/content/docs/blog/
ディレクトリを作成します。bash/zsh mkdir -p src/content/docs/blogPowerShell New-Item -Path src/content/docs/blog -ItemType Directory -
ブログ記事を追加するには、
src/content/docs/blog/
ディレクトリにmd
またはmdx
ファイルを作成します。md touch src/content/docs/blog/test.mdxmdx NewItem src/content/docs/blog/test.mdx -
以下のコードを
src/content/docs/blog/test.mdx
に追加します。src/content/docs/blog/test.mdx ---title: Testdate: 2025-03-10---## TestTesttitleとdateは必須です。
-
コマンドを実行して、ブログを確認します。
Terminal window pnpm devTerminal window npm run devTerminal window yarn dev -
localhost:4321/blog/
を表示し、ブログ記事が表示されていることを確認します。
タグを追加する
ブログ記事にタグを追加することができます。
markdownファイルにtags
を追加することで、タグを追加できます。
---title: testdate: 2025-03-10tags: [test, astro]---
## test
Test
これで、test
とastro
のタグが追加されます。
日本語対応する
BlogプラグインのデフォルトUIに日本語が未対応なので、日本語対応を行います。
-
src/content.config.ts
に以下のコードを追加します。src/content.config.ts import { defineCollection } from 'astro:content';import { docsLoader, i18nLoader } from '@astrojs/starlight/loaders';import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';import { blogSchema } from 'starlight-blog/schema';export const collections = {docs: defineCollection({loader: docsLoader(),schema: docsSchema({extend: (context) => blogSchema(context)})}),i18n: defineCollection({loader: i18nLoader(),schema: i18nSchema()}),}; -
src/content/i18n/
ディレクトリを作成します。bash/zsh mkdir -p src/content/i18nPowerShell New-Item -Path src/content/i18n -ItemType Directory -
src/content/i18n/
ディレクトリにja.json
ファイルを作成します。ja.json touch src/content/i18n/ja.jsonja.json NewItem src/content/i18n/ja.json -
以下のコードを
src/content/i18n/ja.json
に追加します。src/content/i18n/ja.json {"starlightBlog.authors.count_one": "{{author}}の投稿: {{count}} 件","starlightBlog.authors.count_other": "{{author}}の投稿: {{count}} 件","starlightBlog.pagination.prev": "新しい投稿","starlightBlog.pagination.next": "古い投稿","starlightBlog.post.lastUpdate": " - 最終更新日: {{date}}","starlightBlog.post.draft": "下書き","starlightBlog.post.featured": "おすすめ","starlightBlog.post.tags": "タグ:","starlightBlog.sidebar.all": "すべての投稿","starlightBlog.sidebar.featured": "おすすめの投稿","starlightBlog.sidebar.recent": "最新の投稿","starlightBlog.sidebar.tags": "タグ","starlightBlog.sidebar.authors": "著者","starlightBlog.sidebar.rss": "RSS","starlightBlog.tags.count_one": "“{{tag}}” の投稿: {{count}} 件","starlightBlog.tags.count_other": "{{tag}}” の投稿: {{count}} 件"} -
コマンドを実行して、ブログを確認します。
Terminal window pnpm devTerminal window npm run devTerminal window yarn dev -
localhost:4321/blog/
を表示し、UIが日本語になっていることを確認します。
これで最低限日本語対応したブログを運営できるかと思います。
細かいカスタマイズは、Starlightのドキュメントを参考にしてください。