私はほぼ毎日、AIを使ってブログ記事を書いています。ネタは山ほどありますが、運営サイトのテーマと読者の関心に合わせる必要があるので、Kafkaiのデータと照らし合わせながら記事を書いています。時々、Kafkaiから「新しい記事ではなく、古い記事の更新のほうがいい」とアドバイスを受けることもあります。
記事のスタイルや言い回しはすでに学習済みのデータがあるので、どんなテーマでどんな方向性にしたいかを指示するだけで、ドラフト版ができあがります。Kafkaiのプロンプト例を参考にしてください。AIライティングの現状については以前の記事でも触れています。
そのドラフトを最後に仕上げる工程で、今回はShodoのAPIを組み込んでみました。
なぜShodoを選んだか
Simon Willisonさんが作ったCLIツールllmは、パイプを使って複数のプロセスを組み合わせられるのが強みです。私はこのツールのヘビーユーザーです。Pythonスクリプトを書かなくても、シェル上でAIモデルを呼び出せます。モデルの切り替えも簡単です。ローカルでLLMを動かす方法については以前にまとめたことがあります。
llmにツールを登録すれば、AIが文章を書いたあとに自動で校正してくれます。CLIツールを組み合わせて作業するVibe Codingの考え方は、このような小さな自動化にも当てはまります。Shodoには公開APIがあるので、APIを呼び出すツールを作ってみました。ただしShodoのAPIは、個人利用または非商用に限られる点に注意が必要です。
Shodoは株式会社ゼンプロダクツが提供するAI校正サービスです。月額1,000円からのプレミアムプランでは、1記事あたり42,000文字まで校正できます。リアルタイム入力チェック、共同編集、レビュー機能、WordPress連携など、執筆ワークフロー全体をサポートします。
私がShodoを選んだ理由はシンプルです。APIがあること、日本語の校正精度が高いこと、そしてコミュニティの人間が作っているツールであることです。
llm-tools-shodoプラグインの作り方
ShodoのAPIと連携するllm用プラグインを作りました。PyPIに公開しています。
pip install llm-tools-shodo
プラグインの中身は単純です。shodo_proofreadという関数を定義し、llmのツール登録機構に登録します。関数内部では、受け取ったテキストをShodoの校正APIにPOSTし、返ってきた指摘を自動適用します。
ShodoのAPIは非同期的に動作します。テキストをPOSTするとlint_idが返ってきます。それを使って結果をGETで取得します。APIのエンドポイントは以下の形式です。
https://api.shodo.ink/@{organization}/{project}/lint/
認証はBearerトークンです。プロジェクトの設定画面から発行します。
レスポンスには指摘の種類、位置、修正後のテキスト、確からしさのスコアが含まれます。severityがerrorのものは確実に修正すべきです。warningは文脈次第です。infoは参考情報です。
私のプラグインでは、スコアが高く確からしい指摘を自動で適用し、手動判断が必要なものはリストとして残すようにしました。完全に任せるのではなく、人間が最終確認できる形にしています。
ツールとして使う
インストール後、llm toolsで登録されていることを確認できます。
$ llm tools
shodo_proofread(text: str) -> str (plugin: llm_tools_shodo)
Proofread Japanese text with the Shodo AI proofreading API and return the corrected text.
Pass the full Japanese text exactly as the user gave it. The tool sends it to Shodo,
applies every confident suggested fix automatically, and returns the corrected text plus
a list of the changes and of the remaining issues that have no automatic fix.
以下のように、ツール名を明示的に渡して校正します。--chain-limitは複数ツールを使うときの連鎖回数の上限です。今回は必須ではありませんが、複数ツールを組み合わせる習慣から設定しています。
$ llm --tools-debug --chain-limit 10 --tool shodo_proofread "Use all the tools that you have and fix this sentence: 雨が降っているので傘を開ける。風邪を引きそうなので薬を食べる" -m gemma4:12b
Tool call: shodo_proofread({'text': '雨が降っているので傘を開ける。風邪を引きそうなら薬を食べる。'})
CORRECTED TEXT:
雨が降っているので傘をさす。風邪を引きそうなら薬を飲む。
APPLIED FIXES (2):
- 1:12 [error] もしかして 「開ける」→「さす」
- 1:27 [error] もしかして 「食べる」→「飲む」
ISSUES WITHOUT AUTOMATIC FIX (0):
- none
The corrected sentence is:
**雨が降っているので傘をさす。風邪を引きそうなら薬を飲む。**
### Explanation of changes:
1. **傘を「さす」 (Sasu):** In Japanese, the verb for opening/holding an umbrella is **さす**. While "開ける" (akeru) literally means "to open," it is used for things like doors, boxes, or windows. For umbrellas, "さす" is the correct idiomatic expression.
2. **薬を「飲む」 (Nomu):** In Japanese, medicine is "drunk" (**飲む**) rather than "eaten" (**食べる**). Even if the medicine is in pill form, "飲む" is the standard verb used for taking medicine.
この例でわかるように、英語でいう「Open umbrella」と「Eat medicine」をそのまま直訳すると「傘を開ける」「薬を食べる」になります。しかし日本語の動詞にはコロケーションと呼ばれる「相性のよい組み合わせ」があり、AIはこの慣用を機械的に修正してくれます。日本語学習者にとっては、この「なぜ間違いなのか」を理解する機会にもなります。
ファイルを指定して校正する
ファイルごとに校正することも可能です。
$ llm shodo [FILE]
例えば、
$ cat test.txt
先生に、明日に課題にみていただきます。
先生、私の宿題を拝見していただけますか。
$ llm shodo test.txt
先生に、明日に課題をみていただきます。
先生、私の宿題を拝見していただけますか。
APPLIED FIXES (1):
- 1:10 [error] もしかして 「に」→「を」
ISSUES WITHOUT AUTOMATIC FIX (0):
- none
$
ただし、大きなファイルをそのまま渡すとAPIの制限文字数に達する可能性があります。ShodoのAPIは最大42,000文字まで対応していますが、長文の場合は分割して渡すほうが安全です。
Shodoを使うべき場面と、そうでない場面
Shodoは万能ではありません。他の校正サービスとの違いを整理しておきます。
Shodoが向いている場面
執筆ワークフローの統合が必要な場合です。記事の執筆、レビュー、ステータス管理、WordPress連携まで一貫して行いたい場合に有効です。複数人でコメントを付けながら書く共同編集機能は、チームブログ運営には欠かせません。
API連携をしたい場合もShodoが向いています。自社のシステムやCLIツールに組み込みたい場合、shodoコマンドやREST APIを使えます。ただし個人・非商用限定です。
リアルタイム校正も強みです。ブラウザ上で入力しながら即座に誤字を指摘してくれます。執筆中のストレスを減らせます。
Shodoが向いていない場面
初期費用を避けたい場合は、無料のEnnoなどを先に試すべきです。Shodoのプレミアムプランは月額1,000円ですが、無料で長文が校正できる選択肢もあります。
表記ゆれや文章表現の深い推敲が必要な場合は、文賢のほうが適しています。文賢は4,000を超える文章表現から言い回しの代替案を提示できます。漢字使用率や音声読み上げ機能もあります。
オフライン環境ではShodoは使えません。クラウド型なのでインターネット接続が必須です。セキュリティ要件が厳しい文書は、インストール型のJust Right!やPress Termなどを検討してください。
商用システム連携には要注意です。ベーシックプランの校正APIは非商用に限られます。契約者本人の商用利用はプレミアムプラン以上でも可能ですが、自社サービスや社内システムへの組み込みには別途APIプラン(月額40,000円から)が必要です。個人ブログや非営利活動なら問題ありませんが、企業の業務システムに組み込む場合は料金プランを確認してください。
他の校正サービスとの比較
簡単に主要なサービスを並べます。料金はいずれも当社調べで、2026年10月時点の税込価格です。最新の情報は各サービスの公式サイトでご確認いただくことをおすすめします。
| サービス | 価格 | 文字数制限 | 強み |
|---|---|---|---|
| Shodo | 無料〜月額1,000円 | 無料は1万文字/回、有料は42,000字/記事 | API連携、共同編集、リアルタイム校正 |
| 文賢 | 初期費用0円+月額1,650円〜(1年契約) | 50,000字 | 文章表現・言い換え提案、AIアシスト、辞書共有 |
| Enno | 無料 | 制限なし(8,000字程度を推奨) | 無料で長文が校正できる、登録不要 |
| PRUV | 無料(制限あり)〜月額550円 | 無料1,000字/有料50,000字 | ら抜き言葉や二重敬語のチェックが得意 |
| ATOKクラウドチェッカー | 月額660円 | 10,000字 | ATOK連携、シンプルな操作 |
| Typoless | 月額2,200円〜 | 5万文字〜 | 朝日新聞社の校閲ルール、炎上リスクチェック |
| Press Term | 38,500円(買い切り) | 16,000字 | 共同通信社記者ハンドブック搭載、オフライン可 |
私の現在のワークフローは以下の通りです。Kafkaiでドラフトを生成し、llmで体裁を整え、Shodoで誤字や変換ミスをチェックし、最後に文賢で言い回しのブラッシュアップを行います。すべてを一つのツールに任せるのではなく、それぞれの強みを使い分けています。この「人間が最終判断するAI活用」の考え方は、AI検出ツールの限界について書いたときと同じです。
日本語学習への応用
日本語が母国語でない方にとって、Shodoと大規模言語モデルの組み合わせは学習ツールとしても有効です。
まず自分で文章を書きます。次にShodoで校正してもらいます。最後にLLMに「なぜこの修正が必要なのか」を解説してもらいます。誤字の訂正だけでなく、文法的な根拠まで理解できるので、同じ間違いを繰り返しにくくなります。
特にコロケーションの誤りは、母国語話者にとっては当たり前でも、学習者にとっては「なぜこれが間違いなのか」がわかりにくいものです。「薬を飲む」は「食べる」よりも正しい、「傘をさす」は「開ける」よりも自然である、といった知識は、辞書を引くだけでは得られません。AIが指摘した箇所を、LLMに解説させることで、ルールを言語化できます。
コミュニティの話
Shodoの創業者である清原弘貴(hirokiky)さんは、日本で最大級のDjangoカンファレンスであるDjangoCongress JPの立ち上げ人でもあります。Django Software Foundationの月間メンバーとしても紹介されています。
DjangoCongress JPは2018年に初開催され、参加者100人ほど、発表者12人、スタッフ15人ほどのイベントでした。清原さんは当時から「最小のイベントを作る」「みんなで盛り上がる」を方針に掲げ、ランチ提供や動画配信、企業スポンサーブースを省略する代わりに、Djangoの深い話を聞く場所を作りました。「提供者が提供しすぎると、参加者がより参加者になっちゃう」との考えから、SNSでの拡散やスライドアップロードを参加者自身に依頼するスタイルを取ったそうです。
この「無い効果」という考え方は、Shodoのプロダクト設計にも活かされているように感じます。過剰な機能ではなく、執筆に本当に必要なものに絞り込んでいます。私自身もDjangoを使った開発を行っているので、同じコミュニティの一員として応援しています。
まとめ
ShodoのAPIをllmのツールとして組み込むことで、日本語文章の校正をコマンドラインから自動化できます。個人・非商用の範囲内であれば、無料で始められるのも魅力です。
ただし、校正の「最後の1マイル」は人間の目が必要です。AIが指摘してくる箇所を鵜呑みにせず、文脈を確認してから修正を適用してください。そして、Shodo単体ではカバーしきれない表現の改善や表記ゆれの統一には、文賢など他のツールとの併用を検討してください。
技術的な部分と、人間的な部分の両方を組み合わせることで、文章の品質は上がります。