Communitygithub.com

KiaroSama/Revayat-Skill

Agent-Fähigkeit, ein ganzes Buch in veröffentlichungsreifes Persisch zu übersetzen und eine professionelle Word-Datei zu erstellen: OCR für gescannte und gemischte PDFs, Illustrationen in Originalgröße, Word-native Fußnoten, klickbares Inhaltsverzeichnis, RTL-Typografie und ein gesperrtes Namensglossar. Funktioniert mit Claude Code, Kiro, Codex, Cursor und Cline.

Was ist Revayat-Skill?

Revayat ist eine spezialisierte KI-Agent-Fähigkeit, die die vollständige Übersetzung eines Buches aus dem Englischen (oder anderen Sprachen) ins Persische in Publikationsqualität automatisiert. Sie verwandelt das Ergebnis in ein professionelles Microsoft Word-Dokument (.docx) und bewahrt dabei Layout, Illustrationen in Originalgröße, Word-native Fußnoten, ein klickbares Inhaltsverzeichnis und eine korrekte RTL-Typografie. Die Fähigkeit unterstützt alle Arten von Quell-PDFs: digital, gescannt oder gemischt. Für gescannte und gemischte PDFs integriert sie automatisch OCR (Tesseract) und Bildbereinigung (OCRmyPDF), um hochwertigen Text zu extrahieren und gleichzeitig Illustrationen zu identifizieren. MinerU verbessert die Abbildungserkennung in gescannten Seiten. Der Übersetzungsprozess ist in neun aufeinanderfolgende Schritte unterteilt, die von einem strengen Satz von fünf unveränderlichen Regeln gesteuert werden. Diese Regeln stellen sicher, dass persischer Text nicht umgekehrt wird, dass `@@ id`-Header, Formatierungsmarkierungen (`**fett**`, `*kursiv*`, `` `wörtlich` ``, `[[fn:…]]`) und Glossareinträge exakt erhalten bleiben und dass das Buch nicht gekürzt wird. Ein spezielles Namensglossar mit gesperrten Einträgen und Erstnennungsformatierung stellt die Konsistenz der Charakter- und Ortsnamen im gesamten Werk sicher. Das mehrstufige QA-System (Qualitätssicherung) erkennt fehlende Übersetzungen, verlorene Fußnotenmarkierungen, mögliche Auslassungen, Drift im Glossar und viele andere Probleme und blockiert bei Bedarf den Build, bis die Probleme behoben sind. Es funktioniert plattformunabhängig mit Claude Code, Kiro, Codex, Cursor und Cline und stellt einen vollständigen, zuverlässigen und wiederholbaren Workflow für die professionelle Buchübersetzung bereit.

Funktioniert mit✓Claude Code✓Codex CLI✓Cursor
npx skills add KiaroSama/Revayat-Skill

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Revayat — Übersetzung Englisch → Persisch

Führen Sie die neun Schritte unten in der richtigen Reihenfolge aus. Jeder Schritt ist ein Befehl plus eine Regel, was mit seiner Ausgabe zu tun ist. Improvisieren Sie keine andere Reihenfolge und überspringen Sie keinen Schritt, weil der vorherige in Ordnung schien.

Setzen Sie zwei Variablen einmal und verwenden Sie sie dann überall:

  • SKILL_DIR — der Ordner, der diese Datei enthält. In einem Claude Code Plugin ist es ${CLAUDE_PLUGIN_ROOT}/skills/revayat.
  • WORK — ein Arbeitsordner für dieses Buch, z. B. work/.

Jeder Befehl ist python3 $SKILL_DIR/scripts/revayat.py <phase> ….


Die fünf Regeln, die niemals gebrochen werden dürfen

  1. Kehren Sie persischen Text niemals um, damit er von rechts nach links gelesen wird. Die Richtung wird vom Builder festgelegt. Durch Umkehrung entsteht eine Datei, die bis auf einen Betrachter überall defekt ist.
  2. Erfinden, entfernen, zusammenführen, aufteilen oder ordnen Sie niemals einen @@ id-Header neu. Geben Sie genau die zurück, die Sie erhalten haben.
  3. Entfernen Sie niemals einen [[fn:…]]-, **fett**-, *kursiv*- oder `wörtlich`-Marker. Sie werden gezählt; eine Abweichung führt zum Fehlschlag der Qualitätssicherung.
  4. Bearbeiten Sie book.json niemals von Hand, um eine Übersetzung zu korrigieren. Korrigieren Sie das Arbeitsblatt und führen Sie die Zusammenführung erneut aus.
  5. Kürzen Sie das Buch niemals. Keine Zusammenfassungen, kein Überspringen eines schwierigen Satzes, keine Abschwächung. Wenn ein Schritt fehlenden Inhalt meldet, führen Sie diesen Teil erneut aus.

