LoginSignup
1
1

More than 3 years have passed since last update.

GitHub の markdown を Qiita に投稿する GiutHub Action

Last updated at Posted at 2020-11-06

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

image.png


original

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1