📝

Shodo.inkをつかってサイト全体を校正するツールを作った

2022/10/02に公開

Shodo.inkがなかなかいけていて、いいなと思っています。

https://shodo.ink/

日本語としての校正だけでなく、技術単語も直してくれるので、使ってて楽しいです

APIがあるとのことでベータテスターに申し込んだところ無事に審査が通ったので、100,000文字までAPIでお試しができました。
せっかくだからブログを構成しようと思ったんですが、Shodoの今のインターフェースだと過去に書いたブログ記事を校正にかけられないのでスクレイピングしながら構成をするツールを作りました。

なお、100,000文字までのお試しはshodoの方に言われて気づきました笑

作ったもの

スクレイピングしながら構成をするツール

https://www.npmjs.com/package/@9wick/shodo-site

と、それを作る過程でできあがったShodo.inkのTypeScript版SDK(非公式)

https://www.npmjs.com/package/@9wick/shodo

やっていること

すごく単純で

  • webサイトをスクレイピングする
    • Aタグのリンクがあればその先もスクレイピング対象にする
  • スクレイピングを行った後、本文抽出をする
  • 抽出した本文に対してshodo.inkの校正をかける

を行っています。

本文抽出がポイントで、shodo.inkの文字数を無駄に使いたくなかったので、本文抽出をしています。
最近はブラウザで使われてる本文抽出がそのままライブラリになっているようなので、こちらを使わせてもらいました。

https://www.npmjs.com/package/@mozilla/readability

使い方

まず、前提として このツールは対象のサーバーに1request/10msの頻度でGETリクエストを要求します。必ず使用者の管理するサーバーを対象として利用してください

DoS扱いされても責任は取りません。用法・用量を守って正しく使ってください。

1. まずはライブラリをインストールします

npm install -g @9wick/shodo-site 

普段はNode.jsを使ってないよ / 環境セットアップしたくないよという人は repl.itあたりをつかうとPCの環境を汚さなくて済むので便利です。

2. Shodoの公式ブログの手順に従って、 APIルートとTOKENを取得します。

3. 環境変数に SHODO_API_ROUTESHODO_TOKENという名前で登録します

export SHODO_API_ROUTE=https://api.shodo.ink/@{組織名}/{プロジェクト名}/
export SHODO_TOKEN=XXXXXXXXX

4. ログインチェック

ShodoのAPIがきちんと読み込めているかのチェックを行います。
たとえば、上記でexportができていれば下記のようにアカウントの確認ができます。

$ npx shodo-site check

✅SHODO_API_ROUTEとSHODO_TOKENを読み込みました
✅shodoアカウントの確認が取れました

認証に失敗した場合は下記のようになります

$ npx shodo-site check

✅SHODO_API_ROUTEとSHODO_TOKENを読み込みました
shodoアカウントの確認に失敗しました Error: 認証に失敗しました

5. webサイトのクローリングのチェック

https://9wick.com をクローリング対象にする場合は下記のようにします。

$ npx shodo-site list https://9wick.com 

クローリング対象とShodoによる校正の対象は分けることができ、https://9wick.com をクローリング対象にし、
その中で https://9wick.com/posts/ を校正対象とする場合には下記のようにします。

$ npx shodo-site list https://9wick.com --urlPrefix https://9wick.com/posts/

実行すると、URLの一覧と文字数が表示されます。

$ npx shodo-site list https://9wick.com 

本文抽出文字数:  5,854 https://9wick.com
本文抽出文字数:  5,854 https://9wick.com/
本文抽出文字数:  1,810 https://9wick.com/archives
本文抽出文字数:  1,072 https://9wick.com/uncategorized/new-coworking-space/

...

合計文字数:321,704

6. 校正実行

$ npx shodo-site run https://9wick.com 

✅shodoアカウントの確認が取れました
本文抽出文字数:    294 https://9wick.com/2011/08/new-blog/ 
    2:15 もしかしてAI
                  ブログ(→ ブログは)こちらに移します。 
    2:113 冗長表現
        ツールを紹介or作成していきます(→ します)。 具体的には  
    5:32 IT用語の表記
        バー関係(PHP, Mysql(→ MySQL), JavaScri
    7:25 もしかしてAI
        などを書いていく予定です(→ ですが) ときどきソースコー
本文抽出文字数:  1,060 https://9wick.com/2011/08/app-need-image/ 
    2:36 表現の改善
        イズを毎回調べるのがめんどくさ(→ 面倒くさ)くなってきたのでココ
    2:84 文の長さが100文字を超えています
        。 意外と知らないサイズ指定があって驚きま
    2:87 助詞「は」が近くで連続しています
        驚きました。 ソースはiOS Human 

...

合計文字数:21,704

おわりに

正しい日本語を書きたい、キチンと伝えれるようにしたいけど、せっかちなのでなかなか正しくない状態で送ってしまう自分としては、こういう文章校正サービスはとてもありがたいし、今後どう発展していくか気になってます。おもわず1日そこらでツール化までしてみましたが、なかなかいいものができたんじゃないかと自画自賛中です笑

なお、ブログ全体をやろうとしたところ10万文字では到底足りなすぎたので、結局誤字脱字の多いブログのままになってます・・・笑

Discussion