Schritt 1 — Überprüfen Sie die Werkzeuge

python3 $SKILL_DIR/scripts/revayat.py doctor
  • "ready": true → weiter.
  • "ready": false → führen Sie pip install -r $SKILL_DIR/requirements.txt aus, dann führen Sie doctor erneut aus.
  • optional_tools, das not found anzeigt, ist für jetzt in Ordnung. Schritt 2 wird Ihnen sagen, ob OCR tatsächlich benötigt wird.

Schritt 2 — Extrahieren

python3 $SKILL_DIR/scripts/revayat.py extract "<Eingabedatei>" --out $WORK

Für eine persischsprachige Quelle fügen Sie --ocr-lang fas hinzu. Für andere Sprachen verwenden Sie den Tesseract-Code (deu, fra, ara, …).

Lesen Sie das JSON, das es ausgibt, und folgen Sie der Tabelle:

Was Sie sehenWas zu tun ist
"kind": "digital"nichts; es war keine OCR erforderlich
"kind": "scanned" oder "mixed"OCR wurde automatisch ausgeführt; überprüfen Sie ocr.probe_after.text_share ist über 0.7
ein Fehler, der OCRmyPDF nenntinstallieren Sie es, wie die Nachricht sagt, und führen Sie diesen Schritt erneut aus
clean_scan.cleaned über 0von diesen Seiten wurde ein Farbwasserzeichen entfernt
ocr.warning ist nicht nulllesen Sie ihn; die Datei war dennoch brauchbar, also fahren Sie fort
page_scans_dropped über 0so viele ganzseitige Raster wurden als der Scan selbst erkannt, nicht als Bilder

Der Bereiniger bearbeitet niemals Ihre Datei: Das Original bleibt unberührt und die bereinigte Kopie wird nach $WORK/cleaned.pdf geschrieben, mit einem seitenweisen Eintrag in clean_scan, was entfernt und was belassen wurde. Übergeben Sie --clean-scan off, um es ganz zu überspringen, oder --clean-scan force, wenn ein Stempel überlebt hat.

Wenn das Buch gescannt wurde, führen Sie jetzt diese beiden zusätzlichen Durchgänge durch.

Erkennungssicherheit — ohne sie ist ein falsch gelesenes Wort nicht von einem korrekten zu unterscheiden, weil beide fließend Persisch sind:

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

Dies schreibt source.ocr.json (pro Wort, Zeile, Block und Seite: Box, Konfidenz, Lesereihenfolge und welche Vorverarbeitung ausgeführt wurde) und source.ocr.txt, und stempelt dann jeden Block in book.json mit der Konfidenz der Region, aus der er stammt. Blöcke, die mit low bewertet werden, werden von qa check als ocr-low-confidence gemeldet, und das Akzeptieren eines solchen Blocks bedeutet, das Seitenbild anzusehen. Die Schwellenwerte sind standardmäßig 85 und 60 und verschieben sich mit --high / --low.

Illustrationen in einem Scan — eine gescannte Seite ist ein flaches Bild, daher ist ein Foto darauf kein separates Bild, bis etwas es findet:

mineru -p $WORK/cleaned.pdf -o $WORK/mineru -b pipeline -l arabic
python3 $SKILL_DIR/scripts/revayat.py extract "<Eingabedatei>" --out $WORK   --figures-from-mineru $WORK/mineru

Führen Sie MinerU auf cleaned.pdf aus, nicht auf dem Original, sonst beschneidet es das Wasserzeichen, als ob es eine Abbildung wäre. Nehmen Sie nur die Bilder von MinerU. Sein eigener erkannter Text für Persisch kommt mit den Wörtern und den darin enthaltenen Buchstaben umgekehrt zurück; Tesseract mit fas liest dieselbe Seite korrekt, also bleibt der Text, wo er ist. Verwenden Sie --figures-page-offset N, wenn MinerU über einen Seitenbereich lief.

