Communitygithub.com

0xsline/openchatcut

À utiliser lorsqu'un flux de travail de montage ou de création vidéo OpenChatCut nécessite exportation, rendu, téléchargement, partage, livraison finale, export de fichiers de sous-titres, choix du rendu, gestion des ressources locales uniquement ou explication de repli d'exportation.

Qu'est-ce que openchatcut ?

Cette compétence permet de gérer l'exportation de projets vidéo depuis OpenChatCut en utilisant `submit_export` pour les travaux synchrones ou asynchrones, avec `track_export` pour le suivi et la livraison finale. Elle prend en charge l'exportation au format vidéo (H264, VP8), audio (MP3), sous-titres (SRT, TXT), XML (Premiere, DaVinci Resolve), et de graphiques animés en ProRes 4444. La compétence gère automatiquement le téléchargement des fichiers finaux dans le dossier Téléchargements de l'utilisateur, avec des règles de gestion des conflits et de détection des doublons. Elle fournit également des mécanismes de repli explicatifs pour les ressources manquantes et assure la compatibilité avec les workflows locaux et cloud.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/0xsline/openchatcut/tree/HEAD/src/agent/skills/export

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Exportation

Utilisez les outils d'exportation d'OpenChatCut pour la livraison. Une demande d'exportation doit appeler submit_export (ou submit_render_job pour l'asynchrone), puis utiliser track_export pour le statut et la livraison finale lorsque le résultat n'est pas retourné immédiatement.

Politique par défaut :

  • Préférez submit_export lorsque l'utilisateur demande d'exporter/partager/finaliser la timeline OpenChatCut.
  • Conservez les originaux localement par défaut pendant le montage. Ne téléchargez les originaux que lorsqu'une exportation/preuve cloud a besoin de ressources distantes et que l'utilisateur n'a pas interdit le téléchargement.
  • N'encapsulez pas le travail ffmpeg du sandbox comme un outil OpenChatCut. Utilisez ffmpeg du sandbox pour le traitement vidéo complet uniquement lorsque l'utilisateur demande explicitement une opération locale autonome sur fichier en dehors d'un flux de travail de montage OpenChatCut. Pour les tâches de montage OpenChatCut, ne produisez pas un rendu local pré-édité ou aplati comme principale livraison de révision/finale ; utilisez l'exportation OpenChatCut.

Exportation Durable

Utilisez submit_export pour le chemin d'exécution :

{
  "format": "video",
  "codec": "h264",
  "resolution": "1080p",
  "fps": 30,
  "name": "final-cut"
}

Les options de codec vidéo sont h264 (MP4, par défaut) et vp8 (WebM). Les options de fréquence d'images vidéo correspondent à l'interface de l'éditeur : 24, 25, 30, 50 ou 60 ; omettez fps pour correspondre à la timeline. L'exportation audio est en MP3 : passez "format":"audio" et omettez codec / fps sauf si vous passez explicitement "codec":"mp3".

submit_export renvoie un renderId durable. Certains types d'exportation, comme les fichiers de sous-titres, peuvent se terminer immédiatement et renvoyer downloadUrl ; la vidéo/l'audio nécessitent généralement track_export pour attendre la fin.

Après avoir obtenu chaque downloadUrl :

  • Résolvez le dossier Téléchargements de l'utilisateur : ~/Downloads sur macOS/Linux, ou %USERPROFILE%\Downloads sur Windows.
  • Avant de déclencher un téléchargement par agent/navigateur, vérifiez le dossier Téléchargements pour les artefacts de téléchargement Chrome récents des dernières minutes qui correspondent au nom d'exportation attendu, à l'extension ou au nom de base de l'URL de rendu/téléchargement. Incluez à la fois les fichiers terminés et les fichiers en cours .crdownload.
  • Si un .crdownload récent correspondant existe, ne déclenchez pas un autre téléchargement. Attendez que Chrome supprime le suffixe .crdownload et que la taille finale du fichier cesse de changer, puis utilisez ce fichier terminé.
  • Si un fichier terminé récent correspondant existe déjà, utilisez-le directement au lieu de le télécharger à nouveau.
  • Si seuls des fichiers plus anciens existent, traitez-les comme des collisions, pas comme l'exportation en cours.
  • N'écrasez pas un fichier existant ; choisissez un nom de fichier numéroté sûr comme nom (1).mp4 si nécessaire.
  • Téléchargez toujours le fichier d'exportation terminé dans le dossier Téléchargements, pas dans un répertoire temporaire/espace de travail.
  • Affichez toujours la vidéo téléchargée en ligne dans le chat. S'il y a plusieurs vidéos exportées, téléchargez-les toutes et affichez chaque aperçu, pas seulement la première.

Si le projet contient des ressources locales uniquement, téléchargez/enregistrez des remplacements lisibles dans le cloud avant le rendu, ou utilisez le chemin d'exportation CLI locale lorsque l'utilisateur souhaite rester local.

