---
title: GitHub ActionsでZennブログの校正を自動化してみた
tags:  #githubactions #reviewdog #textlint #zenn  
author: [Yuta](https://convert.docswell.com/user/Yuta)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4VJPV13J86.jpg?width=480
description: 詳細ブログ⇓ https://zenn.dev/yuta28/articles/blog-lint-ci-reviewdog
published: April 10, 21
canonical: https://convert.docswell.com/s/Yuta/MKJNE5-2021-04-10-120318
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4VJPV13J86.jpg)

GitHub Actionsで ブログの校正を自動化してみた

# Page. 2

![Page Image](https://bcdn.docswell.com/page/L2EVZYN7QW.jpg)

自己紹介 Name：ユータ Occupation：インフラエンジニア Twitter：@Y0u281 （オーでなくゼロです） ブログ：https://zenn.dev/yuta28 → 普段触るもの：AWS Ansible Linux Mint Twitter

# Page. 3

![Page Image](https://bcdn.docswell.com/page/Z57G495ELR.jpg)

目次 ● 背景 ● 技術スタック紹介 ○ textlint ○ reviewdog ● 実装 ● 工夫ポイント ● まとめ

# Page. 4

![Page Image](https://bcdn.docswell.com/page/V4EQGWLJP5.jpg)

背景 ● ZennブログをGitHub連携することができるようになった☆ ○ ● Zenn個人開発の限界に挑んだ話 - devsumi 2021 詳しくは開発者のプレゼン 👀 CIツールを導入する事で自動化が可能に👏 ○ リポジトリを更新する度にドキュメントの校正 ○ イイ感じのブログ執筆

# Page. 5

![Page Image](https://bcdn.docswell.com/page/DKJ45K5E1Q.jpg)

textlint ● mdファイルやプレーンテキスト向けのLinterツール ● ● ● npm install textlint `textlint-rurle` → ルールもインストール デフォルトルールが存在せず、自分でルールを決めなければならない .textlintrc にルールを記述 https://textlint.github.io/

# Page. 6

![Page Image](https://bcdn.docswell.com/page/PLE1WX2JGD.jpg)

textlint # .textlintrc { &quot;rules&quot;: { &quot;preset-smarthr&quot;: { &quot;sentence-length&quot;: false }, &quot;prh&quot;: { &quot;rulePaths&quot;: [ &quot;dict/smarthr-prh-basic.yml&quot;, &quot;dict/smarthr-prh-tech-word.yml&quot; ] } } } ルール ● ● textlint-rule-preset-smarthr textlint-rule-prh 参照 よりよい文書を書くための校正ツール「 textlint」の SmartHR用ルールプリセットを公開しました！ ｜SmartHRオープン社内報

# Page. 7

![Page Image](https://bcdn.docswell.com/page/8GEW6N2E26.jpg)

reviewdog ● GitHubにlinterツールで検知した指摘事項をレビューコメントに投稿 ● ● Goで書かれたOSS Circle CIやGitHub Actionsなど複数のCIサービスと連携可能 https://github.com/reviewdog/reviewdog

# Page. 8

![Page Image](https://bcdn.docswell.com/page/W47ZY34E3Y.jpg)

実装 jobs: reviewdog-github-check: name: reviewdog (github-check) runs-on: ubuntu-latest steps: #reviewdogのアクション - uses: reviewdog/action-setup@v1 with: reviewdog_version: latest #textlintを動かすためのnodeアクション - uses: actions/setup-node@v2 - name: Install textlint run: &#039;npm install --save-dev textlint-rule-preset-smarthr textlint-rule-prh&#039; - name: Install dependent module run: npm install - name: Execute textlint for ブログ記事 run: | npx textlint -f checkstyle &quot;articles/*.md&quot; &gt;&gt; .textlint.log - name: Run reviewdog # textlintで文章上のミスがあった場合のみ、 reviewdogを実行させるようにする if: failure() env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | cat .textlint.log | reviewdog -f=checkstyle -name=&quot;textlint&quot; -reporter=&quot;github-pr-review&quot; 1) reviewdog,nodeのアクションを起動 2) textlintのインストール 3) textlintを記事に対して実行 4) 何かしらの記載ミスが有った場合のみtextlintの出力結果を reviewdogに渡してGitHubにレビューコメントを投稿

# Page. 9

![Page Image](https://bcdn.docswell.com/page/KYJ6DXG7VZ.jpg)

デモ イメージ図

# Page. 10

![Page Image](https://bcdn.docswell.com/page/5GJ53XXE48.jpg)

工夫ポイント ● キャッシュを使って高速化 ○ ● GitHub Actionの公式にactions/cache stepが失敗するとキャッシュしてくれない ● stepが終了してもキャッシュしてくれるアク ションを使う https://github.com/pat-s/always-upload-c ache #stepsが失敗(文章の乱れ)した場合でもcacheを取得するようにする uses: pat-s/always-upload-cache@v2.1.3 env: cache-name: cache-node-modules with: path: ~/.npm key: node-${{ hashFiles(&#039;**/package-lock.json&#039;) }} restore-keys: | node-

# Page. 11

![Page Image](https://bcdn.docswell.com/page/4LE36X4E5P.jpg)

工夫ポイント ● キャッシュ前（初回実行） 50秒 ● キャッシュ取得後（2回目以降） 29秒

# Page. 12

![Page Image](https://bcdn.docswell.com/page/V8EDV25EGD.jpg)

まとめ

# Page. 13

![Page Image](https://bcdn.docswell.com/page/4V7PV1D786.jpg)

ありがとうございました より詳しい内容は以下のブログで ↓ GitHub ActionsでZennブログの校 正を自動化してみた

