Que fait AoE Editor ?
Utilisez ce skill pour traiter de longues sessions d'enregistrement de gameplay Age of Empires (AoE) en clips de matchs individuels propres, générer des miniatures YouTube authentiques et gérer les téléversements YouTube planifiés.
Garde-fous stricts de sécurité et de sûreté
1. Préservation de l'enregistrement source et marquage de fin de traitement
[!IMPORTANT] NE JAMAIS SUPPRIMER LES ENREGISTREMENTS SOURCES — MARQUER LES FICHIERS TERMINÉS AVEC
- aoe-editor-doneEn AUCUN cas l'agent ne doit supprimer, retirer ou écraser les fichiers d'enregistrement source originaux (par ex. dans$env:USERPROFILE\Videos\).
- La source reste intacte pendant le traitement : Même après l'extraction, la révision ou le téléversement réussi des clips sur YouTube, la session source originale ne doit jamais être supprimée.
- Renommage à la fin du traitement (
- aoe-editor-done) : Une fois que toutes les parties d'un enregistrement source ont été éditées, découpées, vérifiées et sauvegardées dans le dossier de destination daté, le fichier source DOIT être renommé en ajoutant- aoe-editor-doneavant son extension :
- Exemple (
.mp4) :2026-10-27 20-35-29.mp4->2026-10-27 20-35-29 - aoe-editor-done.mp4- Exemple (toute extension) :
<filename>.<ext>-><filename> - aoe-editor-done.<ext>- Commande PowerShell :
$item = Get-Item "<SourcePath>" Rename-Item -Path $item.FullName -NewName "$($item.BaseName) - aoe-editor-done$($item.Extension)"- Ignorer les fichiers déjà terminés : Lors de l'analyse ou de l'identification des enregistrements de session à traiter, ignorez et sautez toujours tout fichier qui a déjà
- aoe-editor-doneavant son extension.- Parties écartées : Pour les parties qui sont sauté ou écartées (par ex. durée < 7 minutes), il suffit de ne pas extraire ce segment. Ne jamais couper, tronquer ou supprimer quoi que ce soit de la vidéo source.
- Nettoyage temporaire uniquement : Seuls les fichiers temporaires (comme les échantillons JPEG dans un dossier temporaire) peuvent être nettoyés. Ne jamais supprimer les fichiers vidéo sources.
2. Protection stricte des identifiants et des tokens
[!CAUTION] NE JAMAIS LIRE LES FICHIERS D'IDENTIFIANTS OU DE TOKENS En AUCUN cas l'agent ne doit lire, visualiser, afficher ou inspecter le contenu de tout fichier d'identifiants, secrets ou tokens.
- Zéro inspection : Spécifiquement, NE JAMAIS lire, inspecter, afficher ou sortir tout fichier dans
$env:USERPROFILE\Videos\yt-uploader\(commerequest.token,youtube.token.json,client_secrets.json, ou tout*.token/*.jsonfichier d'identifiant).- Exécution uniquement : Lors de l'exécution de
yutu, ne l'invoquez qu'avec des variables d'environnement (YUTU_CREDENTIAL,YUTU_CACHE_TOKEN) et des indicateurs de ligne de commande. Ne jamais inspecter ni afficher les tokens ou secrets qu'il lit.
3. Prévention du sommeil pendant le traitement non supervisé (Maintien d'éveil natif)
Pour permettre au workflow de fonctionner complètement sans supervision (détection, découpage des clips, rendu des miniatures ou téléversement par lots sur YouTube) tout en permettant à l'écran de l'utilisateur de s'éteindre ou de se mettre en veille normalement :
- Méthode par défaut (API Windows native - L'écran peut dormir) : Utilisez
SetThreadExecutionStatede Windows avecES_CONTINUOUS | ES_SYSTEM_REQUIRED(0x80000001). Cela informe Windows qu'un traitement/ téléversement en arrière-plan est actif, garantissant que le CPU, le disque et le réseau ne se mettent jamais en veille, tout en permettant aux moniteurs de s'éteindre ou de se mettre en veille selon les paramètres d'alimentation Windows normaux :$sig = '[DllImport("kernel32.dll", SetLastError=true)] public static extern int SetThreadExecutionState(int esFlags);' $power = Add-Type -MemberDefinition $sig -Name 'PowerHelper' -Namespace 'SystemSleep' -PassThru # Empêche la mise en veille du système (permet à l'écran de dormir) $power::SetThreadExecutionState([int]0x80000001) - Libération du verrou de sommeil : Une fois que toutes les tâches par lots ou téléversements sont terminés, réinitialisez l'état d'exécution au mode continu par défaut :
$power::SetThreadExecutionState([int]0x80000000) - Alternative (Caféine) : Caféine est installé à
caffeine64.exe. Comme Caféine simule une entrée clavier toutes les 59 secondes, il empêchera la mise en veille de l'écran à moins que le moniteur ne soit physiquement éteint. Utilisez la méthode native ci-dessus comme standard. - Durées / Utilisation recommandées :
- Restez actif pendant la durée du travail par lots (en particulier les téléversements, qui peuvent prendre 1 à 3 heures pour 6 à 8 Go de vidéo), et libérez immédiatement après la fin.
Structure du dossier de destination
Toutes les parties traitées et leurs miniatures sont sauvegardées dans le répertoire aoe dans un sous-dossier formaté avec la date dérivée du nom du fichier d'enregistrement :
$env:USERPROFILE\Videos\aoe\<DDMmmAA>\
├── Partie 1 - <MaCiv> vs <CivAdverse> (<Map> - <Résultat>).mp4
├── Partie 1 - <MaCiv> vs <CivAdverse> (<Map> - <Résultat>).png # Miniature correspondant exactement au nom de la vidéo
├── Partie 3 - <MesCivsEquipe> vs <CivsAdverses> (<Map> - <Résultat>).mp4 # (ex. Partie 2 était <7m donc écartée)
├── Partie 3 - <MesCivsEquipe> vs <CivsAdverses> (<Map> - <Résultat>).png
└── ...
Règle du dossier de date
- La date est extraite du nom du fichier vidéo :
AAAA-MM-JJ ...- Exemple :
2026-10-27 20-35-29.mp4->27Oct26 - Exemple :
2026-10-29 19-46-42.mp4->29Oct26 - Format :
<Jour><Mois 3 lettres><Année 2 chiffres>(ex.13Oct26,27Oct26,29Oct26).
- Exemple :
Règles de filtrage et de durée des parties
-
Parties courtes de moins de 7 minutes (Auto-écartement / Saut d'exportation) :
- Toute partie avec une durée en jeu inférieure à 7 minutes (ex. abandon précoce, déconnexion, départ échoué) doit être sauté de l'exportation (non extraite ni sauvegardée en tant que clip de sortie). Ne supprimez, tronquez ou modifiez aucune partie de la vidéo source originale.
- Préservation de la numérotation chronologique : Les parties écartées consomment toujours leur numéro chronologique de la session d'enregistrement.
- Exemple : Si la Partie 1 dure 18 min, la Partie 2 dure 2 min (écartée), et la Partie 3 dure 25 min, les fichiers de sortie résultants seront
Partie 1 - ...suivis dePartie 3 - .... La Partie 2 est sautée dans la liste des fichiers afin que les numéros reflètent précisément la séquence originale des matchs.
- Exemple : Si la Partie 1 dure 18 min, la Partie 2 dure 2 min (écartée), et la Partie 3 dure 25 min, les fichiers de sortie résultants seront
-
Parties déséquilibrées / ennuyeuses (Découpage et révision par l'utilisateur) :
- Si une partie semble très déséquilibrée ou ennuyeuse (ex. avance de score massive et précoce, résistance minimale/engagements faibles, écrasement sans compétition) :
- Découpez et sauvegardez la partie dans le dossier de date comme d'habitude pour préserver les images locales.
- Demandez à l'utilisateur : Informez l'utilisateur avec les détails du clip, l'horodatage et la raison pour laquelle il a semblé déséquilibré/ennuyeux. Demandez à l'utilisateur de réviser le clip avant de décider s'il doit être mis en file d'attente pour un téléversement YouTube.
- Si une partie semble très déséquilibrée ou ennuyeuse (ex. avance de score massive et précoce, résistance minimale/engagements faibles, écrasement sans compétition) :
Règles de détection et de découpage des parties
-
Point de début du clip :
- Commencez juste au moment où l'écran de chargement passe au début de la partie (centre-ville et unités de départ apparaissent).
-
Point de fin du clip et analyse post-partie :
- Conserver l'analyse post-partie : Si le joueur révise les écrans de réalisations post-partie (Résumé, Militaire, Économie, Technologie, Société) ou regarde une analyse de rediffusion, conservez cela dans le clip vidéo de la partie.
- Le clip se termine lorsque le joueur quitte l'écran post-partie / la rediffusion pour revenir au menu principal ou à la file d'attente.
-
Ce qui doit être coupé :
- Les temps d'attente dans la file d'attente de matchmaking.
- Les écrans d'attente du lobby et le compte à rebours de sélection des civilisations.
- Tout temps mort, navigation sur le bureau ou segments d'absence du clavier (AFK).
Règles de dénomination strictes
1. Noms de fichiers vidéo et de miniatures locaux (.mp4 / .png)
Les fichiers locaux sur le disque sont nommés pour le suivi local, l'archivage et la chronologie des matchs :
- Numéro de partie : L'index chronologique du match de la session (
Partie 1,Partie 2, etc.), en préservant les numéros sauté pour les matchs écartés de <7 min. - Civilisations :
- 1v1 :
Partie <N> - <MaCiv> vs <CivAdverse> (<Carte> - <Résultat/Notes>).mp4- Exemple :
Partie 1 - Éthiopiens vs Francs (Arabie - Victoire).mp4
- Exemple :
- Équipe :
Partie <N> - <MesCivsEquipe> vs <CivsAdverses> (<Carte> - <Résultat/Notes>).mp4- Exemple :
Partie 3 - Khmers et Francs vs Perses et Bohémiens (Arène - Victoire).mp4
- Exemple :
- 1v1 :
- Nom du fichier miniature : Doit correspondre caractère pour caractère au nom du fichier
.mp4, en remplaçant.mp4par.png.
2. Titres des vidéos YouTube (Téléversées sur YouTube via -title / -metaJSON)
[!IMPORTANT] TITRES YOUTUBE : PAS DE SPOILER VICTOIRE/DÉFAITE ET PAS DE NUMÉROS DE PARTIE Les titres publiés sur YouTube ne doivent JAMAIS révéler le résultat du match et ne doivent JAMAIS inclure les numéros de partie de session :
- NE PAS inclure
VictoireouDéfaite: Ne jamais révéler le résultat du match au public.- NE PAS inclure
Partie 1,Partie 2, etc. : Les spectateurs sur YouTube consultent des matchs individuels, pas des index bruts de session.- Syntaxe standard du titre YouTube :
<MesCivsEquipe> vs <CivsAdverses> AOE2 <FormatMatch> <Carte>
- Format 1v1 :
<MaCiv> vs <CivAdverse> AOE2 1v1 <Carte>
- Exemple :
Khmer vs Bohémiens AOE2 1v1 Arène- Exemple :
Dravidiens vs Tatars AOE2 1v1 Désert Arabique- Exemple :
Éthiopiens vs Francs AOE2 1v1 Désert Arabique- Format 2v2 :
<Civ1> & <Civ2> vs <Civ3> & <Civ4> AOE2 2v2 <Carte>
- Exemple :
Khmer & Francs vs Perses & Bohémiens AOE2 2v2 Arène- Exemple :
Khmer & Bengalais vs Maliens & Mongols AOE2 2v2 Arène- Format 3v3 :
<Civ1>, <Civ2> & <Civ3> vs <Civ4>, <Civ5> & <Civ6> AOE2 3v3 <Carte>
- Exemple :
Khmer, Bohémiens & Goths vs Éthiopiens, Romains & Celtes AOE2 3v3 Arène- Format 4v4 :
<Civ1>, <Civ2>, <Civ3> & <Civ4> vs <Civ5>, <Civ6>, <Civ7> & <Civ8> AOE2 4v4 <Carte>
- Exemple :
Éthiopiens, Francs, Bretons & Mayas vs Mongols, Tatars, Turcs & Perses AOE2 4v4 Forêt Noire
Miniature authentique et directives de mèmes dynamiques (<NomVidéo>.png)
[!IMPORTANT] LE NOM DU FICHIER MINIATURE DOIT CORRESPONDRE AU NOM DU FICHIER VIDÉO Le nom du fichier miniature pour chaque vidéo doit correspondre exactement au nom du fichier vidéo (en remplaçant l'extension par
.png) :
- Vidéo :
Partie 1 - Éthiopiens vs Francs (Arabie - Victoire).mp4- Miniature :
Partie 1 - Éthiopiens vs Francs (Arabie - Victoire).png- Vidéo :
Partie 3 - Khmers et Francs vs Perses et Bohémiens (Arène - Victoire).mp4- Miniature :
Partie 3 - Khmers et Francs vs Perses et Bohémiens (Arène - Victoire).png
Évitez les titres accrocheurs trompeurs ou les tropes de mèmes uniques répétitifs. Basez la miniature sur ce qui s'est réellement passé, en gardant les mèmes variés, organiques et adaptés à l'histoire du match :
1. Style de miniature à fort impact et typographie
Concevez une typographie audacieuse et à fort contraste optimisée pour la lisibilité sur les fils d'actualité mobiles :
- Texte grand et percutant : La taille de la police doit être grande et immédiatement lisible sur les fils mobiles (
fontsize=140à160pour 1440p, adaptée aux autres résolutions). N'utilisez jamais de texte petit et peu contrasté (<100). - Contours épais et ombres portées : Utilisez une bordure noire épaisse (
borderw=8à12) et une ombre (shadowx=4:shadowy=4:shadowcolor=black) pour que le texte ressorte sur n'importe quel arrière-plan. - Style de texte bicolore et multicolore : Ne vous contentez pas d'un texte blanc simple et uni. Utilisez des couleurs vives et contrastées sur les mots/lignes :
- Premier mot en Blanc (
#FFFFFF), Deuxième mot / chute en Or/Jaune vif (#FFD700ou#FFE500) ou Orange (#FF8C00). - Exemples de dispositions bicolores :
"ALLONS VOLER" (Blanc) / "DE L'OR !" (Jaune)"AVANT-POSTE" (Blanc) / "REVANCHE !" (Orange)"CHÂTEAU" (Blanc) / "FONDEURS" (Jaune)"POURQUOI FAIRE" (Blanc) / "ÇA ?!" (Orange)"SCORPION" (Blanc) / "BOULE DE LA MORT" (Jaune)"SIÈGE CELTE" (Jaune) / "INARRÊTABLE" (Blanc)
- Premier mot en Blanc (
- Placement du texte dynamique et flexible (Dégagement strict du sujet) :
-
[!IMPORTANT] LE TEXTE NE DOIT JAMAIS COUVRIR LES UNITÉS FOCALES OU LES SUJETS
- La superposition de texte ne doit JAMAIS couvrir, masquer ou se superposer aux unités focales, bâtiments ou événement tactique nommé dans l'accroche (par exemple, si l'accroche dit
"BRÈCHE D'ÉLÉPHANT DE SIÈGE", les éléphants de siège doivent rester 100% visibles et non obstrués par le texte). - Placez le texte strictement là où il NE couvre PAS l'action (dans l'espace négatif ouvert, le brouillard de guerre ou le terrain vide).
- Vérifiez où se trouvent les unités et les combats à l'écran et positionnez dynamiquement le texte en haut-centre, en haut à gauche, en haut à droite ou en bas-centre afin que l'action focale et les unités sujettes restent complètement dégagées.
-
2. Sélection de l'image d'action et corroboration visuelle-texte
- Zéro image de base inactif : NE JAMAIS sélectionner une image où la caméra est panoramiquée sur des fermes familiales paisibles, des centres-villes ou des files d'attente économiques alors que l'action se déroule ailleurs.
- Combat actif et attaque en cours (JAMAIS l'après-combat ou les ruines vides) :
- L'image DOIT capturer un combat en direct ou une attaque en cours : des unités s'affrontant activement au corps à corps, tirant des flèches, tirant des projectiles de siège, pillant une économie ou assaillant une base/château ennemi.
- PAS de ruines statiques vides : Ne JAMAIS choisir une image de murs brisés ou de bâtiments endommagés où aucune unité ennemie n'attaque activement ou n'est présente. Des murs brisés sans troupes actives semblent abandonnés, statiques et sans intérêt.
- PAS d'après-combat (corps au sol) : Ne JAMAIS choisir une image prise après la fin du combat, montrant uniquement des cadavres/corps au sol avec des unités restantes inactives. Capturez l'action pendant le combat, pas après.
- PAS de fuite de résultat ou de spoiler de score :
- La miniature ne doit JAMAIS révéler le résultat du match :
- Ne JAMAIS capturer d'images montrant
"Joueur X a abandonné"dans le chat ou des noms de joueurs barrés dans la boîte de score. - PAS de disparité de score / de fuite de base submergée : Ne JAMAIS choisir une image où la boîte de score en bas à droite affiche un déficit de score massif (ex. joueur à 70–75% du score de l'adversaire) alors que la base du joueur est en ruines/attaquée. Cela divulgue clairement une défaite au spectateur et ruine le suspense. Gardez le score et l'état du plateau ambigus ou recadrés/propres.
- Ne JAMAIS capturer d'images montrant
- Toutes les images de miniature DOIVENT être capturées pendant un gameplay actif, tendu et compétitif.
- La miniature ne doit JAMAIS révéler le résultat du match :
- Qualité de l'expression de la webcam et protocole d'inspection du recadrage :
- Si l'enregistrement comporte une superposition de webcam / caméra faciale :
- Inspection dédiée de la webcam (Recadrer et vérifier à l'échelle 1:1) : Ne jamais se fier uniquement à une vue complète 1440p pour juger des expressions faciales. L'agent DOIT recadrer et inspecter la zone de la webcam (
crop=390:300:0:890ou boîte de webcam équivalente) isolément à l'échelle de pixel 1:1 avant de fi... [tronqué pour la traduction]
- Inspection dédiée de la webcam (Recadrer et vérifier à l'échelle 1:1) : Ne jamais se fier uniquement à une vue complète 1440p pour juger des expressions faciales. L'agent DOIT recadrer et inspecter la zone de la webcam (
- Si l'enregistrement comporte une superposition de webcam / caméra faciale :