Sehen Sie sich dann das Ergebnis an, bevor Sie fortfahren:

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

Ignorieren Sie untranslated-block hier — es ist noch nichts übersetzt. Sie suchen nach asset-missing. Wenn stats.text_blocks für ein echtes Buch unter 20 liegt, ist die Extraktion fehlgeschlagen: siehe references/extraction.md.

Schritt 3 — Glossar

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

Der Bericht listet needs_persian auf, die häufigsten zuerst. Öffnen Sie $WORK/glossary.json und füllen Sie für jeden der ersten 20 Einträge vier Felder aus:

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

Lassen Sie first_block_id genau so, wie es ist — die Pipeline verwendet es, um zu entscheiden, welcher einzelne Block den Namen einführt. Bearbeiten Sie es nicht und entscheiden Sie nicht selbst über Ersterwähnungen.

Löschen Sie Einträge, die keine echten Namen sind. Fahren Sie dann fort.

Schritt 4 — Aufteilen in Teile

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

Notieren Sie die Anzahl der Teile. Jedes wird zu einer Übersetzungsaufgabe.

Wenn Sie bereits einige Arbeitsblätter übersetzt haben und sich eine Eingabe seitdem geändert hat, verweigert dies die Ausführung mit "refused": "stale-worksheets", anstatt Ihnen stillschweigend Arbeitsblätter auszuhändigen, die nicht mehr zum Buch passen. Lesen Sie den angegebenen Grund erneut; fügen Sie --force nur hinzu, wenn Sie entschieden haben, dass die vorhandenen Übersetzungen noch gut sind.

Schritt 5 — Übersetzen

Erstellen Sie für jedes $WORK/chunks/chunkNNNN.md $WORK/chunks/out_chunkNNNN.md. Verwenden Sie einen separaten Unter-Agenten pro Teil, wenn Ihre Laufzeitumgebung diese hat, 8 gleichzeitig. Wenn nicht, machen Sie sie nacheinander — das Ergebnis ist dasselbe, nur langsamer.

Geben Sie dem Unter-Agenten genau dies:

Lesen Sie $WORK/chunks/chunkNNNN.md und schreiben Sie $WORK/chunks/out_chunkNNNN.md.

Übersetzen Sie ins Persische. Lesen Sie zuerst $SKILL_DIR/references/translation-policy.md und befolgen Sie es.

Ausgabeformat — dies ist mechanisch, machen Sie es genau richtig:

  • Kopieren Sie jede @@ <id> <art>-Zeile unverändert in derselben Reihenfolge.
  • Setzen Sie die persische Übersetzung in die Zeilen darunter.
  • Geben Sie nichts anderes aus: keine Einleitung, kein Englisch, kein Kommentar, keine Zusammenfassung.

Regeln:

  • Die Tabelle "Namen" ist verbindlich. Wenn eine Zeile sagt "erste Erwähnung, führen Sie es hier ein", verwenden Sie diese längere Form. Überall sonst verwenden Sie die Kurzform. Entscheiden Sie dies nicht selbst — die Tabelle hat es bereits getan.
  • "Umgebender Text" ist nur Kontext. Übersetzen Sie ihn niemals oder kopieren Sie ihn nicht aus.
  • Behalten Sie **fett**, *kursiv*, `wörtlich` und [[fn:…]] genau so, um die entsprechenden persischen Wörter herum. Fügen Sie keine hinzu oder entfernen Sie keine.
  • Übersetzen Sie jede Einheit vollständig. Fassen Sie niemals zusammen oder überspringen Sie nichts.
  • Um eine eigene Fußnote hinzuzufügen: Schreiben Sie [[fn:tr-01]] in den Satz und fügen Sie am Ende einen @@ tr-01 footnote-Block mit seinem Text hinzu. Nur für eine echte kulturelle Referenz oder ein Wortspiel.

Überprüfen Sie jederzeit, was noch übrig ist:

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

Schritt 6 — Zusammenführen

python3 $SKILL_DIR/scripts/revayat.py merge --book $WORK/book.json --chunks $WORK/chunks
FeldBedeutungAktion
"ok": truealles angekommenfahren Sie mit Schritt 7 fort
missing_outputsdiese Teile wurden nie übersetztübersetzen Sie sie
missing_unitsHeader wurden entferntführen Sie diese Teile erneut aus
unknown_unitsHeader wurden erfundenführen Sie diese Teile erneut aus

