Bild zu editierbarer PPT (Claude Code Port)
Verwenden Sie die gebündelte editppt-Laufzeit, um visuelle Folien zu zerlegen, zu rekonstruieren, zu validieren und als editierbare .pptx zusammenzusetzen. Die Eingabe kann aus einem oder mehreren Bildern, einer PDF-Datei oder einer bildbasierten PPT/PPTX bestehen. Die Ausgabe ist immer eine .pptx mit einer Folie pro eingebener Seite, in der Reihenfolge der Eingabe.
<skill-root> unten bezeichnet das Verzeichnis, das diese SKILL.md enthält.
Wie diese Fähigkeit organisiert ist
Diese Datei wird von Ihnen, dem Orchestrator, gelesen. Die Arbeit auf Seitenebene wird von Seitenrekonstruktoren (Hintergrund-Subagenten oder von Ihnen selbst für eine einzelne Seite) erledigt, die durch einen generierten Prompt gesteuert werden. Jede Regel hat einen autoritativen Ort – folgen Sie dem Verweis, anstatt zu raten:
prompts/page-worker.md– Seitenrekonstruktor-Vorlage: Ownership-Grenze, Lesepfad, Ausführungsreihenfolge, erforderliche Ausgaben, Rückgabeformat. Ausgefüllt vonscripts/build-page-worker-prompt.py.references/cli-helper.md–editppt-Installationsprüfung, Befehlsbaum, Syntax. Lesen Sie diese, wenn Sie einen Befehl auswählen.references/manifest-schema.md– JSON-Verträge für jedes Lauf-/Seitenartefakt. Lesen Sie diese, wenn Sie Lauf-/Seitendateien schreiben oder validieren.references/page-decision-tree.md– Was zu Hintergrund vs. Bild-Asset vs. nativem Text/Form/Tabelle wird, Verwendung von Text-Hinweisen, abschließende Selbstprüfung, Fix-vs-Warnung. Seitenrekonstruktoren lesen dies; Sie brauchen es selten.
Claude Code Laufzeit-Abbildung
Die ursprüngliche Fähigkeit zielt auf Codex. Dies sind die Ersetzungen, die es hier zum Laufen bringen; sie gelten überall dort, wo die Referenzen die Codex-Äquivalente erwähnen.
| Ursprüngliches (Codex) Konzept | In Claude Code |
|---|---|
Eingebaute image_gen.imagegen + Image-Modell-Asset-Sheets | Ersetzt durch das claude-native-Backend. Claude kann Bitmaps sehen, aber nicht generieren, daher zeichnet es Symbole/Illustrationen als SVG nach, behält Fotos als rechteckige Quellbereiche und malt saubere Hintergründe lokal (references/page-decision-tree.md Abschnitt 2.4). Immer mit --image-backend claude-native vorbereiten; niemals mit builtin-imagegen. |
CLI-Bild-API (editppt image generate/edit) | Optionales Upgrade nur, wenn editppt doctor --check-api ein bereites Backend meldet und ein Objekt in keine native Quelle passt. Niemals erforderlich. |
view_image | Read-Tool: Dateipfad des Bildes (source.png, text_hints.png, Zoom- und .compare.png-Bilder, preview.png, split_assets_contact.png). |
| Seitenarbeiter / Subagent starten | Agent-Tool, subagent_type: "general-purpose", run_in_background: true, name: "ppt-<page_id>" (z.B. ppt-page_003). |
Worker-ID für --agent-id | Der gleiche Name, den Sie dem Agenten gegeben haben (ppt-page_003); main für den lokalen Einzelseiten-Modus. |
| Auf Arbeiter warten | Hintergrundagenten benachrichtigen Sie, wenn sie fertig sind. Nicht in einer Schleife abfragen. |
| Reparatur an den Arbeiter senden | SendMessage an den Namen des Arbeiters, damit dieser seinen Kontext behält. |
| Sandbox / Netzwerkfreigabe | Claude Code Berechtigungsaufforderungen. Ein claude-native-Lauf mit lokalen RapidOCR-Hinweisen tätigt überhaupt keine externen Aufrufe. PaddleOCR wird nur aufgerufen, wenn ein Token konfiguriert ist (editppt prepare / editppt run hints); editppt image generate/edit ruft ebenfalls externe Dienste auf, wenn das optionale Upgrade verwendet wird. |
Einstiegsvertrag
Diese Orchestrator-Regeln werden hier einmalig festgelegt.
- CLI zuerst.
editpptist eine erforderliche Laufzeit. Wenneditppt --helpfehlschlägt, installieren Sie es aus<skill-root>/climit dem Pre-Run-Check inreferences/cli-helper.md(bevorzugen Sieuv tool install --force --editable <skill-root>/cli, wennuvexistiert, dannpipx, dannpip --user), führen Sie danneditppt doctoraus. - Zustand nur über die CLI. Beginnen Sie mit
editppt prepare <input...>. Danach gehen Sie jeden Zustandswechsel nur durcheditppt-Befehle voran; schreiben Sie niemals Lauf-/Seitenzustands-JSON von Hand. Dies hält den Lauf deterministisch und fortsetzbar. - Wer Seiten rekonstruiert. Ein Lauf mit genau einer Seite wird von Ihnen im lokalen Modus rekonstruiert, nachdem
editppt run dispatch --localdies beansprucht hat. Läufe mit mehreren Seiten werden von Hintergrund-Seitenarbeitern rekonstruiert – einer pro Seite. Rekonstruieren Sie keine Artefakte mit mehreren Seiten selbst: jede Seite verbraucht viel Kontext (Bilder, Manifeste, Reparaturschleifen), und wenn Sie sie in separaten Arbeitern halten, bleibt Ihr Orchestrierungskontext nutzbar und Seiten können parallel laufen. - Artefakt-Eigentum. Sie schreiben
manifest.json,page.pptx,preview.png,split_assets_contact.png,validation.jsonoderpage_result.jsonnur im lokalen Einzelseiten-Modus, nachdem der--local-Anspruch erfolgt ist. Der lokale Modus folgt demselben Seiten-Prompt, denselben Referenzen, Ausgaben und derrun record-Validierung wie ein Arbeiter. - Bild-Backend. Siehe „Bild-Backend in Claude Code" unten. Wenn keine erlaubte Quelle ein Objekt reproduzieren kann, schlägt die Seitenvalidierung fehl, anstatt ungefähre Formen oder Symbolausschnitte zu ersetzen (
references/page-decision-tree.mdAbschnitt 2). - Autorisierte externe Aufrufe. Eine Anfrage zur Umwandlung von Folien in editierbare PPT autorisiert die für diese Umwandlung erforderlichen OCR-Aufrufe (und, falls konfiguriert, Bild-API-Aufrufe), es sei denn, der Benutzer fordert eine lokale Verarbeitung an oder markiert die Eingabe als vertraulich. Senden Sie nur aufgabenspezifische Seitenbilder, Prompts, Masken und Referenzbilder – niemals nicht zugehörige Dateien oder Anmeldeinformationen. Drittanbieter-Endpunkte sind nur erlaubt, wenn der Benutzer sie konfiguriert oder benannt hat.
- Autonomie. Führen Sie routinemäßige Rekonstruktionen, konfigurierte Fallbacks und seitenlokale Reparaturen ohne Bestätigungsschleifen durch. Halten Sie nur für den Benutzer an, wenn nur er etwas liefern kann (eine OCR-Token-Entscheidung, eine fehlende Eingabe). Melden Sie konkrete Blockaden, anstatt den Benutzer um Fehlersuche zu bitten.
- Objektentscheidungen folgen
references/page-decision-tree.md; deterministische Validierung ist ein Strukturgatter und verzichtet niemals auf eine Objekt-Quellen-Entscheidung. manifest.jsonist die autoritative Seiten-Build-Quelle;run recordvalidiertpage.pptxdagegen, undrun finalizebaut das Deck aus den aufgezeichneten Manifesten neu auf.
Credentials-Hygiene
Geheimnisse (PaddleOCR-Token, optionaler Bild-API-Schlüssel) landen im Transkript, wenn der Benutzer sie in den Chat einfügt. Schlagen Sie dem Benutzer vor, den Konfigurationsbefehl selbst mit dem !-Präfix auszuführen, damit der Wert direkt an die CLI geht, z.B.:
! editppt config --paddle-ocr-token <token>
! editppt config --api-key sk-... --base-url https://api.openai.com/v1 # optionales Bild-API-Upgrade
Wenn sie dennoch einen Schlüssel in den Chat einfügen, speichern Sie ihn mit editppt config und geben Sie ihn niemals zurück; die CLI maskiert ihn in der Ausgabe. Schreiben Sie niemals Schlüssel in das Projekt, das Laufverzeichnis oder das Skill-Verzeichnis.
Bild-Backend in Claude Code
Claude hat Vision, aber keine Bildgenerierung, daher verwendet jeder Lauf das claude-native-Backend: editppt prepare <input...> --image-backend claude-native. Seitenrekonstruktoren wählen dann die Quelle jedes Objekts gemäß references/page-decision-tree.md Abschnitt 2.4:
- Symbole, Logos, Abzeichen, handgezeichnete Markierungen, flache Illustrationen – Claude zeichnet sie als SVG nach (
editppt image zoom, danneditppt image svg). Die PPTX enthält das echte SVG, sodass der Benutzer es in PowerPoint umfärben oder In Form konvertieren verwenden kann, um seine einzelnen Pfade zu bearbeiten. Das macht diese Objekte editierbarer als die Bitmap-Assets der ursprünglichen Fähigkeit. - Fotos, Screenshots, strukturierte Blöcke – werden als rechteckige Quellbereiche beibehalten (
editppt image photo-region). Vektornachzeichnung würde sie in Cartoons verwandeln. - Komplexe Hintergründe hinter rekonstruiertem Text – werden durch lokales Inpainting bereinigt (
editppt image inpaint).
Fragen Sie den Benutzer nicht nach einer Bild-API. Wenn editppt doctor --check-api zufällig ein bereites Backend anzeigt (Codex-Anmeldung oder ein konfigurierter Schlüssel), können Arbeiter editppt image generate/edit als optionales Upgrade für Objekte verwenden, die in keine native Quelle passen, wie z.B. einen fotografischen Ausschnitt auf einem unruhigen Hintergrund. Asset-Befehle innerhalb einer Seite werden seriell ausgeführt.
Arbeitsablauf
Phase 1: Vorbereiten
Lesen Sie die Beispiele in references/cli-helper.md und die Beschreibungen der Lauf-/Seitendateien in references/manifest-schema.md.
editppt prepare <input...> --image-backend claude-native
Behalten Sie das Standardverzeichnis --out-root bei: Es erstellt das Arbeitslaufverzeichnis output/image-to-editable-ppt/<job-id>/ im aktuellen Verzeichnis. Zeigen Sie nicht auf den Ordner, in dem der Benutzer das Ergebnis haben möchte; dieser Ordner sollte nur das endgültige Deck (Phase 4) erhalten. Danach müssen deck_manifest.json, page_jobs.json, notes_manifest.json vorhanden sein, und jede Seite muss source.png plus page_request.json haben.
prepare schreibt auch seitenweise Text-Hinweise (text_hints.json/text_hints.png). Ohne Token stammen sie von lokalem RapidOCR, das den Text auf dem Gerät ohne Upload liest, also fragen Sie den Benutzer nach nichts. Nur wenn prepare das geometrie-basierte builtin-ink-Backend meldet (RapidOCR nicht verfügbar), sollten Sie den Benutzer einmal fragen, bevor Sie eine Seite versenden: Ein kostenloses Token von https://aistudio.baidu.com/account/accessToken, gespeichert mit editppt config --paddle-ocr-token <token>, macht die Hinweise inhaltsbewusst (es liest den Text, nicht nur, wo er ist) und verbessert die Texttreue merklich; editppt run hints <run> regeneriert dann die Hinweise des aktuellen Laufs direkt. Das kostenlose persönliche Kontingent ist für diese Fähigkeit mehr als ausreichend. Warten Sie auf ihre Wahl; wenn sie ablehnen, fahren Sie mit Offline-Hinweisen fort und fragen Sie nicht noch einmal.
Wenn der Benutzer nach Indra OCR fragt (oder nach schnellerer/alternativer lokaler OCR), führen Sie editppt config --text-hints-backend indra aus und installieren Sie die CLI mit dem [indra]-Extra neu (references/cli-helper.md). Erwähnen Sie einmal, dass die Modellgewichte von Indra eine modifizierte OpenRAIL-M-Lizenz mit sich bringen, die bestimmte kommerzielle Nutzungen einschränkt. Wechseln Sie nicht eigenständig dazu: RapidOCR las in Tests Folientext vollständiger.
Wenn ein Token konfiguriert ist, die OCR aber aufgrund einer Berechtigungsaufforderung oder eines Netzwerkfehlers zurückgefallen ist, ist dies nicht der bevorzugte Qualitätspfad: Lassen Sie den Aufruf zu und führen Sie vor der Seitenrekonstruktion erneut editppt run hints <run> aus. Fahren Sie nur dann offline fort, wenn der Benutzer OCR ablehnt, ein erlaubter OCR-Versuch aus einem echten dienstlichen Grund fehlschlägt oder der Benutzer eine lokale Verarbeitung angefordert hat.
Phase 2: Seiten rekonstruieren oder versenden
Rufen Sie wiederholt auf und handeln Sie basierend auf der zurückgegebenen stage:
editppt run next <run> --json
stage=rebuild_page_locally (genau eine Seite). Beanspruchen Sie sie, dann rekonstruieren Sie sie selbst:
python3 <skill-root>/scripts/build-page-worker-prompt.py <run> --page <page_id> --out <abs-run-dir>/pages/<page_id>/worker-prompt.mdeditppt run dispatch <run> --page <page_id> --agent-id main --prompt-file <abs-run-dir>/pages/<page_id>/worker-prompt.md --localReadden generierten Prompt und folgen Sie ihm innerhalb dieses Seitenverzeichnisses, um die gleichen Ausgaben zu erzeugen, die ein Arbeiter erzeugen würde.
stage=dispatch_pages. Für jede vorgeschlagene Seite in dieser Reihenfolge:
- Erstellen Sie den Prompt mit dem Skript, wie oben.
- Starten Sie den Arbeiter mit dem
Agent-Tool –subagent_type: "general-purpose",run_in_background: true,name: "ppt-<page_id>",description: "Rebuild <page_id> as editable PPT", undpromptgesetzt auf:Sie sind ein Seitenrekonstruktor für die Fähigkeit Bild zu editierbarer PPT (Claude Code Port). Lesen Sie <abs-run-dir>/pages/<page_id>/worker-prompt.md und befolgen Sie es genau. Hinweise zu Claude Code: Zeigen Sie Bilder mit dem Read-Tool an; Sie können keine Bitmaps generieren, daher stammen nicht-textuelle visuelle Elemente aus page-decision-tree.md Abschnitt 2.4 (SVG-Nachzeichnungen, Fotobereiche, lokales Inpainting); führen Sie Shell-Befehle mit Bash aus. Bearbeiten Sie keine Dateien außerhalb Ihres Seitenverzeichnisses. - Erst nach erfolgreichem Start:
editppt run dispatch <run> --page <page_id> --agent-id ppt-<page_id> --prompt-file <abs-run-dir>/pages/<page_id>/worker-prompt.md
Starten Sie alle vorgeschlagenen Seiten eines Batches in einer einzigen Nachricht, damit sie gleichzeitig laufen. --out und --prompt-file müssen absolut sein, damit das Seitenverzeichnis nicht doppelt vorangestellt wird. Parallelitätsslots stammen aus page_jobs.json.max_concurrent_pages (Standard 6).
stage=wait. Versendete Seiten sind aktive Leases, keine Leerlauf-Slots. Warten Sie auf Benachrichtigungen über deren Fertigstellung. Stoppen, zurücksetzen oder ersetzen Sie keinen Arbeiter, weil er langsam oder ruhig ist – komplexe Seiten benötigen berechtigterweise 10+ Minuten.
stage=configure_backend. Führen Sie editppt run backend <run> --mode claude-native aus, anstatt des vorgeschlagenen builtin-imagegen/CLI-Vertrags.
Phase 3: Aufzeichnen
Wenn die Benachrichtigung über die Fertigstellung eines Arbeiters eintrifft (oder Sie die lokale Seite abgeschlossen haben):
editppt run record <run> --page <page_id> --agent-id <id>
Dies validiert page.pptx gegen manifest.json und lehnt die Seite ab, wenn positionierten Objekten Quellpixel-Koordinaten fehlen, das Manifest die Seite nicht unabhängig neu erstellen kann oder validation.json nicht das oberste passed: true enthält. Gehen Sie dann zurück zu editppt run next.
Reparaturen. Wenn die Aufzeichnung fehlschlägt, lesen Sie die Fehlerbelege und lassen Sie den Besitzer der Seite nur die betroffenen Artefakte reparieren, erneut validieren (editppt page validate, siehe references/cli-helper.md), und erneut aufzeichnen. Senden Sie im Mehrseiten-Modus die Beweise per SendMessage an den vorhandenen Arbeiter (ppt-<page_id>), anstatt einen neuen zu starten – er hat bereits den Seitenkontext und seine verifizierten Assets. Regenerieren Sie keine konformen Assets, um einen nicht zugehörigen Manifest- oder Tabellenfehler zu beheben.
Zurücksetzen nur, wenn eine Seite eine Neuausführung benötigt: Der Arbeiter endete in einem endgültigen Fehlerzustand, der Benutzer hat abgebrochen oder wiederholte Erreichbarkeitsversuche zeigen keinen Seitenfortschritt. Langsam ist nicht verloren. Nachdem Sie behoben haben, was es blockiert hat:
editppt run reset <run> --page <page_id> --agent-id <id> --confirm-lost
Reset setzt die Seite auf pending zurück; setzen Sie Phase 2 mit einem neuen Prompt und Arbeiter fort. Vorhandene Artefakte bleiben für die Herkunft und selektive Wiederverwendung erhalten.
Wiederholen Sie nur, nachdem Sie eine Eingabe oder Bedingung geändert haben – wiederholen Sie niemals einen identischen fehlgeschlagenen Aufruf. Wenn eine echte Voraussetzung fehlt, bewahren Sie den Fortschritt und melden Sie den konkreten Blocker. Sobald die Ausgaben ihre Prüfungen bestehen, machen Sie weiter; wiederholen Sie keine unveränderte visuelle Qualitätssicherung.
Phase 4: Finalisieren
Wenn run next die Finalisierungs-Phase zurückgibt:
editppt run finalize <run>
Finalize baut das Deck aus jedem aufgezeichneten pages/page_NNN/manifest.json in Seitenreihenfolge neu auf, kopiert .pptx-Referentennotizen unverändert und validiert das Ergebnis: gültiges Paket, Folienanzahl = Anzahl der Eingabeseiten, korrekte PDF/PPTX-Seitenaufteilung.