本文へスキップ

GitHub連携

Nekote BlogとGitHubを接続し、記事の公開・更新をするまでの使い方を説明します。

Nekote BlogのGitHub連携では、GitHubリポジトリに置いたマークダウン(.md)ファイルで記事を管理します。対象のブランチへpushするだけで、記事を公開・更新できます。

Nekote BlogとGitHubとの初回接続方法

アカウント登録後、ブログを作成すると記事ソース設定画面がでてきます。

記事ソース選択

ここで、GitHubを選択すると次のような画面に移ります。

github未接続状態の画面

「GitHubと接続」ボタンが出てくるので、クリックしてください。
GitHub側の、Nekote Blog GitHub Appのインストール画面へと遷移します。

※ GitHubに未ログインの場合は、先にGitHubのログイン画面が挟まります。

※ 記事用のリポジトリがまだ無い場合は、先にGitHubでリポジトリを作成しておいてください。プライベートリポジトリでも利用できます。

Nekote Blog用のテンプレートリポジトリ

Nekote BlogをGitHub接続して使い始めるための、テンプレートリポジトリを以下で公開しています。

https://github.com/nekote-labs/nekote-blog-template

こちらのリポジトリを参考にご自身でリポジトリを用意するか、テンプレートをそのまま複製またはフォークしてからご利用ください。

GitHub側でのGitHub Appのインストール操作

複数のアカウント(Organizationなど)を持っている場合、まずはインストール先のアカウントを選択します。

github接続アカウント選択画面

続いて、アクセスを許可するリポジトリを選択します。
「Only select repositories」を選び、記事を置くリポジトリだけを許可するのがお勧めです。

github接続リポジトリ選択画面

github接続リポジトリのセレクト画面

github接続リポジトリの選択完了の様子

選択できたら、「Install & Authorize」をクリックしてください。

接続は読み取り専用(read-only)です。GitHub Appが要求する権限は`Contents: Read-only`(と、必須のため自動で付与される`Metadata: Read-only`)だけで、Nekote BlogがGitHub側のファイルを作成・変更・削除することはありません。

インストールが完了すると、Nekote Blogのダッシュボードへ自動で戻ってきます。

github接続完了後のダッシュボード

リポジトリと記事の場所の選択

戻ってきた画面で、リポジトリを選択します。(Github App接続時に許可したリポジトリが選択できます。)

Blogに接続するリポジトリを選択

