Communitygithub.com

kalash33/adobe-resize-photos-and-videos

Ändert die Größe von Fotos und Videos auf exakte Pixelmaße oder Seitenverhältnisse mit Adobe-Werkzeugen. Verwenden Sie diesen Skill, wenn ein Benutzer Bilder oder Videos skalieren, zuschneiden oder deren Abmessungen ändern möchte.

Was ist adobe-resize-photos-and-videos?

Dieser Skill ermöglicht es KI-Agenten, Fotos und Videos mit Adobe-Werkzeugen auf benutzerdefinierte Abmessungen, Seitenverhältnisse oder benannte Größen (z. B. 4K, HD, A4) zu skalieren. Er unterstützt Plattformen wie Claude Code, Cursor, Codex und andere, die mit dem „Adobe for Creativity“-Connector arbeiten. Der Skill führt den Agenten durch einen mehrstufigen Workflow: Initialisierung, Entitlement-Prüfung, Dateiauswahl (über asset_add_file), Erkennung des Medientyps und Verarbeitung mittels image_crop_and_resize für Fotos oder video_resize für Videos. Er behandelt Batch-Verarbeitung, verschiedene Fit-Modi (Reframe, Pad, Extract bei Fotos; Letterbox, Crop, Stretch bei Videos), intelligente Fokussierung (z. B. auf Gesichter oder benannte Objekte) und stellt die Ergebnisse in einer Vorschau dar, lädt sie in Creative Cloud hoch und erstellt optional ein Firefly-Board. Wichtig: Lokale Dateipfade (/mnt/user-data/uploads/) werden nicht unterstützt; der Agent muss asset_add_file() aufrufen, um eine signierte URL zu erhalten. Für soziale Medien-Formatsets soll stattdessen der Skill adobe-create-social-variations verwendet werden.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kalash33/kstack/tree/HEAD/skills/adobe-adobe-resize-photos-and-videos

In Ihrer bevorzugten KI fragen

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

Dokumentation

Adobe – Fotos und Videos skalieren

Skaliert Bilder oder Videos auf benutzerdefinierte Abmessungen, Seitenverhältnisse oder benannte Größen. Für soziale Medien-Formatsets (Instagram, TikTok usw.) → stattdessen den Skill adobe-create-social-variations verwenden.


Tool-Referenz

SchrittToolHinweise
Dateiauswahl öffnenasset_add_fileGibt presignedAssetUrl, assetId und mediaType zurück
Asset in CC suchenasset_searchErgebnis über asset_add_file für Bilder neu bereitstellen; für Videos direkt id verwenden
PSD/AI renderndocument_render_vectorKonvertiert vor der Skalierung in JPEG
Bild skalierenimage_crop_and_resizeEin Aufruf pro Dimension; standardmäßig reframe
Ausgaben in Vorschau anzeigenasset_preview_fileAlle Ausgaben in einem einzigen Aufruf
In CC hochladen (Start)asset_initialize_file_uploadErster Aufruf im Block-Upload-Pipeline
In CC hochladen (Ende)asset_finalize_file_uploadZweiter Aufruf; gibt signierte CC-URL für das Board zurück
Firefly-Board erstellencreate_firefly_boardimport_adobe_storage mit der finalen URL übergeben
Video skalierenvideo_resizeGibt statusId für Polling zurück
Video-Skalierung abfragenresizeVideoPollDeferred Tool – vor dem Aufruf laden

Workflow

Schritt 0 – Adobe-Tools initialisieren

Zuerst adobe_mandatory_init aufrufen. Dies gibt Dateibehandlungsregeln und Tool-Routing-Hinweise zurück, die für den restlichen Workflow erforderlich sind.

{ "skill_name": "adobe-resize-photos-and-videos", "skill_version": "1.0.1" }

Schritt 1 – Entitlement-Prüfung

Nachdem adobe_mandatory_init bestätigt hat, dass der „Adobe for Creativity“-Connector aktiv ist, prüfen Sie, welche Tools über den Connector verfügbar sind, indem Sie die Liste mit der obigen Tool-Referenz-Tabelle abgleichen.


SOFORTIGE MASSNAHMEN ERFORDERLICH

Schritt 1: Wenn Parameter fehlen oder mehrdeutig sind → den mehrstufigen Erfassungsprozess ausführen (Schritt 2 unten). Schritt 2: Wenn keine Datei hochgeladen ist, Schritt 3 ausführen (asset_add_file({})). Schritt 3: Bild vs. Video erkennen und zum richtigen Workflow leiten (Schritt 5 Bild/Video).


Schritt 2 – Mehrstufige Erfassung

Diesen Schritt ausführen, wenn der Benutzer keine vollständigen Parameter (Typ + Abmessungen + Fit-Modus) angegeben hat. Vollständig überspringen, wenn die Nachricht des Benutzers bereits alle drei enthält.