Signalez le renderId renvoyé lorsqu'il est présent. Le travail est également visible dans la file d'exportation en haut à droite de l'éditeur, y compris la progression et l'annulation. Utilisez saveToMediaPool:true lorsque l'utilisateur demande de conserver le résultat dans Mes médias ou lorsque le flux de travail actif utilise par défaut la matérialisation automatique, comme livestream-to-clips ; sinon, la valeur par défaut reste une exportation téléchargeable normale. Pour les vidéos longues, appelez track_export une fois avec action:"wait" et timeoutSeconds:20. S'il renvoie waitExpired:true, signalez que le rendu continue en arrière-plan et terminez le tour. Vérifiez-le plus tard avec action:"status" ; les attentes répétées ne font que maintenir le tour de l'Agent ouvert. Ne démarrez pas une autre exportation pour la même timeline tant que ce rendu est actif.

Utilisez track_export lorsque l'utilisateur demande l'état de l'exportation/rendu, ou lorsque le tour actuel doit vraiment attendre un rendu vidéo/audio soumis. Les exportations de connecteurs terminées renvoient downloadUrl ; pour chaque entrée terminée, téléchargez le fichier vers Téléchargements en utilisant les règles de sécurité ci-dessus et affichez-le en ligne dans le chat :

{
  "action": "status",
  "renderIds": "abc123"
}

Pour la dernière exportation du projet, omettez renderIds et passez "latest": true. track_progress est pour les travaux de génération/transcription/téléchargement, pas pour les travaux de rendu.

Pour le XML NLE, utilisez submit_export avec format:"xml" :

{
  "format": "xml",
  "nleFormat": "fcp_xml_resolve",
  "timelineId": "abc123"
}

Les valeurs de nleFormat sont fcp_xml pour le XML Premiere (par défaut) et fcp_xml_resolve pour le XML DaVinci Resolve. Omettez timelineId pour la timeline active, ou passez un id/prefixe de timeline pour une timeline non active. Lisez et signalez les avertissements : les légendes, les solides, les SVG, les attributs de clip non pris en charge et les graphiques animés non rendus peuvent être supprimés par le format XML. Les graphiques animés ne sont représentés en XML que lorsqu'un flux d'exportation MG ProRes transparent fournit motionGraphicRenderKeys ; sinon, l'exportateur les signale comme supprimés.

Pour le téléchargement de source de médiathèque, utilisez request_asset_download sur un actif source basé sur fichier. Il renvoie une URL/chemin de téléchargement backend gardé pour les fichiers médias sources originaux. N'utilisez pas pull_asset pour les téléchargements utilisateur ; pull_asset est réservé au sandbox.

Pour les fichiers de sous-titres, utilisez submit_export avec format:"subtitles" :

{
  "format": "subtitles",
  "subtitleFormat": "srt"
}

Les formats sont srt et txt. L'exportation utilise le minutage réel des mots de la timeline de l'élément de légende, la portée de la source, les variantes de traduction, les remplacements de texte d'affichage et les champs de rythme tels que wordsPerPage / maxCharactersPerLine, et crée un travail d'exportation téléchargeable durable. Il est approprié pour les fichiers de sous-titres téléchargeables. Il ne réutilise pas encore le planificateur de pages de légendes Remotion du navigateur, donc les sauts de ligne visuels/sauts de page sont corrects en termes de minutage mais approximatifs plutôt qu'identiques octet par octet à la pagination des légendes incrustées. Pour les timelines non actives, passez timelineId depuis manage_timelines ou read_project.

Pour un graphique animé en ProRes 4444 transparent, utilisez export_motion_graphic_prores :

{
  "itemId": "abc123",
  "filenameMode": "asset"
}

Préférez itemId lors de l'exportation d'une instance de timeline spécifique, car l'élément porte des propertyOverrides en direct tels que le texte modifié. Utilisez assetId pour un graphique animé de la médiathèque ; le backend utilisera la première instance de timeline pour cet actif lorsqu'elle est présente, correspondant au comportement d'exportation de la médiathèque de l'éditeur. Pour plusieurs graphiques animés, passez itemIds ou assetIds en un seul appel. Chaque graphique animé devient toujours un rendu durable séparé ; utilisez track_export avec les renderIds renvoyés pour attendre, puis téléchargez via chaque chemin de téléchargement de rendu renvoyé.

Lors de la préparation d'un XML qui doit référencer des graphiques animés rendus, passez "filenameMode":"xml" et le même timelineId à export_motion_graphic_prores, puis conservez la motionGraphicRenderKey / les motionGraphicRenderKeys renvoyées ; une fois le rendu terminé, passez ces clés et le même timelineId dans submit_export.motionGraphicRenderKeys avec format:"xml".

Rendu local (cette build)