続いて、「記事の場所を設定」をクリックしたら、次の画面で同期対象とする[『ブランチ」と「コンテンツディレクトリ」を設定できます。

githubとのソース接続設定画面

githubとのソース接続設定の様子

  • ブランチ … 同期対象のブランチです。初期値はリポジトリのデフォルトブランチで、変更できます。指定したブランチへのpushだけが同期の対象になります。
  • コンテンツディレクトリ … 記事を置く場所の基準を、リポジトリルートからの相対パス(例: content)で指定します。空欄にするとリポジトリルートが基準になります。

コンテンツディレクトリの直下にあるposts/内の.mdファイルが記事、pages/内の.mdファイルが固定ページとして認識されます。

記事の確認と接続の確定

ブランチとコンテンツディレクトリを選択できたら、「対象記事を確認」をクリックします。 すると、指定した条件でリポジトリの中身がスキャンされ、接続すると公開される現在の記事件数とその内訳(公開・下書き・エラー)が表示されます。

githubとのソース接続スキャン

※ frontmatterでdraft: trueを指定していない.mdはすべて「公開」として扱われます。記事の入った既存のリポジトリを接続すると、接続した時点で多くの記事が一度に公開されることがあるため、一覧をよく確認してから進んでください。

※ frontmatterで`draft: true`を指定していない`.md`はすべて「公開」として扱われます。対象の`.md`が100件を超える場合、内訳の確認は先頭100件までになり、残りは「未確認」と表示されます。未確認分のスキャンは、接続確定後の初回同期で行われます。

内容を確認できたら、「接続して公開する」をクリックして接続を確定します。

接続が完了すると、初回同期が自動で開始されます。

github初回同期の様子

github初回同期の完了時の様子

同期が完了したら、サイドナビゲーションの「ブログを開く」からブログを開いて確認してみましょう。

github接続完了直後のブログの様子

GitHub Appのアンインストール

接続がうまくいかない場合、GitHub App のアンインストールをしてから再接続をお試しください。

Nekote Blogと接続したリポジトリの「Settings」→「GitHub Apps」を開き、「Nekote Blog」の「Configure」をクリックします。

github_appインスール済みリスト

設定画面が開けたら、下の方にスクロールしていくと以下のように「Danger zone」というセクションができます。

github-appのアンインストール

ここにある「Uninstall」から、Nekote Blog と接続してインストールされていた Github App をアンインストールできます。

記事と固定ページの置き場所

コンテンツディレクトリの直下にあるposts/が記事、pages/が固定ページです。

content/          ← コンテンツディレクトリに「content」を指定した場合
├── posts/        ← ここの .md が記事になる
│   ├── hello.md
│   └── 2026/tips.md
├── pages/        ← ここの .md が固定ページになる
│   └── about.md
└── README.md     ← 対象外(同期されない)
  • posts/pages/の下のフォルダも、深さに関係なくすべて対象になります。サブディレクトリは整理用で、記事のURLには影響しません
  • posts/pages/以外の場所にある.md(README.mdやドキュメント類)は同期されません。記事は必ずposts/の中に置いてください
  • 固定ページのふるまい(記事一覧に出ない・件数の上限など)は、その他の「固定ページの基本」を参照してください

frontmatterの書き方

記事ファイルの先頭に、YAML形式のfrontmatterでメタ情報を書きます。キー名は固定です。

---
title: 記事のタイトル
date: 2026-08-01
slug: my-first-post
tags: [日記, お知らせ]
category: news
thumbnail: ./images/thumb.png
---

本文
キー 必須 役割
title 記事のタイトル
draft - trueで下書き(非公開)。省略時は公開扱いです
date - 公開日。YYYY-MM-DD形式で書きます
slug - 記事のURLスラッグ
tags - 記事に付与するタグ情報。複数書けます
category - 記事に付与するカテゴリー情報。カテゴリのslugを1つ書きます
thumbnail - 記事のアイキャッチ画像。未指定なら、SNS共有時のOG画像は自動生成になります
cover - 記事ページ上部のカバー画像。表示するかどうかはデザイン設定で選べます
  • 必須なのはtitleだけです。ほかのキーは未設定でも記事を公開できます
  • dateを書かない場合は、初めて公開したときの日時が公開日になります(その後の更新でも変わりません)
  • thumbnailcoverの値は本文の画像と同じ規則です。リポジトリ内の画像への相対パス(./images/thumb.pngなど)か、httpsの外部URLを書きます
  • 上記以外のキーは無視されます(エラーにはなりません)。他のツールでfrontmatterを使っているリポジトリでもそのまま使えます
  • frontmatterの構文エラーやtitleの欠落は、その記事だけが同期エラーになります。理由は「同期履歴」で確認できます

記事の公開・更新の手順

GitHub連携での公開・更新の操作は、対象ブランチへのpushだけです。

  • posts/.mdファイルを置いてpushすると、記事として公開されます
  • 記事を編集してpushすると、変更のあった記事だけが自動で反映されます。Notion連携の「反映リクエスト」にあたる操作は不要です
  • draft: trueを付けてpushした記事は公開されません(下書き)。公開中の記事にdraft: trueを付けてpushすると、非公開に戻ります(ブログから消えます)
  • ファイルを削除、またはposts/pages/の外へ移動してpushすると、その記事は非公開になります
  • pushしたのにブログに反映されない場合は、ダッシュボードの「同期履歴」を確認してください(トラブルシューティング

ファイル名の変更と記事のURL

記事のURLに使われるslugは、frontmatterのslugか、未指定の場合はファイル名(拡張子を除く)で決まります。

  • frontmatterにslugを書いておけば、ファイル名の変更やディレクトリの移動をしてもURLは変わらず、同じ記事として引き継がれます
  • slug未指定の場合、ファイル名の変更はURLの変更になります(旧URLは404になります)。旧URLから転送したい場合は、ブログ設定の「リダイレクト」タブで記事リダイレクトを設定してください
  • slugに使える文字などの詳しいルールは、その他の「公開URLとslugの基本」を参照してください

ダッシュボードから手動で同期する

ダッシュボードの同期ボタンはGitHub連携でも使えます。エラーを解消した後の再同期や、反映がうまく動かないときの再実行に使ってください。

  • 記事一覧の行ごとの「同期」ボタン … その記事だけを再同期します
  • 記事一覧の上部にある「記事をすべて同期」ボタン … ブログの全記事を再同期します(固定ページは含みません)
  • 固定ページ一覧の上部にある「ページをすべて同期」ボタン … 全固定ページを再同期します
  • 記事ソース画面で、接続中のリポジトリが表示されている枠にある「すべて同期」ボタン … 記事と固定ページの両方を再同期します

— GitHub接続後の記事一覧画面 —

対応するMarkdown

  • GFM(テーブル・タスクリストなど)に対応しています。コードブロックはシンタックスハイライト付きで表示され、数式(KaTeX)も使えます
  • 見出しのレベルは自動で整えられます。記事タイトルがh1、本文でいちばん上の見出しがh2になるよう自動でずらすため、# 始まりで書いても## 始まりで書いても同じ表示になります
  • HTMLタグやコールアウト(:::)などの拡張記法も使えます。詳しくはその他の「Markdown記法の詳細」を参照してください
  • Markdown 1ファイルのサイズ上限は1MBです。超過すると同期エラーになります

画像・動画・PDF

リポジトリ内のファイルを相対パスで参照すると(例: ![図](./images/fig.png))、同期時にNekote側へコピーされて配信されます。対応形式は画像(PNG・JPEG・GIF・WebP・AVIF)・動画(mp4・webm・mov)・PDFです。

  • 画像(PNG・JPEG・GIF・WebP)は、同期時に自動で圧縮・リサイズされ(長辺2400px以内のWebPへ変換)、配信されるのは原則として変換後のファイルです。100KB以下の小さい画像や、変換しても小さくならない画像は元のファイルのまま配信されます。アニメーションGIFはアニメーションのまま変換されます
  • 動画はプレーヤーとして埋め込まれ、PDFはリンクとして表示されます
  • 外部URLの画像(httpsのみ)はコピーされず、そのURLのまま参照されます
  • SVGはコピーの対象外です(相対パスで参照すると同期警告になります)。外部https URLのSVGを画像として参照することはできます
  • サイズの上限は、画像1ファイル10MB・動画/PDF 1ファイル20MBです。1記事の合計(画像は変換後のサイズで計算)は現在すべてのブログで100MBまでで、有料プランの提供開始後はプラン別の上限(Free 30MB・Plus 50MB・Pro 100MB)になります
  • 上限を超えたファイルは取り込まれず、「画像を表示できませんでした」「動画を取得できませんでした」「ファイル「ラベル」を取得できませんでした」のように表示されて同期警告になります。記事のほかの部分は通常どおり反映されます
  • 1記事で参照できるファイルは100個までです。超えるとその記事は同期エラーになります
  • ブログ全体の保存容量と1日にアップロードできる容量にも上限があります。現在の使用量はブログ設定の「使用量」タブで確認できます
  • posts/pages/配下の他の.mdファイルへの相対リンクは、その記事の公開URLへ自動で書き換えられます。リンク先が見つからない場合は原文のまま残り、同期警告になります

接続後に設定を変更する

記事ソース画面から、接続中のソースの設定を変更できます。

  • ブランチ・コンテンツディレクトリを変更する場合は、保存の前にも接続時と同じスキャン確認が表示されます(公開内容が変わる操作のためです)。保存するとリポジトリの内容と公開中の記事が照合され、差分が反映されます。変更後に対象外となる記事は非公開になります
  • リポジトリを変更する場合は、設定変更ではなく「ソースの切り替え」として扱われます。同期済みの記事データは一度削除され、新しいリポジトリの内容で作り直されるため、初回同期が完了するまでは記事の一覧が空になり、記事のURLも一時的に404になります

GitHubアカウント接続の管理

GitHubアカウントの接続はアカウント単位で保持され、ダッシュボードの「GitHub連携」画面で確認・管理できます。

— GitHub連携画面 —

  • アクセスを許可するリポジトリの変更やアンインストールは、「GitHubで管理」からGitHub側の設定ページで行えます
  • 「接続を解除」しても、GitHub側のNekote Blog Appはアンインストールされません
  • GitHub Appを一時停止・アンインストールしたり、対象リポジトリをアクセス許可から外したりすると同期ができなくなり、記事ソース画面に接続エラーが表示されます。接続エラーの間も、公開済みの記事はそのまま配信され続けます。復旧の手順はトラブルシューティングの「GitHub Appをアンインストールしてしまった」を参照してください

自分の記事を世界へ。