GitHub と Qiita とでは記法がほぼ同じなので、薄い変換処理を書くだけで済む。
ちなみに、Medium はだいぶ手間そうだったのでまともに試してない。あと、Zenn は画像やテーブル周りの記法違い吸収が手間そうだった。
GitHub Action
1. Qiita API で投稿するスクリプト用意
シンプルな例として、GitHub の README.md
を Qiita に投稿したいとする。
post_qiita.sh
#!/bin/sh
# 行末の空白スペース(GitHub だとそれが改行を意味する)を削除
sed -e 's/[ \t]*$//' README.md > README-qiita.md
# 頭の h1 見出しは Qiita だと冗長なので削る
sed -i '.backup' -e '1d' README-qiita.md
rm README-qiita.md.backup
data=$(cat <<EOS
{
"body": $(ruby -e 'p ARGF.read.sub(/\A---.*---/m, "")' README-qiita.md),
"title": "タイトル aaa",
"tags": [ { "name": "foo" }, { "name": "bar" } ]
}
EOS
)
# See: https://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF
# NOTE: QIITA_ACCESS_TOKEN は環境変数でセットしてあるものとする
curl "https://qiita.com/api/v2/items/xxx" \
-v \
-X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${QIITA_ACCESS_TOKEN}" \
-d "${data}"
2. アクセストークンの登録
個人用アクセストークンを発行 して https://github.com/{user_id}/{repository_name}/settings/secrets/actions
で登録する。
ここでは、例えば QIITA_ACCESS_TOKEN
という名前で設定したとする。
3. workflow 定義
..github/workflows/post_qiita.yaml
on:
push:
branches:
- main
paths:
- 'README.md'
jobs:
post_qiita:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v2
- name: start to post Qiita
uses: bobheadxi/deployments@master
id: deployment
with:
step: start
token: ${{ secrets.GITHUB_TOKEN }}
env: Qiita
- name: post
env:
QIITA_ACCESS_TOKEN: ${{ secrets.QIITA_ACCESS_TOKEN }}
run: ./scripts/post_qiita.sh
- name: update deployment status
uses: bobheadxi/deployments@master
if: always()
with:
step: finish
token: ${{ secrets.GITHUB_TOKEN }}
status: ${{ job.status }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
env_url: https://qiita.com/foo/items/xxx