Das erneute Ausführen der Zusammenführung nach einer Korrektur ist immer sicher.

Schritt 7 — Persische Typografie

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

Nur mechanisch und sicher zweimal auszuführen. Fügen Sie --digits keep hinzu, wenn das Buch lateinische Ziffern behalten muss.

Schritt 8 — Qualitätssicherung, dann bauen

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

Bauen Sie nicht, während "ok" falsch ist. Beheben Sie es nach Fehlercode:

CodeBedeutungAktion
untranslated-blockein Block hat kein Persischübersetzen Sie diesen Teil
footnote-marker-lostein [[fn:…]] wurde entferntführen Sie diesen Teil erneut aus
footnote-marker-inventedein Marker zeigt auf nichtsführen Sie diesen Teil erneut aus
possible-omissionZieltext viel kürzer als Quellelesen Sie ihn; normalerweise ein weggelassener Satzteil
untranslatedEnglisch im Persischen verbliebenführen Sie diesen Teil erneut aus
asset-missing / asset-modifiedein Bild fehlt oder wurde verändertextrahieren Sie erneut
copied-source-runein Satzteil der Quelle lebt im Persischen weiterführen Sie diesen Teil erneut aus
duplicate-translationzwei verschiedene Quellen haben dasselbe Persisch erhalteneine Arbeitsblattantwort wurde zweimal eingefügt; führen Sie beide erneut aus
first-mention-repeatedein Name wird an mehr als einer Stelle eingeführtbehalten Sie die erste, entfernen Sie die restlichen
image-orderBilder sind im Paket in der falschen Reihenfolgebauen Sie neu
bookmarks-missing / bookmark-duplicatedas Inhaltsverzeichnis würde nirgendwohin oder an die falsche Stelle verlinkenbauen Sie neu
emphasis-parity (Warnung)Anzahl fett/kursiv geändertüberprüfen Sie eines; oft in Ordnung
glossary-drift (Warnung)ein gesperrter Name wurde anders wiedergegebenführen Sie diesen Teil erneut aus
ocr-low-confidence (Warnung)die Engine war sich bei diesem Block unsicheröffnen Sie das Seitenbild und vergleichen Sie

Fügen Sie --strict hinzu, um die letzten drei ebenfalls blockierend zu machen, für Publikationsarbeit.

Übersetzen Sie den Titel und Autor des Buches in meta.title_target und meta.author_target in book.json — das ist die eine Handbearbeitung, die erwartet wird, weil es kein Arbeitsblatt dafür gibt.

Dann bauen:

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

Nützliche Flags: --font Tahoma, wenn die Datei auf einem Rechner ohne persische Schriftarten gerendert werden muss; --heading-size source, um die ursprünglichen Überschrift-Punktgrößen zu reproduzieren; --template ref.docx, um Stile von einer vorhandenen Word-Datei zu übernehmen. Vollständige Liste in references/docx-and-ooxml.md.

Schritt 9 — Überprüfen und Berichten

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

Wenn "ok": false, beheben Sie es, bevor Sie dem Benutzer mitteilen, dass die Datei fertig ist.

Dann berichten Sie: wo die Datei ist, wie viele Kapitel, Bilder und Fußnoten sie hat, alles, was die Qualitätssicherung markiert hat und worauf Sie sich entschieden haben, nicht zu reagieren, und diese Einschränkung —

Word fließt Text um, daher kann ein bearbeitbares persisches Dokument nicht seitengetreu mit dem Quell-PDF identisch sein. Bildbytes und physikalische Größe, Kapitelstruktur, Hervorhebungen, Fußnoten und Kapitelverknüpfungen sind exakt.


Referenzen

Lesen Sie diese nur, wenn der Schritt darauf verweist:

  • references/translation-policy.md — was dem übersetzenden Unter-Agenten gegeben werden soll
  • references/persian-typography.md — RTL, ZWNJ, Interpunktion, gemischte Schriften
  • references/extraction.md — OCR-Routing, Wasserzeichen, schwierige Bücher
  • references/glossary-and-voice.md — Namensrichtlinie, Aliasse, Charakterstimme
  • references/docx-and-ooxml.md — jede Build-Option und was sie erzeugt
  • references/troubleshooting.md — die Fehler, auf die Sie am wahrscheinlichsten stoßen

Verwandte Skills