Communitygithub.com

KiaroSama/Revayat-Skill

エージェントスキル。書籍全体を出版品質のペルシア語に翻訳し、プロフェッショナルなWordファイルを生成します。スキャンPDFや混在PDFのOCR処理、イラストの原寸保持、Wordネイティブ脚注、クリック可能な目次、RTL組版、ロックされた用語集に対応。Claude Code、Kiro、Codex、Cursor、Clineで動作します。

Revayat-Skill とは?

Revayatは、英語の書籍全体を出版品質のペルシア語に翻訳し、プロフェッショナルなWord文書(.docx)を自動生成するAIエージェントスキルです。このスキルは、Claude Code、Kiro、Codex、Cursor、Clineなどの複数のAIエージェントプラットフォーム上で動作し、スキャンされたPDFや混合PDFのOCR(Tesseract + OCRmyPDF)、画像の原寸維持、Wordネイティブの脚注、クリック可能な目次、RTL(右横書き)組版、ロックされた名前用語集といった高度な機能を提供します。翻訳プロセスは9つの厳格なステップで構成され、SKILL.mdに詳細なルールが定義されています。ステップには、ツールチェック、テキスト抽出(OCR付き)、用語集作成、チャンク分割、並列翻訳、マージ、ペルシア語組版、品質保証チェック、最終的な.docxファイルのビルドと検証が含まれます。このスキルは、特に出版品質の翻訳を必要とするユーザー向けに設計されており、誤訳や省略、マークアップの損失を防ぐための厳格なルールが適用されます。また、MinerUを使用したスキャン内の図版抽出や、QAチェックによる自動品質保証もサポートしています。

対応✓Claude Code✓Codex CLI✓Cursor
npx skills add KiaroSama/Revayat-Skill

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Revayat — 英語 → ペルシア語 書籍翻訳

以下の9つのステップを順番に実行してください。各ステップはコマンドと、その出力に対して何を行うかのルールで構成されています。順序を変えたり、前のステップが問題なさそうに見えてもステップをスキップしたりしないでください。

2つの変数を一度設定し、その後はすべての場所でそれらを使用します。

  • SKILL_DIR — このファイルが置かれているフォルダ。Claude Codeプラグインの場合は ${CLAUDE_PLUGIN_ROOT}/skills/revayat です。
  • WORK — この書籍の作業フォルダ(例: work/)。

すべてのコマンドは python3 $SKILL_DIR/scripts/revayat.py <stage> … です。


絶対に破ってはいけない5つのルール

  1. ペルシア語のテキストを逆順にしないでください。 方向はビルダーによって設定されます。逆順にすると、1つのビューアでのみ正しく表示され、他のすべての場所で壊れたファイルが生成されます。
  2. @@ id ヘッダーを新しく作成したり、削除したり、結合、分割、並べ替えたりしないでください。 与えられたものをそのまま返してください。
  3. [[fn:…]]、**bold**、*italic*、`verbatim` のマーカーを決して削除しないでください。 これらはカウントされており、不一致があるとQAが失敗します。
  4. 翻訳を修正するために book.json を手動で編集しないでください。 ワークシートを修正してマージを再実行してください。
  5. 書籍を短縮しないでください。 要約、難しい文のスキップ、表現の緩和は一切禁止です。ステップがコンテンツの欠落を報告した場合は、そのチャンクを再実行してください。

ステップ 1 — ツールの確認

python3 $SKILL_DIR/scripts/revayat.py doctor
  • "ready": true → 続行。
  • "ready": false → pip install -r $SKILL_DIR/requirements.txt を実行し、その後 doctor を再度実行します。
  • optional_tools に not found と表示されていても、今は問題ありません。ステップ2でOCRが実際に必要かどうかがわかります。

ステップ 2 — 抽出

python3 $SKILL_DIR/scripts/revayat.py extract "<入力ファイル>" --out $WORK

ペルシア語のソースの場合は、--ocr-lang fas を追加します。他の言語の場合は、Tesseractのコード(deu、fra、ara、…)を使用します。

出力されるJSONを読み、以下の表に従ってください。

表示内容対処方法
"kind": "digital"何もしない。OCRは不要でした。
"kind": "scanned" または "mixed"OCRが自動的に実行されました。 ocr.probe_after.text_share が 0.7 を超えていることを確認してください。
OCRmyPDFを指定するエラーメッセージの指示に従ってインストールし、このステップを再実行してください。
clean_scan.cleaned が0より大きいカラーウォーターマークがそのページ数分削除されました。
ocr.warning がnullではない内容を読んでください。ファイルはまだ使用可能なので、続行してください。
page_scans_dropped が0より大きいその数だけの全ページラスター画像が、スキャン自体(つまり写真ではなく)として認識されました。

クリーナーはあなたのファイルを編集しません。元のファイルはそのまま残り、クリーニングされたコピーが $WORK/cleaned.pdf に書き込まれ、各ページごとに clean_scan に何が削除され、何がそのまま残されたかの記録が残ります。--clean-scan off を指定すると完全にスキップし、--clean-scan force を指定するとスタンプが残っている場合に強制的に適用します。