Tout le rendu est local : submit_export / submit_render_job pilotent le service de rendu local (Chrome sans tête sur le même état de timeline que celui affiché par l'éditeur), lisant les médias directement depuis /media/uploads/ sur le disque. Il n'y a pas d'exigence S3, pas de CLI et pas de travail cloud à attendre pour les ressources basées sur le disque.

  • submit_export : les sous-titres/XML sont renvoyés de manière synchrone ; la vidéo/l'audio sont également rendus en appel dans cette build (les timelines longues peuvent prendre du temps — prévenez l'utilisateur au lieu d'interroger).
  • submit_render_job + track_export : la voie asynchrone — renvoie un renderId immédiatement, interrogez avec track_export (renderIds / latest / onlyActive), puis remettez le chemin de téléchargement renvoyé à l'utilisateur.
  • Les ressources encore sur les espaces réservés blob: (téléchargement en vol) ne sont pas encore rendues — attendez que track_progress target=upload signale qu'elles sont prêtes avant de soumettre.

Replis

Si un rendu échoue parce que les octets d'une ressource sont manquants (espace réservé jamais relié, fichier supprimé du disque) :

  1. Demandez à l'utilisateur de relier la ressource dans mes médias (bannière ressources hors ligne) ou de réimporter le fichier.
  2. Pour les médias provenant d'URL, réexécutez download_media pour restaurer les octets, puis soumettez à nouveau.

Ne dites pas à l'utilisateur qu'il doit comprendre HTML-in-Canvas, Remotion ou les détails de stockage, sauf en cas de débogage. Expliquez au niveau du produit :

  • "exportation locale rapide"
  • "les ressources sont encore en cours de téléchargement, attendez avant d'exporter"
  • "vous devez d'abord relier la ressource locale"

Trace de résultat

Pour submit_export, enregistrez :

  • renderId
  • timeline/plage/résolution/codec/fps
  • que l'utilisateur peut télécharger depuis le panneau des travaux de rendu de l'éditeur

Enregistrez les ID de ressources téléchargés et tout repli essayé lorsque l'exportation cloud a été bloquée par des ressources locales uniquement.

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

0xsline/openchatcut

Connect an MCP-capable coding agent to OpenChatCut and edit local video projects. Use when the user asks to install, connect, or set up OpenChatCut; inspect or edit an OpenChatCut project; work with its timeline, transcript, captions, media, generation, motion graphics, audio, color, or export tools; or recover from an OpenChatCut MCP error.

0xsline/openchatcut

Use when acquiring or importing media into a OpenChatCut project asset library for video editing or creation, including local/attached videos, user-provided paths, public media URLs, web video/audio/image assets, upload fallback decisions, and deciding between import_media, download_media, or manual user action.

0xsline/openchatcut

AI image generation via Fal.ai, gpt-image-2, nano-banana, MiniMax image-01, and xAI Grok Imagine. Use when the user wants to generate or create an image / picture / still.

0xsline/openchatcut

Use when a OpenChatCut tool call fails or returns an unexpected shape.

0xsline/openchatcut

Music generation via Mureka, MiniMax, Atlas Cloud, and Sonilo. Use for instrumentals, songs, soundtracks, track/stem generation, covers, or video-conditioned scoring of the finished cut through `submit_music`.

0xsline/openchatcut

OpenChatCut product knowledge — UI layout, editor features, and how generation providers are configured. Use when the user asks about the product interface, how to use a feature, where to find something, or needs GUI guidance for something the agent cannot do directly. Also use as fallback when a task fails and the user needs to complete it manually in the UI. NOT for live project-state queries ("where are my folders?", "what's on my timeline?", "where is clip X?") — those are answered by `read_project`, not by this skill.

0xsline/openchatcut

AI shader generator for WebGL video effects, transitions, masks, and color grading (LUT / 调色 / 电影感 / film look). Use when the user wants a video effect (滤镜 / 特效), a transition (转场 / crossfade / wipe / cube / 3d), a mask (蒙版 / 遮罩 / reveal), a zoom / push-in (推近 / 推镜头), or a color grade — try the built-in effects (zoom, builtin LUTs) before generating a new shader.

0xsline/openchatcut

Use when checking whether agent edits are reflected in the OpenChatCut project and editor.

0xsline/openchatcut

AI video generation via Fal.ai, Seedance 2.0, Kling, MiniMax Hailuo, xAI Grok Imagine, and OFox. Use when the user wants to generate a video clip — text-to-video, image-to-video, first/last-frame transitions, reference-guided generation, multi-shot, or generatively editing / extending an existing clip.

0xsline/openchatcut

Text-to-Speech (TTS), voiceover, narration placement/sync, and custom sound effects (SFX) generator. Use when the user wants generated speech from text, wants to add/replace/align narration or voiceover for an existing video/timeline, wants to keep existing voiceover synced after visual retiming edits, needs voice audition/selection, or explicitly wants a newly generated/custom sound effect that is not available in the Sound Effects library.

0xsline/openchatcut

Use when the agent should ask the user for structured input with an in-chat form, including single-select, multi-select, text fields, style pickers, or voice audition choices.

Skills associés