ZennとQiitaへの記事管理や同時公開に対応した多端対応ブログリポジトリです。
記事の自動更新、シリーズリンク生成、公開プロセスの効率化を実現します。
Sub Repos:
Zenn Repo: https://github.com/SolitudeRA/zenn-repo
Qiita Repo: https://github.com/SolitudeRA/qiita-repo
-
複数プラットフォーム対応
ZennとQiitaへの同時公開をサポート。 -
シリーズリンクの自動生成
articles/share
articles/zenn
articles/qiita
ディレクトリの内容に基づき、シリーズリンクを自動的に生成し、記事に挿入します。 -
効率的な記事管理
GitHub Actionsを活用して、記事の自動更新とコミットを実現。 -
簡単な設定
必要な設定を整えるだけで、すぐに記事の管理と公開を開始できます。
.
├── articles/ # 記事が格納されるディレクトリ
│ ├── qiita/ # Qiita専用の記事
│ ├── share/ # ZennとQiitaの両方で共有される記事
│ └── zenn/ # Zenn専用の記事
├── scripts/ # 自動化スクリプト
│ └── update_metadata.js # メタデータの更新スクリプト
├── .github/ # GitHub Actions設定
│ └── workflows/
│ └── distribute.yml # 公開処理を自動化するワークフロー
├── LICENSE # ライセンスファイル
└── README.md # このファイル
以下のコマンドでリポジトリをクローンします。
git clone https://github.com/SolitudeRA/Blog-Project.git
cd Blog-Project
Node.jsがインストールされていることを確認し、以下のコマンドを実行してください。
npm install
GitHub Actionsを使用してリポジトリを自動更新するには、Personal Access Token (PAT) を設定する必要があります。
- GitHubのPersonal Access Token設定ページにアクセス。
- "Generate new token" をクリック。
- 必要なスコープを選択:
repo
: プライベートリポジトリへのアクセスを許可(プライベートリポジトリの場合)。
- トークンをコピーして保存します(トークンは一度しか表示されません)。
- リポジトリの Settings > Secrets and variables > Actions に移動します。
- "New repository secret" をクリック。
- 以下の情報を入力:
- Name:
BLOG_PROJECT_TOKEN
- Secret: 生成したトークンの値を貼り付け。
- Name:
- 保存をクリック。
-
トークンの権限:
トークンのスコープは必要最低限にすることを推奨します。一般的にはrepo
スコープのみで十分です。 -
トークンの安全管理:
トークンは第三者に漏れないよう、必ずGitHub Secretsに保存してください。
公開先に応じでarticles/share
articles/zenn
articles/qiita
ディレクトリにMarkdownファイルを作成し、適切なメタデータを追加します。例:
---
title: "ホームサーバー完全構築ガイド #1 OS導入とインフラ設定"
series: "ホームサーバー完全構築ガイド"
topics:
- "linux"
- "selfhosting"
---
記事本文をここに書きます。
-
記事の追加または更新
articles/share
ディレクトリに、Zenn と Qiita の両方で共有する記事を追加します。articles/zenn
ディレクトリには Zenn 専用の記事を追加します。articles/qiita
ディレクトリには Qiita 専用の記事を追加します。
-
main
ブランチへのプッシュ
変更をmain
ブランチにプッシュします。以下のようなコマンドを使用します:git add . git commit -m "Update articles" git push origin main
-
GitHub Actionsによる自動処理
プッシュがトリガーされると、GitHub Actions が以下の処理を自動で行います:-
local_updated_at
の自動更新- 各記事ファイルの最終更新日時(
local_updated_at
)が検出され、自動的に更新されます。
- 各記事ファイルの最終更新日時(
-
Qiitaリポジトリへの分散
articles/share
とarticles/qiita
内の記事が Qiita の子リポジトリ(例:qiita-repo/pre-publish
)にコピーされ、コミット・プッシュされます。
-
Zennリポジトリへの分散
articles/share
とarticles/zenn
内の記事が Zenn の子リポジトリ(例:zenn-repo/pre-publish
)にコピーされ、コミット・プッシュされます。
-
GitHub Actions を使用する前に、distribute.yml
ワークフローで指定されている Qiita と Zenn リポジトリのリンクを、あなたのリポジトリに変更してください。
以下の箇所でリポジトリ名を変更します:
# Qiitaリポジトリ
with:
repository: solitudeRA/qiita-repo # ここを変更
ref: main
token: ${{ secrets.BLOG_PROJECT_TOKEN }}
# Zennリポジトリ
with:
repository: SolitudeRA/zenn-repo # ここを変更
ref: main
token: ${{ secrets.BLOG_PROJECT_TOKEN }}
- Qiita リポジトリ:
your-username/your-qiita-repo
- Zenn リポジトリ:
your-username/your-zenn-repo
以下は、自動化された処理の概要です:
- スクリプト:
update_metadata.js
- 処理内容:
- 各記事の
local_updated_at
フィールドをファイルの最終更新日時で更新。
- 各記事の
- 処理:
articles/share
とarticles/qiita
の記事を Qiita の子リポジトリ(例:qiita-repo/pre-publish
)にコピー。- コピー後、変更内容をコミットしてプッシュ。
- 処理:
articles/share
とarticles/zenn
の記事を Zenn の子リポジトリ(例:zenn-repo/pre-publish
)にコピー。- コピー後、変更内容をコミットしてプッシュ。
update_metadata.js
articles
ディレクトリ内のMarkdownファイルをスキャンし、ファイルの最終更新日時(local_updated_at
)をメタデータに反映します。
以下のコマンドでローカル環境でスクリプトを実行できます:
# メタデータを更新
node scripts/update_metadata.js <directory>
<directory>
には更新対象のディレクトリ(例: articles/zenn
や articles/qiita
)を指定してください。
本リポジトリは MITライセンス のもとで公開されています。