Smartcatの翻訳作業をAIで自動化する5つのパターン|Smartcat API×Claude Code・Codex実践ガイド
Smartcatで翻訳・ローカライズを行っている方向けに、Smartcat APIとClaude Code・Codexを組み合わせた自動化パターンを紹介します。プロジェクト作成や納品ファイルの取得といった定型作業の自動化から、ポストエディット・用語集整備・納品前QAといった「翻訳の中身」に踏み込むAI活用まで、実践的に解説します。
Smartcatの作業のうち、何を自動化できるのか
Smartcatはブラウザだけで完結するCATツールとして便利ですが、案件数が増えてくると画面上のクリック作業が積み重なります。実は、SmartcatにはREST API(とCLI)が用意されており、画面でできることの多くはAPIからも実行できます。
この記事では、自動化のパターンを「定型作業の自動化」と「翻訳の中身へのAI活用」の2系統・5パターンに整理します。
| パターン | 内容 | 系統 |
|---|---|---|
| ① プロジェクト作成〜ファイル投入 | 定期案件のプロジェクト作成・原稿アップロードをスクリプト化 | 定型作業 |
| ② 進捗監視〜納品ファイル自動取得 | 翻訳完了を検知して訳文ファイルを自動エクスポート | 定型作業 |
| ③ AIポストエディット | 機械翻訳の下訳を、用語集・過去訳を踏まえてAIが修正 | 翻訳の中身 |
| ④ 用語集・翻訳メモリの整備 | 過去の対訳から用語ペアを抽出し、用語集として一括登録 | 翻訳の中身 |
| ⑤ 納品前QAチェック | 数字・訳抜け・用語集準拠・スタイル一貫性をAIが検査 | 翻訳の中身 |
スクリプトはすべてClaude CodeやCodexに書かせられるレベルのものです。「APIは触ったことがない」という翻訳者の方でも、この記事の内容をそのままAIに渡せば動くものが手に入ります。
事前準備:Smartcat APIキーの発行と認証
Smartcatの設定画面(Settings → API)から、APIキーを発行します(キーは複数作成できます)。
認証はBasic認証で、ユーザー名にアカウントID、パスワードにAPIキーを使います。
# プロジェクト一覧を取得する例
curl "https://smartcat.ai/api/integration/v1/project/list" \
-u "アカウントID:APIキー"
SmartcatのAPIサーバーは利用アカウントのリージョンによってURLが異なります。ヨーロッパサーバーはhttps://smartcat.ai/、アメリカサーバーはhttps://us.smartcat.ai/、アジアサーバーはhttps://ea.smartcat.ai/です。APIが401や404を返すときは、まずリージョンURLが合っているか確認してください。
パターン①:プロジェクト作成〜ファイル投入の自動化
「毎週決まったクライアントから決まった形式のファイルが届き、毎回同じ設定でプロジェクトを作る」という運用なら、ここが最初の自動化ポイントです。
プロジェクト作成はPOST /api/integration/v1/project/create、既存プロジェクトへのファイル追加はPOST /api/integration/v1/project/document?projectId={プロジェクトID}で行えます。
import os
import json
import requests
BASE = "https://smartcat.ai" # リージョンに合わせて変更
AUTH = (os.environ["SMARTCAT_ACCOUNT_ID"], os.environ["SMARTCAT_API_KEY"])
def create_project(name: str, source: str, targets: list[str]) -> str:
"""プロジェクトを作成してIDを返す"""
model = {
"name": name,
"sourceLanguage": source, # 例: "en"
"targetLanguages": targets, # 例: ["ja"]
"assignToVendor": False,
}
r = requests.post(
f"{BASE}/api/integration/v1/project/create",
auth=AUTH,
files={"model": (None, json.dumps(model), "application/json")},
)
r.raise_for_status()
return r.json()["id"]
def add_document(project_id: str, filepath: str):
"""プロジェクトに原稿ファイルを追加する"""
with open(filepath, "rb") as f:
r = requests.post(
f"{BASE}/api/integration/v1/project/document",
params={"projectId": project_id},
auth=AUTH,
files={"file": f},
)
r.raise_for_status()
return r.json()
プロジェクトの細かい設定(翻訳メモリの割り当て、事前翻訳ルールなど)は初回だけ画面で整えて、以降は同じ設定のプロジェクトをAPIで量産する、という使い方が現実的です。Claude Codeに「受信フォルダに置いたファイルをまとめてSmartcatに投入するスクリプトにして」と頼めば、フォルダ監視やファイル名からの案件名生成まで含めて書いてくれます。
パターン②:進捗監視〜納品ファイルの自動取得
翻訳・レビューが完了したファイルのダウンロードも、毎回画面から行う必要はありません。エクスポートは2段階のAPIで行います。
POST /api/integration/v1/document/export?documentIds={ドキュメントID}でエクスポートを依頼し、タスクIDを受け取るGET /api/integration/v1/document/export/{タスクID}で生成されたファイルをダウンロードする(生成に時間がかかる場合があるため、少し待ってリトライする)
import time
def export_document(document_id: str, out_path: str):
"""訳文ファイルをエクスポートして保存する"""
r = requests.post(
f"{BASE}/api/integration/v1/document/export",
params={"documentIds": document_id},
auth=AUTH,
)
r.raise_for_status()
task_id = r.json()["id"]
for _ in range(30): # 最大30回リトライ
r = requests.get(
f"{BASE}/api/integration/v1/document/export/{task_id}",
auth=AUTH,
)
if r.status_code == 200 and r.content:
with open(out_path, "wb") as f:
f.write(r.content)
return
time.sleep(10) # 生成待ち
raise TimeoutError("エクスポートが完了しませんでした")
進捗の検知には2つの方法があります。
- ポーリング:ドキュメントの状態やプロジェクトの統計情報(
/statistics系のエンドポイント)を定期的に確認する。cronで1時間おきに回す程度なら実装も簡単 - コールバック(Webhook):Smartcatのコールバック設定で自前のURLを登録しておくと、ドキュメントのステータス変化などを通知してくれる。リアルタイム性が必要な場合はこちら
パターン①と②を組み合わせると、「原稿を置く→プロジェクトが自動で立つ→完了したら訳文が指定フォルダに落ちてくる」という流れが作れます。翻訳そのものに集中したい方ほど効果が大きい自動化です。
パターン③:AIポストエディットで下訳の質を上げる
ここからが「翻訳の中身」へのAI活用です。Smartcatの事前翻訳(機械翻訳)で下訳を入れてから人間が仕上げるMTPE(機械翻訳+ポストエディット)は一般的なワークフローですが、機械翻訳とポストエディットの間に「AIポストエディット」を1段挟むと、人間が直す量を減らせます。
そのままAIに翻訳させると品質が安定しない理由
「機械翻訳よりClaudeやGPTの方が訳文が自然だから、全部AIに訳させればいい」と思うかもしれませんが、素のAI翻訳には翻訳実務で致命的な弱点があります。用語の一貫性が保てないのです。同じ原語が段落ごとに違う訳語になったり、クライアント指定の用語集を無視したり、過去の納品物と文体が変わったりします。
これはAIが翻訳者として無能だからではなく、用語集・過去訳・スタイルガイドという「案件の文脈」を渡していないからです。逆に言えば、Smartcatに蓄積されている資産(用語集・翻訳メモリ)をAIに渡せば、この弱点は大幅に改善します。
用語集と過去訳を渡してポストエディットさせる
Smartcatの用語集や翻訳メモリはAPIでエクスポートできます(用語集は/api/integration/v1/glossary系、翻訳メモリはTMX形式で/api/integration/v1/translationmemories系のエンドポイント)。これらを取得してプロンプトに含めます。
import anthropic
client = anthropic.Anthropic()
POSTEDIT_SYSTEM = """
あなたはプロのポストエディターです。機械翻訳の訳文を以下のルールで修正してください。
## 絶対ルール
- 用語集にある用語は必ず用語集の訳語を使う(言い換え禁止)
- 数字・型番・URL・タグは原文のまま維持する
- 原文にない情報を足さない、原文にある情報を落とさない
## スタイル
- 過去訳の例に文体・トーンを合わせる(です・ます調/体言止めの使い方など)
- 不自然な直訳(「〜することができます」の連発など)は自然な日本語に直す
## 出力
- 修正後の訳文のみを出力する。解説は不要
"""
def ai_postedit(source: str, mt_output: str, glossary: str, past_examples: str) -> str:
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=4000,
system=POSTEDIT_SYSTEM,
messages=[{
"role": "user",
"content": (
f"## 用語集(原語→訳語)\n{glossary}\n\n"
f"## 過去訳の例(文体の参考)\n{past_examples}\n\n"
f"## 原文\n{source}\n\n"
f"## 機械翻訳の訳文(これを修正する)\n{mt_output}"
),
}],
)
return message.content[0].text
AIポストエディット後も、最終確認は必ず人間が行ってください。特に数字・固有名詞・否定表現の反転は、AIが自信満々に間違える定番ポイントです。位置づけとしては「人間のポストエディット時間を7割減らす工程」であり、「人間を置き換える工程」ではありません。
パターン④:用語集・翻訳メモリの整備をAIに任せる
「用語集を渡せば品質が上がるのは分かったが、その用語集を作る時間がない」——これも AIで解決できます。過去の対訳データ(納品済みの原文・訳文ペア)をClaude CodeやCodexに渡して、こんな依頼をします。
- 「この対訳から、繰り返し出てくる専門用語の対訳ペアを抽出してCSVにして」
- 「同じ原語に複数の訳語が使われている『訳語ゆれ』を一覧にして」
- 「この用語CSVをSmartcatの用語集インポート形式に整形して」
抽出した用語集は、Smartcatの画面からインポートするか、APIのglossary/importで登録できます。一度整備すれば、Smartcat上のCATエディタでの作業でも、パターン③のAIポストエディットでも効いてくる、最も費用対効果の高い「仕込み」です。
翻訳メモリも同様で、TMX形式でエクスポートして「重複や明らかな誤訳セグメントを検出して」とAIに掃除させ、きれいになったものを再インポートするメンテナンスが定期的にできます。
パターン⑤:納品前QAチェックをAIで行う
SmartcatにもQA機能(数値の不一致・タグ欠落などの機械的チェック)はありますが、AIを使うと機械的チェックでは拾えない項目まで検査できます。パターン②で訳文をエクスポートしたあと、納品前に次のようなチェックをかけます。
- 訳抜け・訳し過ぎ:原文にあって訳文にない情報、訳文で勝手に追加された情報
- 用語集準拠:指定訳語が使われているかの全数チェック
- 一貫性:同じ表現・UI文言が文書内で統一されているか
- 数字・単位・日付:桁・単位換算・和暦西暦の整合
- トーン:クライアントのスタイルガイド(敬体・常体、禁止表現)への準拠
ポイントは、チェック結果を「指摘リスト」として出させることです。訳文を直接修正させると意図しない書き換えが混ざるため、QA工程では「セグメント番号・問題点・修正案」の表を出させて、採否は人間が判断する形が安全です。これはZendesk記事で紹介した「AIは下書き、人間が最終判断」と同じ設計思想です。
ソフトウェアローカライズならSmartcat CLIも選択肢
アプリのUI文言(JSON、YAML、Android XML、iOS .stringsなど)を翻訳している場合は、Smartcat公式のCLIツールがあります。設定ファイル(.smartcat)にサーバー・プロジェクト・APIキーを書いておけば、リポジトリの文言ファイルのプッシュ(アップロード)とプル(訳文取得)をコマンドで実行でき、CI/CDパイプラインへの組み込みも可能です。
「GitHubにマージされたら未翻訳文言が自動でSmartcatに上がり、翻訳が終わったら自動でPRが作られる」という開発フローと一体化した運用は、REST APIを自作するよりCLI+CIの方が早く構築できます。
注意点:機密文書とAPIの扱い
機密保持契約(NDA)との整合:パターン③〜⑤は翻訳対象のテキストを外部のLLM APIに送信します。翻訳案件はNDAを伴うことが多いため、クライアントとの契約上、第三者のAIサービスにテキストを渡してよいかを必ず確認してください。API経由の利用は一般にモデル学習には使われませんが、それとNDA上の「第三者提供」は別問題です。
APIキーの管理:SmartcatのAPIキーはアカウント全体の操作権限を持ちます。環境変数で管理し、スクリプトに直書きしない・リポジトリにコミットしないを徹底してください。
いきなり本番案件で使わない:まず過去の完了案件のコピーでスクリプトの動作を確認してから、実案件に適用しましょう。特にドキュメントの削除・更新系のAPIは取り返しがつきません。
よくある質問
Q. プログラミングができなくても実践できますか?
この記事のスクリプトはすべてClaude CodeやCodexに書かせられる規模のものです。「Smartcat APIでプロジェクト一覧を取得して」から始めて、動いたら少しずつ要望を足していく進め方なら、コードを自分で書けなくても十分実用レベルに到達できます。APIキーの管理と「削除系の操作はAIに任せない」という原則だけ守ってください。
Q. Smartcat自身のAI翻訳機能と何が違いますか?
SmartcatにもAI翻訳・AIエージェント機能があり、Smartcat内で完結する手軽さがあります。この記事のアプローチは、モデルの選択・プロンプト・用語集の渡し方・QA観点を自分で完全に制御できる点が違いです。Smartcatの事前翻訳で下訳を作り、独自のAIポストエディットとQAを外側で組み合わせる「いいとこ取り」が現実的です。
Q. どのパターンから始めるべきですか?
定型案件が多い方はパターン①②(作業時間の削減が即効で体感できます)、翻訳品質・スピードに課題がある方はパターン④→③の順(用語集を整備してからポストエディットに使う)がおすすめです。パターン⑤のQAは、どのワークフローにも後付けできます。
Q. APIの利用に追加料金はかかりますか?
Smartcat API自体の利用可否や条件はプランによって異なる場合があるため、契約中のプランの最新条件をSmartcatの公式情報で確認してください。なお、パターン③〜⑤で使うClaude APIなどのLLM利用料は別途発生します(翻訳文の分量に比例)。
まとめ
- Smartcatの画面操作の多くはREST API(
/api/integration/v1/...)で自動化できる。認証はアカウントID+APIキーのBasic認証 - 定型作業はパターン①②(プロジェクト作成〜納品ファイル取得)で自動化し、翻訳に集中する時間を作る
- AI翻訳の弱点「用語・文体の不安定さ」は、Smartcatに蓄積された用語集・翻訳メモリをプロンプトに渡すことで大幅に改善する
- 用語集の整備自体もAIに任せられる。最も費用対効果の高い仕込み
- QAは「AIが指摘リストを出し、人間が採否を判断する」形が安全。機密文書はNDAとの整合を必ず確認
まずはAPIキーを発行して、プロジェクト一覧の取得(project/list)から試してみてください。そこが動けば、あとはClaude CodeやCodexとの対話で自動化を積み上げていけます。


