APIガイド
🚀ようこそ🚀
Shodoの公開APIの利用方法を説明します。
コマンド
ShodoのAPIをコマンドから便利に使えます。 たとえばMarkdownファイルを校正するコマンドは以下のようになります。
$ pip install shodo
$ shodo login
$ shodo lint README.md
詳しくは コマンドのREADME をご確認ください。
APIルート
組織の英数名(スラッグ)と、プロジェクトの英数名を指定します。
https://api.shodo.ink/@{organization}/{project}/
認証
Shodoのプロジェクトより、「API連携」設定画面 で、トークンを発行してください。
以下のようにHTTPヘッダーからトークンを指定します。
Authorization: Bearer {token}
校正API
記事や文章を校正するAPIです。
APIのURL:https://api.shodo.ink/@{organization}/{project}/lint/
校正APIに文章をPOSTします。 最大で4万文字まで対応しています。
{
"body": "校正する本文"
}
オプション:
type
:body
の種別をtext
(テキスト・Markdown)かhtml
(HTML)で指定。詳細は後述(デフォルトはtext
)
レスポンスの例
{
"lint_id": "6d639e5f-8bfe-43d7-ac24-8bb6b97ba936",
"monthly_amount": 1000000,
"current_usage": 116049,
"len_body": 8429,
"len_used": 8112
}
Shodoの校正は非同期的に実行されます。
lint_id
としてShodoが校正した結果を受け取るIDが返されます。
たとえば以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 https://api.shodo.ink/@org/project/lint/ body="校正する本文"
文字数とキャッシュ
Shodoは投稿されたテキストのうち、日本語を含む文のみを利用文字数とカウントします。 投稿されたテキストすべての長さより少ない文字数になります。
投稿された文はキャッシュされるので、同じ文が投稿された場合には利用文字数は減りません。たとえば1万文字の文章があるときに、1文字だけを変更して再度校正した場合、変更した文字を含む文だけが再度カウントの対象となります。
校正APIのレスポンスはそれぞれ以下のような意味を持ちます。
lint_id
:校正APIの結果を取得するIDmonthly_amount
:APIの利用可能文字数(月ごと)current_usage
:今月利用した文字数len_body
:投稿したテキストの日本語文の長さlen_used
:利用された校正文字数(キャッシュ分は差し引き)
たとえばすべてキャッシュでまかなわれた場合、 len_used
は 0
となります。キャッシュは30分程度有効ですが、キャッシュ時間が保証されるわけではありません。また、本文のキャッシュは他の利用者に漏えい・影響しない形式で管理されておりますので、安心してご利用ください。
HTML入力
正APIの本文の指定時にHTMLとして入力が可能です。
{
"body": "<p>校正する本文</p>",
"type": "html",
}
Shodoでは本文にHTMLを利用できます。HTMLを指定した場合ブロック要素内の本文を校正します。 インライン要素や属性の値は無視されますのでご注意ください。また校正の対象はHTML要素に含まれている必要があります。
$ http ... body="<p>これは本文です</p>" type="html"
本文構造は以下のように解釈されます
<h1>
~<h6>
: 見出し<li>
: 一覧(<li><p>...</p></li>
も一覧とみなされる)<div>
、<p>
、<figcaption>
など: 本文
また入力の文字数制限(42,000文字)にHTMLのタグが文字数として含まれなくなります。
校正結果API
投稿した本文の校正結果を取得するAPIです。
APIのURL:https://api.shodo.ink/@{organization}/{project}/lint/{lint_id}/
レスポンスの例
{
"messages": [
{
"after": "",
"before": "が",
"code": "ai_recommend",
"from": {
"ch": 21,
"line": 669
},
"index": 17619,
"index_to": 17620,
"message": "もしかしてAI",
"meta": {},
"severity": "error",
"operation": "delete",
"score": 0.9886295795440674,
"to": {
"ch": 22,
"line": 669
}
}
],
"status": "done",
"updated": 1658379913
}
たとえば以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 https://api.shodo.ink/@org/project/lint/6d639e5f-8bfe-43d7-ac24-8bb6b97ba936/
レスポンスの意味
- messages:
- code: 指摘のコード
- message: 指摘のメッセージ
- from: 指摘の位置(
{ line: 行, ch: 列 }
)。0から始まる順番。 - to: 指摘の終わり位置(
{ line: 行, ch: 列 }
)。0から始まる順番。 - index: 指摘のインデックス番号。0から始まる順番。
- index_to: 指摘の終わり位置のインデックス番号。
- before: 指摘対象のテキスト
- after: 推奨される置き換えテキスト
- operation: 指摘対象のテキストを置き換える(
replace
)か削除するか(delete
)、保持するか(keep
)。不明な場合null
。 - score: 校正の指摘がどれだけ確からしいかのスコア
- severity: error、warning、infoによる重要度(infoは変更を求めない付帯情報)
- meta: 追加での情報を返します
- status: done(完了)、processing(校正中)、failed(失敗)の3つの状態
- updated: 最後に情報が更新された日時(UNIXタイムスタンプ)
エンタープライズプランの動作速度
エンタープライズプランの場合、システム構成により文章校正が完了するまでの時間が変わります。 コストを大幅に抑えた構成の場合、コールドスタンバイ状態では10秒ほど余計に時間がかかります。
ホスティングのShodo(api.shodo.ink)や通常のエンタープライズプランのシステム構成の場合 は高速に動作します。
複数文章の校正
ShodoのAPIは複数の文章をまとめて投稿できます。
body
の代わりに bulk_body
というパラメータで文章の一覧を指定してください。
{
"bulk_body": ["校正する本文", "校正する本文2"]
}
校正結果の messages
は各本文ごとの結果になります。
たとえば bulk_body
に2つの本文を指定すると、 messages
も2要素のリストとなります。
{
"messages": [
[
{
"after": "",
"before": "が",
"from": {
"ch": 0,
"line": 3
}
}
],
[]
],
"status": "done",
"updated": 1658379913
}
利用状況API
利用状況APIは月次での利用文字数を取得できます。 利用文字数は組織ごとにカウントされ、過去12ヶ月の利用状況を取得できます。
API URL:https://api.shodo.ink/@{organization}/{project}/usage/
Response
{
"usage": [
{"year": 2023, "month": 6, "amount": 24000},
{"year": 2023, "month": 5, "amount": 28000},
{"year": 2023, "month": 4, "amount": 32000},
{"year": 2023, "month": 3, "amount": 150129},
{"year": 2023, "month": 2, "amount": 4003},
{"year": 2023, "month": 1, "amount": 44000},
{"year": 2022, "month": 12, "amount": 48081},
{"year": 2022, "month": 11, "amount": 52000},
{"year": 2022, "month": 10, "amount": 56000},
{"year": 2022, "month": 9, "amount": 60022},
{"year": 2022, "month": 8, "amount": 64330},
{"year": 2022, "month": 7, "amount": 68830},
{"year": 2022, "month": 6, "amount": 72120}
],
"monthly_mount": 160000
}
たとえば、以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 https://api.shodo.ink/@org/project/usage/
用語・表記ゆれAPI
校正APIで使われる用語と表記ゆれを設定するAPIです。 このAPIで設定する表記ゆれは、Shodoの画面か ら設定する表記ゆれと同じものです。
APIのURL:https://api.shodo.ink/@{organization}/{project}/terms/
リクエストはプロジェクトごとに、1分間に60回まで許可されています。 それ以上の回数をご要望の場合はお問い合わせください。
Response
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 100000,
"description": "",
"text": "Shodo",
"variants": [{"text": "ShoDo"}],
"severity": "error",
"fuzzy_complement": false
}
]
}
たとえば、以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 https://api.shodo.ink/@org/project/terms/
レスポンスの意味
一覧の内容は results
にあります。データがまだ続いている場合は next
に次のページ番号(?page=2
など)が格納されています。
id
:用語のIDdescription
:用語の説明(画面上でのみ利用されます)text
:用語の表記variants
:表記ゆれの一覧({"text": "表記ゆれ文字"}
として指定)severity
: 表記ゆれの重大度(error
、warning
、info
の3種類)fuzzy_complement
:表記ゆれの自動判定を行うかどうか
クエリーパラメーター
page
:ページネーションの番号を数値で指定
用語・表記ゆれの追加
用語・表記ゆれの追加は POST
メソッドで行います。
$ http -A bearer -a d8eb...3359 https://api.shodo.ink/@org/project/terms/ text="Shodo"
text
、 description
、 variants
、 severity
、 fuzzy_complement
のパラメーターを指定できます。
用語・表記ゆれ詳細API
表記ゆれの詳細を取得します。
APIのURL:https://api.shodo.ink/@{organization}/{project}/terms/{id}/
たとえば、以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 https://api.shodo.ink/@org/project/terms/1/
レスポンスの意味
レスポンスは一覧と同じ内容です。
{
"id": 100000,
"description": "",
"text": "Shodo",
"variants": [{"text": "ShoDo"}],
"severity": "error",
"fuzzy_complement": false
}
用語・表記ゆれの更新
用語・表記ゆれの更新は PUT
メソッドで行います。
たとえば、以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 PUT https://api.shodo.ink/@org/project/terms/1/ text="SHODO"
パラメーターは用語・表記ゆれの追加と同じです。
用語・表記ゆれの削除
用語・表記ゆれの更新は DELETE
メソッドで行います。
たとえば、以下のようなコマンドでご利用いただけます。
$ http -A bearer -a d8eb...3359 DELETE https://api.shodo.ink/@org/project/terms/1/