Shodo.inkをつかってサイト全体を校正するツールを作った
Shodo.inkがなかなかいけていて、いいなと思っています。
日本語としての校正だけでなく、技術単語も直してくれるので、使ってて楽しいです
APIがあるとのことでベータテスターに申し込んだところ無事に審査が通ったので、100,000文字までAPIでお試しができました。
せっかくだからブログを構成しようと思ったんですが、Shodoの今のインターフェースだと過去に書いたブログ記事を校正にかけられないのでスクレイピングしながら構成をするツールを作りました。
なお、100,000文字までのお試しはshodoの方に言われて気づきました笑
作ったもの
スクレイピングしながら構成をするツール
と、それを作る過程でできあがったShodo.inkのTypeScript版SDK(非公式)
やっていること
すごく単純で
- webサイトをスクレイピングする
- Aタグのリンクがあればその先もスクレイピング対象にする
- スクレイピングを行った後、本文抽出をする
- 抽出した本文に対してshodo.inkの校正をかける
を行っています。
本文抽出がポイントで、shodo.inkの文字数を無駄に使いたくなかったので、本文抽出をしています。
最近はブラウザで使われてる本文抽出がそのままライブラリになっているようなので、こちらを使わせてもらいました。
使い方
まず、前提として このツールは対象のサーバーに1request/10msの頻度でGETリクエストを要求します。必ず使用者の管理するサーバーを対象として利用してください
DoS扱いされても責任は取りません。用法・用量を守って正しく使ってください。
1. まずはライブラリをインストールします
npm install -g @9wick/shodo-site
普段はNode.jsを使ってないよ / 環境セットアップしたくないよという人は repl.itあたりをつかうとPCの環境を汚さなくて済むので便利です。
Shodoの公式ブログの手順に従って、 APIルートとTOKENを取得します。
2.
SHODO_API_ROUTE
と SHODO_TOKEN
という名前で登録します
3. 環境変数に 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