スキャンされた書籍の場合、今すぐ以下の2つの追加パスを実行してください。

認識信頼度 — これがないと、誤認識された単語と正しい単語の区別がつきません。どちらも流暢なペルシア語だからです。

python3 $SKILL_DIR/scripts/revayat.py ocr-sidecar   --pdf $WORK/ocr.pdf --out $WORK --lang fas --book $WORK/book.json

これにより、source.ocr.json(単語、行、ブロック、ページごとに、ボックス、信頼度、読み順、実行された前処理)と source.ocr.txt が書き込まれ、book.json 内の各ブロックに、その領域の信頼度がスタンプされます。low と評価されたブロックは、qa check によって ocr-low-confidence として報告され、それを受け入れるということは、そのページ画像を確認することを意味します。しきい値はデフォルトで85と60であり、--high / --low で変更できます。

スキャン内のイラスト — スキャンされたページは1つのフラットな画像であるため、その上の写真は、何かが見つけるまでは独立した画像として扱われません。

mineru -p $WORK/cleaned.pdf -o $WORK/mineru -b pipeline -l arabic
python3 $SKILL_DIR/scripts/revayat.py extract "<入力ファイル>" --out $WORK   --figures-from-mineru $WORK/mineru

元のファイルではなく cleaned.pdf に対してMinerUを実行してください。そうしないと、ウォーターマークを図として切り取ってしまいます。MinerUからは画像のみを取得してください。 MinerU自身が認識したペルシア語テキストは、単語とその中の文字が逆順になって返ってきます。Tesseractは fas で同じページを正しく読み取るため、テキストはそのまま残ります。MinerUがページ範囲に対して実行された場合は、--figures-page-offset N を使用してください。

次に、先に進む前に結果を確認してください。

python3 $SKILL_DIR/scripts/revayat.py qa check --book $WORK/book.json --allow-incomplete

ここでは untranslated-block は無視してください。まだ何も翻訳されていません。探しているのは asset-missing です。実際の書籍で stats.text_blocks が20未満の場合、抽出に失敗しています。references/extraction.md を参照してください。

ステップ 3 — 用語集

python3 $SKILL_DIR/scripts/revayat.py glossary scan \
  --book $WORK/book.json --out $WORK/glossary.json

レポートには needs_persian がリストされ、頻度の高い順に表示されます。$WORK/glossary.json を開き、最初の20エントリのそれぞれについて、以下の4つのフィールドを記入してください。

"target":      "الیزابت بنت",
"later_form":  "الیزابت بنت",
"first_form":  "الیزابت بنت (Elizabeth Bennet)",
"locked":      true

first_block_id はそのままにしてください。パイプラインはこれを使用して、どの単一チャンクが名前を導入するかを決定します。編集したり、自分で最初の言及を決定したりしないでください。

実際の名前ではないエントリは削除してください。その後続行します。

ステップ 4 — チャンク分割

python3 $SKILL_DIR/scripts/revayat.py chunk build \
  --book $WORK/book.json --out $WORK/chunks --glossary $WORK/glossary.json

チャンクの数に注意してください。それぞれが1つの翻訳タスクになります。

すでにいくつかのワークシートを翻訳しており、入力が変更された場合、これは静かにワークシートを渡すのではなく、"refused": "stale-worksheets" というエラーで拒否します。その理由を再度読み、既存の翻訳がまだ有効であると判断した場合にのみ --force を追加してください。

ステップ 5 — 翻訳

$WORK/chunks/chunkNNNN.md ごとに、$WORK/chunks/out_chunkNNNN.md を生成します。ランタイムがサポートしている場合は、チャンクごとに個別のサブエージェントを、一度に8つ使用します。サポートしていない場合は、1つずつ実行してください。結果は同じですが、遅くなります。

サブエージェントには、次の内容を正確に与えてください。

$WORK/chunks/chunkNNNN.md を読み、$WORK/chunks/out_chunkNNNN.md に書き込んでください。

ペルシア語に翻訳してください。まず $SKILL_DIR/references/translation-policy.md を読み、それに従ってください。

出力形式 — これは機械的な作業です。正確に行ってください。

  • 各 @@ <id> <kind> 行を変更せずに、同じ順序でコピーしてください。
  • その下の行にペルシア語の翻訳を配置してください。
  • それ以外は出力しないでください。前置き、英語、解説、要約は一切不要です。

ルール:

  • 「名前」テーブルは拘束力があります。行に「初出の場合はここで導入する」とある場合は、その長い形式を使用してください。その他のすべての場所では短い形式を使用してください。この決定を自分で行わないでください。テーブルがすでに行っています。
  • 「周囲のテキスト」はコンテキストのみです。決して翻訳したり、書き出したりしないでください。
  • **bold**、*italic*、`verbatim`、[[fn:…]] を、対応するペルシア語の単語の周囲に正確に保持してください。追加したり削除したりしないでください。
  • すべての単位を完全に翻訳してください。決して要約したりスキップしたりしないでください。
  • 自分で脚注を追加するには: 文中に [[fn:tr-01]] と書き、最後に @@ tr-01 footnote ブロックを追加してそのテキストを記述してください。これは、真に文化的な言及や言葉遊びの場合にのみ使用してください。