AskUserQuestion verwenden, um Parameter schrittweise zu erfassen.

Schritt 2a – Typ

AskUserQuestion([{
  question: "Foto oder Video?",
  type: "single_select",
  options: ["Foto", "Video"]
}])

Schritt 2b – Abmessungen

Bei Foto (multi_select – Benutzer kann eine oder mehrere auswählen):

AskUserQuestion([{
  question: "Abmessungen – wählen Sie alle, die Sie benötigen",
  type: "multi_select",
  options: [
    "1080 × 1080 – Instagram Quadrat",
    "1080 × 1350 – Instagram Hochformat",
    "1080 × 1920 – Stories / Reels",
    "1920 × 1080 – YouTube / Querformat",
    "1280 × 720 – YouTube Thumbnail",
    "1200 × 675 – X / Twitter Beitrag",
    "1200 × 630 – Facebook / OG Bild",
    "1080 × 566 – LinkedIn Beitrag",
    "2560 × 1440 – YouTube Banner",
    "3840 × 2160 – 4K / UHD",
    "400 × 400 – Profil / Avatar",
    "2480 × 3508 – A4 Druck (300 dpi)",
    „Benutzerdefiniert – Ich gebe es ein“
  ]
}])

Wenn der Benutzer „Benutzerdefiniert“ auswählt → nachfragen: „Geben Sie Ihre benutzerdefinierten Abmessungen ein (z.B. 1500×800):“

Wenn der Benutzer mehrere Voreinstellungen auswählt → image_crop_and_resize einmal pro Dimension ausführen, dabei dieselbe Quell-URI und dieselben Parameter verwenden. Alle Ausgaben am Ende zusammen in der Vorschau anzeigen.

Bei Video (multi_select – Benutzer kann eine oder mehrere auswählen):

AskUserQuestion([{
  question: "Abmessungen – wählen Sie alle, die Sie benötigen",
  type: "multi_select",
  options: [
    "1080 × 1920 – Reels / TikTok / Stories",
    "1920 × 1080 – YouTube / Querformat",
    "1080 × 1080 – Quadratischer Beitrag",
    "1280 × 720 – YouTube 720p",
    "3840 × 2160 – 4K / UHD",
    "854 × 480 – SD / 480p",
    „Benutzerdefiniert – Ich gebe es ein“
  ]
}])

Wenn der Benutzer mehrere Video-Voreinstellungen auswählt → einen separaten video_resize-Auftrag pro Dimension einreichen, jeden bis zum Abschluss abfragen, alle Ausgaben zusammen in der Vorschau anzeigen.

Schritt 2c – Fit-Modus

Bei Foto (single_select):

AskUserQuestion([{
  question: "Fit-Modus",
  type: "single_select",
  options: [
    "Reframe – zuschneiden, um auszufüllen",
    "Pad – Letterbox, kein Zuschnitt",
    „Extract – Motiv isolieren“
  ]
}])

Bei Video (single_select):

AskUserQuestion([{
  question: "Fit-Modus",
  type: "single_select",
  options: [
    „Letterbox – Seitenverhältnis beibehalten“,
    „Crop – ausfüllen, keine Balken“,
    „Stretch – exakt erzwingen (verzerren)“
  ]
}])

Schritt 2d – Smart Focus (nur Foto)

AskUserQuestion([{
  question: "Smart Focus – worauf soll der Zuschnitt zentriert werden?",
  type: "single_select",
  options: [
    „Motiv“,
    „Gesicht / Porträt“,
    „Oberkörper“,
    „Zentrum (geometrisch)“,
    „Benanntes Objekt – Ich beschreibe es“
  ]
}])

Wenn der Benutzer „Benanntes Objekt“ auswählt → nachfragen: „Beschreiben Sie das Objekt (z.B. 'das rote Auto', 'das Logo'):“

Schritt 2e – Optionen (nur Foto)

AskUserQuestion([{
  question: "Zusätzliche Optionen?",
  type: "multi_select",
  options: [
    „Batch – mehrere Bilder“,
    „Ausgabe: JPEG“,
    „Ausgabe: PNG“
  ]
}])

Schritt 2f – Quelle (nur Video)

AskUserQuestion([{
  question: "Wo befindet sich das Video?",
  type: "single_select",
  options: [
    „Vom Gerät hochladen“,
    „Aus Creative Cloud“
  ]
}])

Schritt 3 – Quelldatei abrufen

Wichtig – /mnt/user-data/uploads/-Pfade sind KEINE verwendbaren URLs. Selbst wenn der Benutzer eine Datei angehängt hat und sie im Kontext unter einem /mnt/user-data/uploads/-Pfad erscheint, können Sie diesen Pfad nicht an ein Adobe-Tool übergeben. Rufen Sie asset_add_file() auf, um die Datei bereitzustellen – /mnt/user-data/uploads/-Pfade können von Adobe-Tools nicht abgerufen werden.

