Qiitaの記事をバックアップしていますか?
記事を誤って消してしまった時に備えて,GitHubに自動でバックアップをとってみました.
技術的に言えば,GitHub Actions(GitHubの提供するCI)を定期実行してQiitaのAPI経由で投稿を取得して保存しています.
用意するもの
- GitHubアカウント x1
- GitHubリポジトリ x1
- GitHub Actions (特別な設定は不要)
- Qiitaアカウント x1
- Qiita API トークン x1
手順
[1] GitHubにバックアップ先リポジトリを作成
GitHubにアクセスして右上のメニューから「New repository」を選んでリポジトリを作ります.
リポジトリ名と公開の有無を指定します.下書き記事や非公開記事もバックアップされるのでPrivateを選びました.
「Create repository」を押します.
[2] QiitaでAPIトークンを作成
右上にあるメニューから「設定」を選びます.
サブメニューから「アプリケーション」を選びます.
個人用アクセストークンから「新しいトークンを発行する」を選びます.
わかりやすいトークンの説明を入力して,スコープに read_qiita を選びます.「発行する」を押してトークンを発行します.
表示されたトークンをテキストエディタに貼り付けてメモしておきます.
[3] GitHubリポジトリにトークンを登録
手順1で作成したGitHubリポジトリにアクセスして,メニューから「Settings」を選びます.
サブメニューから「Secrets」を選びます.「New secret」を選んで先程取得したQiitaのAPIトークンを登録します.
トークン名を QIITA_ACCESS_TOKEN に設定して,先程取得したトークンを貼り付けます.「Add secret」を押します.
[4] GitHubリポジトリに設定ファイルを追加
リポジトリのトップから「creating a new file」を選びます.
ファイル名に .github/workflows/backup.yml を指定してください.
以下の設定ファイルを貼り付けます.
name: QiitaBackup
on:
push:
branches:
- master
pull_request:
branches:
- master
schedule:
# * is a special character in YAML so you have to quote this string
- cron: '00 00 * * *'
jobs:
backup:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2-beta
with:
node-version: '12'
- run: npx qiita_export_all
env:
QIITA_ACCESS_TOKEN: ${{ secrets.QIITA_ACCESS_TOKEN }}
- uses: EndBug/add-and-commit@v4
with:
add: 'items/ img/'
author_name: 'Auto Backup Bot'
author_email: backup@example.com
cwd: '.'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
「Commit new file」を押すと自動でバックアップが開始されます.
[5] GitHub Actionsをチェック
毎日0:00(UTC)に自動で定期的にバックアップが実行されます.9:00(JST)にバックアップが出来ているか確認してみてください.
快適なQiitaライフを!