任意の時点で残りを確認します。

python3 $SKILL_DIR/scripts/revayat.py chunk status --chunks $WORK/chunks

ステップ 6 — マージ

python3 $SKILL_DIR/scripts/revayat.py merge --book $WORK/book.json --chunks $WORK/chunks
フィールド意味アクション
"ok": trueすべてが配置されましたステップ7に進む
missing_outputsそれらのチャンクは翻訳されていません翻訳する
missing_unitsヘッダーが削除されましたそれらのチャンクを再実行する
unknown_unitsヘッダーが新しく作成されましたそれらのチャンクを再実行する

修正後にマージを再実行しても常に安全です。

ステップ 7 — ペルシア語の組版

python3 $SKILL_DIR/scripts/revayat.py falint fix --book $WORK/book.json

機械的な処理のみで、2回実行しても安全です。書籍でラテン数字を保持する必要がある場合は、--digits keep を追加してください。

ステップ 8 — ゲートチェック、そしてビルド

python3 $SKILL_DIR/scripts/revayat.py qa check \
  --book $WORK/book.json --assets $WORK/assets --glossary $WORK/glossary.json

"ok" が false の間はビルドしないでください。 エラーコードに従って修正してください。

コード意味アクション
untranslated-blockブロックにペルシア語がありませんそのチャンクを翻訳する
footnote-marker-lost[[fn:…]] が削除されましたそのチャンクを再実行する
footnote-marker-inventedマーカーが何も指していませんそのチャンクを再実行する
possible-omissionターゲットがソースよりはるかに短い内容を読む。通常は節の欠落
untranslatedペルシア語の中に英語が残っているそのチャンクを再実行する
asset-missing / asset-modified画像がなくなったか、変更された再抽出する
copied-source-runソースの節がペルシア語内にそのまま存在するそのチャンクを再実行する
duplicate-translation2つの異なるソースが同じペルシア語になったワークシートの返信が2回貼り付けられました。両方を再実行する
first-mention-repeated名前が複数の場所で導入されている最初のものを保持し、残りを削除する
image-orderパッケージ内の画像の順序が間違っている再ビルドする
bookmarks-missing / bookmark-duplicate目次がどこにもリンクしないか、間違った場所にリンクする再ビルドする
emphasis-parity (警告)太字/斜体の数が変更されました1つ確認する。多くの場合問題ありません
glossary-drift (警告)ロックされた名前が異なる形でレンダリングされましたそのチャンクを再実行する
ocr-low-confidence (警告)エンジンがこのブロックの認識に自信がありませんでしたページ画像を開いて比較する

出版作業の場合は、--strict を追加して、最後の3つもブロッキングエラーにします。

書籍のタイトルと著者を book.json の meta.title_target と meta.author_target に翻訳してください。これが例外的に許可される唯一の手動編集です。なぜなら、これらに対応するワークシートがないからです。

次にビルドします。

python3 $SKILL_DIR/scripts/revayat.py build \
  --book $WORK/book.json --assets $WORK/assets --out out/book.fa.docx \
  --font "Vazirmatn" --size 11.5

便利なフラグ: ペルシア語フォントがないマシンでファイルをレンダリングする必要がある場合は --font Tahoma、元の見出しのポイントサイズを再現するには --heading-size source、既存のWordファイルからスタイルを継承するには --template ref.docx。完全なリストは references/docx-and-ooxml.md にあります。

ステップ 9 — 確認とレポート

python3 $SKILL_DIR/scripts/revayat.py qa docx --file out/book.fa.docx --book $WORK/book.json

"ok": false の場合は、ユーザーにファイルの準備ができたと伝える前に修正してください。

次にレポートします。ファイルの場所、章/画像/脚注の数、QAがフラグを立てたが対処しないことを選択した項目、そして以下の制限事項です。

Wordはテキストをリフローするため、編集可能なペルシア語文書はソースPDFとページ単位で同一にすることはできません。画像のバイトデータと物理サイズ、章構成、強調、脚注、章リンクは正確です。


参考文献

ステップがそれらを指している場合にのみ読んでください。

  • references/translation-policy.md — 翻訳サブエージェントに与えるもの
  • references/persian-typography.md — RTL、ZWNJ、句読点、混合スクリプト
  • references/extraction.md — OCRルーティング、ウォーターマーク、難しい書籍
  • references/glossary-and-voice.md — 命名ポリシー、エイリアス、キャラクターボイス
  • references/docx-and-ooxml.md — すべてのビルドオプションとその出力
  • references/troubleshooting.md — 遭遇する可能性が最も高い障害

関連スキル