FALSCH  ❌  imageURI: "/mnt/user-data/uploads/photo.jpg"
FALSCH  ❌  imageURI: "file:///mnt/user-data/uploads/photo.jpg"
RICHTIG ✅  asset_add_file() aufrufen → presignedAssetUrl aus dem Auswahlkontext verwenden

Noch keine Datei → die Auswahl sofort öffnen:

asset_add_file()

Typ aus dem zurückgegebenen mediaType erkennen:

  • image/* → BILD-WORKFLOW
  • video/* → VIDEO-WORKFLOW

Schritt 4 – Zielabmessungen ermitteln

Benutzer sagtAuflösung zu
1920×1080, 1920x1080width: 1920, height: 1080
4K3840 × 2160
HD, 1080p1920 × 1080
720p1280 × 720
480p854 × 480
A4 Druck2480 × 3508 (300 DPI Hochformat)
Letter Druck2550 × 3300 (300 DPI Hochformat)
16:9, 1:1, 4:5, 9:16Verhältnis-String → als output: "16:9" übergeben
squareoutput: "1:1"
Nur Breite (800px breit)width: 800, Verhältnis-String verwenden, um Seitenverhältnis beizubehalten

Wenn kein Ziel im Formular und auch keine Angabe in der Benutzernachricht vorhanden ist → nachfragen:

„Welche Abmessungen benötigen Sie? (z.B. 1920×1080, A4, 16:9)“


BILD-WORKFLOW

Schritt 5 (Bild) – Gültige URI-Quellen

Nur diese funktionieren als imageURI:

  • presignedAssetUrl von asset_add_file() ✅
  • outputUrl von einem vorherigen Tool-Aufruf ✅
  • Öffentliche HTTPS-URL vom Benutzer ✅

Nicht als imageURI verwendbar:

  • /mnt/user-data/uploads/-Pfade ❌
  • renditionURL von asset_search direkt ❌
  • file://-URIs ❌
QuelleAuflösung
Hochgeladene Dateiasset_add_file() → presignedAssetUrl
CC-Speicher-Assetasset_search → über asset_add_file() neu bereitstellen → presignedAssetUrl
Vorherige Tool-AusgabeDirekt outputUrl verwenden
PSD / AI-Dateidocument_render_vector (JPEG, 300 DPI) → outputPresignedUrl

Schritt 6 (Bild) – Fit-Modus

AbsichtModusHinweise
„Auf W×H skalieren“ / StandardreframeGrößter Zuschnitt im Zielverhältnis, zentriert – keine Verzerrung
„Kein Zuschnitt“, „Letterbox“, „hineinpassen“padLeeren Raum mit Weiß füllen
„Motiv isolieren“, „enger Zuschnitt“extractEnger Zuschnitt um erkannten Bereich

Standard: reframe. Nur ändern, wenn der Benutzer explizit ist.

⛔ fit: "extract" ist nicht kompatibel mit expliziten { width, height }-Angaben – es dehnt das Bild. Verwenden Sie einen Verhältnis-String oder lassen Sie output weg.


Schritt 7 (Bild) – image_crop_and_resize aufrufen

image_crop_and_resize({
  imageURI: presignedAssetUrl,
  options: {
    output: { width: 1920, height: 1080 },  // oder "16:9"
    fit: "reframe",
    focus: "subject",  // oder "face", "upper_body", { prompt: "the car" }, { x:0.5, y:0.5 }
    quality: 7
  },
  outputFileType: "jpeg"  // oder "png", wenn Transparenz benötigt wird
})
// result.outputUrl → für Vorschau oder Verkettung verwenden

Fokus-Leitfaden:

  • "subject" – Standard; Ganzkörpererkennung, Landschaften, Objekte
  • "face" – Porträts, Kopfaufnahmen
  • "upper_body" – Zuschnitte von der Brust aufwärts
  • { prompt: "the logo" } – benanntes Objekt aus der Benutzereingabe
  • { x: 0.5, y: 0.5 } – geometrischer Mittelpunkt (kein klares Motiv)

Schritt 8 (Bild) – Batch

Wenn Batch im Formular ausgewählt wurde ODER der Benutzer mehrere Dateien bereitgestellt hat:

  1. asset_add_file() für jede Datei aufrufen, um einzelne signierte URLs zu erhalten
  2. image_crop_and_resize für jede mit denselben Parametern aufrufen
  3. Alle outputUrl-Werte sammeln
  4. asset_preview_file mit allen Ausgaben in einem einzigen Aufruf aufrufen

Die Aufrufe werden in dieser Umgebung sequenziell ausgeführt. Bei mehr als 10 Bildern vor dem Start die Bestätigung des Benutzers einholen.

Seitenweise Verarbeitung über mehrere Turns hinweg (Batches >20): Bei großen Stapeln kann der Gesprächskontext gefüllt werden, bevor alle Bilder verarbeitet sind, wodurch Claude mitten im Batch pausiert. Dies ist zu erwarten – kein Fehler. Wenn es passiert:

  • Angeben, wie viele abgeschlossen sind und wie viele noch übrig sind (z.B. „20 / 24 erledigt – sagen Sie 'weiter' für den Rest“)
  • Warten, bis der Benutzer bestätigt, bevor fortgefahren wird
  • Beim Fortsetzen mit dem nächsten unverarbeiteten Bild weitermachen und bis zum Ende fortfahren
  • Alle Ausgaben zusammen in der Vorschau anzeigen, erst nachdem das letzte Bild abgeschlossen ist

Schritt 9 (Bild) – Vorschau + Bereitstellung + Firefly-Board

asset_preview_file({
  assets: [
    { name: "photo_1920x1080.jpg", presignedAssetUrl: result.outputUrl },
    // alle erfolgreichen Ausgaben
  ]
})

In CC speichern + Firefly-Board erstellen

Nach der Vorschau jede Ausgabe mit der Block-Upload-Pipeline in den CC-Speicher hochladen (asset_initialize_file_upload → PUT-Chunk → asset_finalize_file_upload).

Anschließend das Firefly-Board-Tool mit den finalen Ausgabe-URLs aufrufen:

create_firefly_board({
  import_adobe_storage: [
    final_output_url_1,
    final_output_url_2,
    // ...
  ]
})

✅ Bestätigt funktionierend (Stage): import_adobe_storage mit signierten URLs von asset_finalize_file_upload füllt Boards erfolgreich.

❌ Funktioniert nicht: import_generic_assets mit CC URNs (urn:aaid:sc:US:...) – USS-Indizierungsverzögerung führt zu leeren Boards.

Wenn die Board-Erstellung fehlschlägt oder die URL fehlerhaft ist, den Board-Link weglassen (erneute Versuche helfen nicht).

Nach dem Board-Schritt die Zusammenfassung ausgeben:

✅ Erledigt! [N] Bild(er) skaliert und bereit.

📥 Download:
• resized_1920x1080.jpg → <cc_storage_url>
[einzeln auflisten, wenn N ≤ 3, oder einzelnen Ordner-Link, wenn N > 3]

🎯 Im Firefly-Board ansehen → <board_url>   ← weglassen, wenn Board-Erstellung fehlgeschlagen

VIDEO-WORKFLOW

Schritt 5 (Video) – Asset-ID abrufen

Video-Tools benötigen assetId, keine URL.

QuelleVorgehen
Hochladen über asset_add_fileZurückgegebene assetId verwenden
CC-Speicherasset_search mit filters.mediaType: "video/mp4" → Asset id verwenden

Schritt 6 (Video) – Allgemeine Ziele

NameAbmessungen
4K / UHD3840 × 2160
1080p / HD1920 × 1080
720p1280 × 720
480p854 × 480
Hochformat 9:161080 × 1920
Quadrat 1:11080 × 1080

Schritt 7 (Video) – video_resize aufrufen

⚠️ resizeVideoPoll ist ein Deferred Tool – zuerst laden, bevor das Polling versucht wird. Direkte Aufrufe ohne Laden schlagen mit einem Fehler „nicht geladen“ fehl.

video_resize({
  assetId: videoAssetId,
  width: targetW,
  height: targetH,
  mode: "letterbox"  // Standard; siehe Modus-Tabelle unten
})
// Gibt { jobStatus: "pending", statusId } zurück

Modus – exakte API-Werte verwenden (nicht benutzerfreundliche Bezeichnungen):

Benutzer sagtAPI-WertVerhalten
„Anpassen“, „Seitenverhältnis beibehalten“, „Letterbox“"letterbox"Behält das Seitenverhältnis bei, fügt schwarze Balken hinzu (Standard)
„Ausfüllen“, „Zuschneiden zum Ausfüllen“, „Keine Balken“"crop"Schneidet Kanten zu, um das Ziel exakt auszufüllen
„Strecken“, „Exakt erzwingen“"stretch"Verzerrt auf das genaue Ziel

ℹ️ Auto-Reframing für Videos ist in Claude noch nicht verfügbar, aber ständig kommen neue Tools hinzu. Wenn Sie mehr Kontrolle benötigen, versuchen Sie es mit Adobe Premiere.

Polling: das Deferred Tool resizeVideoPoll laden, bevor es aufgerufen wird – direkte Aufrufe schlagen mit „nicht geladen“ fehl.

// Schritt 1: Deferred Tool laden
…

Verwandte Skills