- このBoilerplateは、企業がはてなブログで技術ブログを運営する際のレビューや公開作業など、運営ワークフローを支援する目的で作成しています
- GitHub 上で、はてなブログとの記事の同期、下書きの作成・編集・公開、公開記事の編集などを行うことができます。下書きの作成時にプルリクエストが作成されるため、記事のレビューなどの業務のワークフローに組み込むことが容易になります
- 本機能はベータ版です。正常に動作しない可能性がありますが、予めご了承下さい
- 本リポジトリトップに表示されている、「Use this template ボタンクリック > Create a new repository」から、新規にリポジトリを作成する
blogsync.yamlの各種項目を記述し、変更をmainブランチにコミットしてください<BLOG DOMAIN>にはブログのブログ取得時に設定したドメインを指定してください(独自ドメインではありません)<BLOG OWNER HATENA ID>にはブログのオーナー(ブログ作成者)のはてなIDを指定してください- 上記のどちらの項目もブログの「詳細設定 > AtomPub > ルートエンドポイント」から確認できます。ルートエンドポイントは以下のように構成されています
https://blog.hatena.ne.jp/<BLOG OWNER HATENA ID>/<BLOG DOMAIN>/atom
<BLOG DOMAIN>:
username: <BLOG OWNER HATENA ID>
default:
local_root: entries- GitHub リポジトリの設定 「
Secrets and variables>actions>Repository variables」 から以下のVariableを登録する- Name:
BLOG_DOMAIN - Value: ブログのドメインを指定してください 例) staff.hatenablog.com
- Name:
- GitHub リポジトリの設定 「
Secrets and variables>actions>Repository Secrets」 から以下のSecretを登録する- Name:
OWNER_API_KEY - Secret: ブログのオーナーはてなアカウントの APIキーを指定してください
- APIキーは、ブログオーナーアカウントでログイン後、アカウント設定 よりご確認いただけます
- Name:
- GitHub リポジトリの設定 「
Actions>General」 のWorkflow permissionsの設定を以下の通り変更するRead and write permissionsを選択するAllow GitHub Actions to create and approve pull requestsにチェックを入れる
- GitHub リポジトリの設定 「
Branches」 のAdd branch protection ruleボタンから、ルールを作成するBranch name patternにmainを指定する
- GiHub リポジトリの設定 「
General」 のPull Requests項のAllow auto mergeにチェックを入れる - リポジトリにはてなブログの記事を同期させる
- はてなブログの「設定 > 編集モード」設定を「Markdownモード」に設定する
- ワークフローの機能はhatena/hatenablog-workflowsのReusable Workflowを呼び出すことで提供されています
- hatenablog-workflows の機能追加やバグ修正を反映するにはGitHub Actionsの参照を更新する必要があり、自動的な更新にRenovateやDependabotをご利用いただけます
- それぞれのセットアップ方法はドキュメントをご参照ください
- 下書きの作成時のプルリクエストをドラフトプルリクエストとして作成するかどうかのオプション
- ドラフトプルリクエストは利用できるプランに制限があります。対象外のプランを利用している場合、以下のファイルの該当行を
draft: falseに変更してください /.github/workflows/pull-draft.yaml#L15/.github/workflows/create-draft.yaml#L15
- ドラフトプルリクエストは利用できるプランに制限があります。対象外のプランを利用している場合、以下のファイルの該当行を
このツールで想定している下書き作成から記事公開までのワークフローは以下のとおりです。
- 下書きを作成する
- 下書き記事をプルリクエスト上で編集する
- 適宜レビューなどを行い、通れば次の公開手順に進む
- 下書き記事を公開する
下書きの作成方法は以下の2通りの方法があります。
- ブログメンバーが個人のアカウントで投稿する(記事の署名は個人のアカウントになります)
- ブログオーナーのアカウントで投稿する(記事の署名はブログオーナーアカウントになります)
それぞれ、下書き作成の手順が異なります。ブログの運営方針や記事の内容に沿った方法を選択してください。
- 投稿したいブログの編集画面を開く
- 下書き記事の記事タイトルを
{{username}}-{{日付}}等、ユニークな記事タイトルに設定し、クリップボードにコピーしておく - 下書きを投稿する
- Actions から
pull draft from hatenablogを選択し、Draft Entry Titleに先程コピーしたタイトルを設定、Branch: mainに対して実行する - 投稿した下書きを含むプルリクエストが作成される
- Actions から
create draftを選択し、Titleに記事タイトルを設定、Branch: mainに対して実行する - 作成した下書きを含むプルリクエストが作成される
- 手順「下書きの作成」で作成したプルリクエスト上で記事を編集してください
- はてなブログでプレビューできるようにするため、下書き記事に限りプッシュされた時点ではてなブログに同期されます
- 記事の編集画面の URL は、プルリクエストに記載されています。編集画面に遷移した後、下書きプレビューの URL を発行し、プルリクエストの概要に記載しておくとプレビューが容易になります
- 下書き記事の
Draft: true行を削除し、プルリクエストを main ブランチにマージすると記事がはてなブログで公開されます - 記事を公開すると、下書き記事は 下書き記事用ディレクトリ
draft_entriesから 公開記事用entriesディレクトリに移管されます
- 修正ブランチを作成し、main ブランチにマージすると修正がはてなブログに反映されます
- はてなブログでは記事の予約投稿が利用可能ですが、このBoilerplateから記事の予約投稿を行うことはできません。記事を予約投稿するには、はてなブログの記事の編集画面から設定を行ってください。
- [日時を指定して予約投稿する(編集オプション) - はてなブログ ヘルプ https://help.hatenablog.com/entry/editor/publish/schedule]
- ※予約投稿の設定を行ったあと、記事が投稿されるまでにこのワークフローを経由して記事の変更を行うと、予約投稿の設定が解除されてしまいますのでご注意ください
- リポジトリで管理していた記事を予約投稿する場合、以下のいずれかの手順で予約投稿による変更を同期して頂く必要があります。
- プルリクエストをデフォルトブランチにマージする
- この際、
draft:trueを削除してはいけません
- はてなブログ側で予約投稿を行う
- 記事が公開されたら
pull form hatenablogアクションを実行する /draft_entriesから予約投稿記事を削除する
- プルリクエストをクローズする
- はてなブログ側で予約投稿を行う
- 記事が公開されたら
pull from hatenablogアクションを実行する
create draftアクションまたはpull draft from hatenablogアクションによってプルリクエストを作成する際、リポジトリに.github/PULL_REQUEST_TEMPLATE.mdまたは.github/PULL_REQUEST_TEMPLATE/draft.mdという名前のテンプレートファイルが存在すれば、そのテンプレートを利用してプルリクエストが作成されます。- プルリクエストテンプレートでは以下のプレースホルダが利用可能です。これらのプレースホルダはプルリクエストの作成時には記事に固有の値に置き換えられます
| プレースホルダ | 値 |
|---|---|
${EDIT_URL} |
下書き記事の編集画面のURL |
${PREVIEW_URL} |
下書き記事のプレビューURL(まだプレビューURLがない場合は なし) |
${TITLE} |
下書き記事の記事タイトル |
${ENTRY_ID} |
下書き記事のID |
${OWNER_NAME} |
ブログのオーナーのアカウント名 |
- workflowの変更は hatena/hatenablog-workflows を更新することによって提供されますので、GitHub Actionsの参照を更新していただくことで、機能の更新を利用できます。
- ただし、新しくworkflowが追加されたりした場合は、Boilerplateを元に作成されたリポジトリに新しいファイルを追加したり既存のファイルを更新する必要があります
- 新しいファイルを取得するには
scripts/download_boilerplate_workflows.shを実行してください
bash scripts/download_boilerplate_workflows.sh- 手元のリポジトリに上記のファイルがない場合があります
- お手数ですが、その場合はこちらのファイルを自身のリポジトリに追加してください
記事のURLは、特に指定しない場合投稿日時から自動的に決定されますが、カスタムURL機能を利用すると任意のURLを指定することができます。
GitHubから記事を編集する場合にもカスタムURLを指定することが可能です。指定する場合、記事の設定領域に CustomPath フィールドを追加します。
設定例は以下の通りです。
---
Title: カスタムURLの設定例
EditURL: https://blog.hatena.ne.jp/hatenablog/example.hatenablog.com/atom/entry/0123456789
PreviewURL: https://example.hatenablog.com/draft/entry/xxxxxxx
Draft: true
CustomPath: custom/url
---
この記事を公開すると https://example.hatenablog.com/entry/custom/url として公開されます。
はてなブログのWebの編集画面から記事を更新するなど、はてなブログ側のデータとリポジトリのデータに差異が発生してしまう場合があります。
この場合、 Actions の pull from hatenablog を選択、Branch: mainに対して実行してください。
実行すると、リポジトリの更新日時以降に更新された公開記事のデータを更新するプルリクエストが作成されます。
これをマージすることで、最新のデータに更新することができます。
- 各 workflow では下記で提供されている Reusable workflows を利用しています

