AoE Editor
이 스킬을 사용하여 긴 Age of Empires (AoE) 게임 플레이 녹화 세션을 깔끔한 개별 경기 클립으로 처리하고, 진정성 있는 YouTube 썸네일을 생성하며, 예약된 YouTube 업로드를 관리하세요.
엄격한 안전 및 보안 가드레일
1. 원본 녹화 보존 및 완료 표시
[!IMPORTANT] 원본 녹화를 절대 삭제하지 말고 완료된 파일에
- aoe-editor-done을 추가하세요 에이전트는 어떤 상황에서도 원본 녹화 파일(예:$env:USERPROFILE\Videos\)을 삭제, 제거 또는 덮어쓰면 안 됩니다.
- 처리 중에도 원본은 그대로 유지: 클립이 성공적으로 추출, 검토 또는 YouTube에 업로드된 후에도 원본 세션 영상을 절대 삭제해서는 안 됩니다.
- 완료 후 이름 변경 (
- aoe-editor-done): 소스 녹화의 모든 게임이 편집, 분할, 확인 및 대상 날짜 폴더에 저장된 후, 소스 파일 확장자 앞에- aoe-editor-done을 추가하여 이름을 변경해야 합니다:
- 예시 (
.mp4):2026-10-27 20-35-29.mp4->2026-10-27 20-35-29 - aoe-editor-done.mp4- 예시 (모든 확장자):
<filename>.<ext>-><filename> - aoe-editor-done.<ext>- PowerShell 명령:
$item = Get-Item "<SourcePath>" Rename-Item -Path $item.FullName -NewName "$($item.BaseName) - aoe-editor-done$($item.Extension)"- 이미 완료된 파일 건너뛰기: 처리할 세션 녹화를 스캔하거나 식별할 때, 확장자 앞에
- aoe-editor-done이 있는 파일은 항상 무시하고 건너뜁니다.- 폐기된 게임: 건너뛰거나 폐기된 게임(예: 길이 < 7분)의 경우, 해당 세그먼트 추출을 건너뜁니다. 소스 비디오의 어떤 부분도 자르거나, 잘라내거나, 삭제하지 마십시오.
- 임시 파일 정리만 허용: 임시/스크래치 폴더에 있는 샘플 프레임 JPEG와 같은 임시 스크래치 파일만 정리할 수 있습니다. 소스 비디오 파일은 절대 삭제하지 마십시오.
2. 엄격한 보안 및 자격 증명 보호
[!CAUTION] 자격 증명 또는 토큰 파일을 절대 읽지 마십시오 에이전트는 어떤 상황에서도 자격 증명 파일, 비밀 또는 토큰의 내용을 읽거나, 보거나, 표시하거나 검사해서는 안 됩니다.
- 검사 금지: 특히,
$env:USERPROFILE\Videos\yt-uploader\안에 있는 파일(예:request.token,youtube.token.json,client_secrets.json또는*.token/*.json자격 증명 파일)을 절대 읽거나, 검사하거나, cat, print 또는 출력하지 마십시오.- 실행만 허용:
yutu를 실행할 때는 환경 변수(YUTU_CREDENTIAL,YUTU_CACHE_TOKEN)와 명령줄 플래그로만 호출하십시오. 그것이 읽는 토큰이나 비밀을 절대 검사하거나 출력하지 마십시오.
3. 무인 처리 중 절전 방지 (기본 절전 방지)
워크플로우가 완전히 무인으로 실행될 수 있도록 (감지, 클립 자르기, 썸네일 렌더링 또는 YouTube에 배치 업로드) 사용자 디스플레이는 정상적으로 꺼지거나 절전 모드로 전환되도록 허용하려면:
- 기본 방법 (네이티브 Windows API - 화면 절전 가능):
ES_CONTINUOUS | ES_SYSTEM_REQUIRED(0x80000001) 플래그와 함께 WindowsSetThreadExecutionState를 사용합니다. 이는 Windows에 백그라운드 처리/업로드가 진행 중임을 알려 CPU, 디스크 및 네트워크가 절대 절전 모드로 전환되지 않도록 보장하는 동시에, 모니터는 일반 Windows 전원 설정에 따라 꺼지거나 절전 모드로 전환되도록 허용합니다:$sig = '[DllImport("kernel32.dll", SetLastError=true)] public static extern int SetThreadExecutionState(int esFlags);' $power = Add-Type -MemberDefinition $sig -Name 'PowerHelper' -Namespace 'SystemSleep' -PassThru # 시스템 절전 방지 (디스플레이 절전 허용) $power::SetThreadExecutionState([int]0x80000001) - 절전 잠금 해제: 모든 배치 작업 또는 업로드가 완료되면 실행 상태를 기본 연속 모드로 재설정합니다:
$power::SetThreadExecutionState([int]0x80000000) - 대안 (Caffeine): Caffeine이
caffeine64.exe에 설치되어 있습니다. Caffeine은 59초마다 키보드 입력을 시뮬레이션하므로 모니터를 물리적으로 끄지 않는 한 디스플레이 절전을 방지합니다. 표준 방법으로 위의 네이티브 방법을 사용하십시오. - 권장 시간 / 사용법:
- 배치 작업 기간 동안(특히 업로드, 6-8GB 비디오의 경우 1-3시간 소요 가능) 활성 상태를 유지하고 완료 즉시 해제합니다.
대상 폴더 구조
처리된 모든 게임과 썸네일은 녹화 파일 이름에서 파생된 날짜 형식의 하위 폴더 내 aoe 디렉토리에 저장됩니다:
$env:USERPROFILE\Videos\aoe\<DDMmmYY>\
├── Game 1 - <MyCiv> vs <OpponentCiv> (<Map> - <Result>).mp4
├── Game 1 - <MyCiv> vs <OpponentCiv> (<Map> - <Result>).png # 비디오 이름과 정확히 일치하는 썸네일
├── Game 3 - <MyTeamCivs> vs <OpponentCivs> (<Map> - <Result>).mp4 # (예: Game 2는 <7m으로 폐기됨)
├── Game 3 - <MyTeamCivs> vs <OpponentCivs> (<Map> - <Result>).png
└── ...
날짜 폴더 규칙
- 날짜는 비디오 파일 이름에서 구문 분석됩니다:
YYYY-MM-DD ...- 예:
2026-10-27 20-35-29.mp4->27Oct26 - 예:
2026-10-29 19-46-42.mp4->29Oct26 - 형식:
<일><3-문자 월><2-자리 연도>(예:13Oct26,27Oct26,29Oct26).
- 예:
게임 필터링 및 시간 규칙
-
7분 미만의 짧은 게임 (자동 폐기 / 내보내기 건너뛰기):
- 인게임 시간이 7분 미만인 모든 게임(예: 조기 항복, 연결 끊김, 실패한 시작)은 내보내기에서 건너뛰어야 합니다 (출력 클립으로 추출하거나 저장하지 않음). 원본 소스 비디오의 어떤 부분도 삭제, 자르기 또는 수정하지 마십시오.
- 순차 번호 보존: 폐기된 게임은 녹화 세션에서 자신의 순차 번호를 계속 사용합니다.
- 예: Game 1이 18분, Game 2가 2분(폐기), Game 3이 25분인 경우, 결과 출력 파일은
Game 1 - ...다음에Game 3 - ...이 됩니다. Game 2는 파일 목록에서 건너뛰어 번호가 원래 경기 순서를 정확하게 반영하도록 합니다.
- 예: Game 1이 18분, Game 2가 2분(폐기), Game 3이 25분인 경우, 결과 출력 파일은
-
편파적 / 지루한 게임 (자르기 및 사용자 검토):
- 게임이 매우 편파적이거나 지루해 보이는 경우(예: 초기 대규모 점수 차이, 최소한의 저항/교전, 비경쟁적인 압승):
- 게임을 잘라서 평소처럼 날짜 폴더에 저장하여 로컬 영상을 보존합니다.
- 사용자에게 알림: 클립 세부 정보, 타임스탬프 및 편파적/지루하다고 느낀 이유를 사용자에게 알립니다. YouTube 업로드 대기열에 추가할지 여부를 결정하기 전에 클립을 검토하도록 사용자에게 요청합니다.
- 게임이 매우 편파적이거나 지루해 보이는 경우(예: 초기 대규모 점수 차이, 최소한의 저항/교전, 비경쟁적인 압승):
게임 감지 및 트리밍 규칙
-
클립 시작 지점:
- 로딩 화면이 게임 시작(마을 회관 및 시작 유닛 등장)으로 전환되는 즉시 시작합니다.
-
클립 종료 지점 및 사후 분석:
- 사후 분석 유지: 플레이어가 사후 게임 성과 화면(요약, 군사, 경제, 기술, 사회)을 검토하거나 리플레이 분석을 시청하는 경우, 이를 게임 비디오 클립에 유지합니다.
- 클립은 플레이어가 사후 게임 화면/리플레이를 떠나 메인 메뉴 또는 대기열로 돌아갈 때 종료됩니다.
-
잘라낼 내용:
- 매치메이킹 대기 시간.
- 로비 대기 및 문명 선택 카운트다운 화면.
- 유휴 시간, 데스크톱 검색 또는 자리 비움(AFK) 세그먼트.
엄격한 명명 규칙
1. 로컬 비디오 및 썸네일 파일 이름 (.mp4 / .png)
디스크의 로컬 파일은 로컬 추적, 보관 및 경기 연대순을 위해 명명됩니다:
- 게임 번호: 세션의 순차적 경기 인덱스(
Game 1,Game 2등), <7분 폐기된 경기의 건너뛴 번호를 보존합니다. - 문명:
- 1v1:
Game <N> - <MyCiv> vs <OpponentCiv> (<Map> - <Result/Notes>).mp4- 예:
Game 1 - Ethiopians vs Franks (Arabia - Win).mp4
- 예:
- 팀:
Game <N> - <MyTeamCivs> vs <OpponentCivs> (<Map> - <Result/Notes>).mp4- 예:
Game 3 - Khmer and Franks vs Persians and Bohemians (Arena - Win).mp4
- 예:
- 1v1:
- 썸네일 파일 이름:
.mp4파일 이름과 문자 하나까지 일치해야 하며,.mp4를.png로 바꿉니다.
2. YouTube 비디오 제목 (-title / -metaJSON을 통해 YouTube에 업로드됨)
[!IMPORTANT] YouTube 제목: 승패 스포일러 금지 및 게임 번호 사용 금지 YouTube에 게시되는 제목은 경기 결과를 절대 암시해서는 안 되며 세션 게임 번호를 절대 포함해서는 안 됩니다:
Win또는Loss포함 금지: 시청자에게 경기 결과를 절대 암시하지 마십시오.Game 1,Game 2등 포함 금지: YouTube 시청자는 원시 세션 인덱스가 아닌 독립적인 경기를 탐색합니다.- 표준 YouTube 제목 구문:
<MyTeamCivs> vs <OpponentCivs> AOE2 <MatchFormat> <Map>
- 1v1 형식:
<MyCiv> vs <OpponentCiv> AOE2 1v1 <Map>
- 예:
Khmer vs Bohemians AOE2 1v1 Arena- 예:
Dravidians vs Tatars AOE2 1v1 Arabian Desert- 예:
Ethiopians vs Franks AOE2 1v1 Arabian Desert- 2v2 형식:
<Civ1> & <Civ2> vs <Civ3> & <Civ4> AOE2 2v2 <Map>
- 예:
Khmer & Franks vs Persians & Bohemians AOE2 2v2 Arena- 예:
Khmer & Bengalis vs Malians & Mongols AOE2 2v2 Arena- 3v3 형식:
<Civ1>, <Civ2> & <Civ3> vs <Civ4>, <Civ5> & <Civ6> AOE2 3v3 <Map>
- 예:
Khmer, Bohemians & Goths vs Ethiopians, Romans & Celts AOE2 3v3 Arena- 4v4 형식:
<Civ1>, <Civ2>, <Civ3> & <Civ4> vs <Civ5>, <Civ6>, <Civ7> & <Civ8> AOE2 4v4 <Map>
- 예:
Ethiopians, Franks, Britons & Mayans vs Mongols, Tatars, Turks & Persians AOE2 4v4 Black Forest
진정성 있는 썸네일 및 동적 밈 가이드라인 (.png)
[!IMPORTANT] 썸네일 파일 이름은 비디오 파일 이름과 일치해야 합니다 각 비디오의 썸네일 파일 이름은 비디오 파일 이름과 정확히 일치해야 합니다 (확장자를
.png로 변경):
- 비디오:
Game 1 - Ethiopians vs Franks (Arabia - Win).mp4- 썸네일:
Game 1 - Ethiopians vs Franks (Arabia - Win).png- 비디오:
Game 3 - Khmer and Franks vs Persians and Bohemians (Arena - Win).mp4- 썸네일:
Game 3 - Khmer and Franks vs Persians and Bohemians (Arena - Win).png
기만적인 클릭베이트 또는 반복적인 단일 밈 클리셰를 피하십시오. 썸네일을 실제 일어난 일에 기반을 두고, 밈 편집을 다양하고 유기적으로 유지하며 경기 스토리에 맞추십시오:
1. 임팩트 있는 썸네일 스타일링 및 타이포그래피
모바일 피드 가독성에 최적화된 대담하고 대비가 높은 타이포그래피를 디자인하십시오:
- 크고 강렬한 텍스트: 글꼴 크기는 크고 모바일 피드에서 즉시 읽을 수 있어야 합니다 (1440p의 경우
fontsize=140~160, 다른 해상도에 맞게 조정). 작고 대비가 낮은 텍스트(<100)는 절대 사용하지 마십시오. - 두꺼운 외곽선 및 그림자: 두꺼운 검은색 테두리(
borderw=8~12)와 그림자(shadowx=4:shadowy=4:shadowcolor=black)를 사용하여 텍스트가 모든 배경에서 돋보이도록 하십시오. - 투톤 및 멀티 컬러 텍스트 스타일링: 기본 흰색 단일 텍스트로 설정하지 마십시오. 단어/줄 전체에 걸쳐 대비되고 생생한 색상을 사용하십시오:
- 위쪽 단어는 흰색(
#FFFFFF), 아래쪽/핵심 단어는 생생한 금색/노란색(#FFD700또는#FFE500) 또는 주황색(#FF8C00). - 투톤 레이아웃 예시:
"LETS STEAL" (흰색) / "SOME GOLD!" (노란색)"OUTPOST" (흰색) / "REVENGE!" (주황색)"CASTLE" (흰색) / "MELTERS" (노란색)"WHY MAKE" (흰색) / "THESE?!" (주황색)"SCORPION" (흰색) / "DEATHBALL" (노란색)"CELT SIEGE" (노란색) / "UNSTOPPABLE" (흰색)
- 위쪽 단어는 흰색(
- 동적이고 유연한 텍스트 배치 (엄격한 피사체 여백) :
-
[!IMPORTANT] 텍스트는 초점 유닛 또는 피사체를 절대 가려서는 안 됩니다
- 텍스트 오버레이는 훅에 언급된 초점 유닛, 건물 또는 전술적 이벤트를 절대 가리거나, 폐색하거나, 위에 놓여서는 안 됩니다 (예: 훅이
"SIEGE ELEPHANT BREACH"라고 말하면 공성 코끼리는 100% 보여야 하며 텍스트에 의해 방해받지 않아야 함). - 텍스트는 액션을 가리지 않는 곳(열린 네거티브 공간, 전장의 안개 또는 빈 지형)에 엄격하게 배치하십시오.
- 화면에서 유닛과 전투가 어디에 위치하는지 확인하고, 초점 액션과 피사체 유닛이 완전히 가려지지 않도록 텍스트를 상단 중앙, 상단 왼쪽, 상단 오른쪽 또는 하단 중앙에 동적으로 배치하십시오.
-
2. 액션 프레임 선택 및 시각적-텍스트 입증
- 유휴 기지 프레임 금지: 액션이 다른 곳에서 발생하는 동안 카메라가 평화로운 집 농장, 마을 회관 또는 경제 대기열 위로 물러나는 프레임을 절대 선택하지 마십시오.
- 진행 중인 활성 전투 및 공격 (사후 전투 잔해 또는 빈 폐허 절대 금지) :
- 프레임은 살아있는 활성 전투 또는 진행 중인 공격을 포착해야 합니다: 유닛이 근접전에서 적극적으로 충돌하고, 화살을 쏘고, 공성 발사체를 발사하고, 경제를 약탈하거나 적 기지/성을 공격하는 모습.
- 빈 정적 폐허 금지: 적 유닛이 적극적으로 공격하거나 존재하지 않는 부서진 벽이나 부서진 건물의 프레임을 절대 선택하지 마십시오. 활동 중인 군대가 없는 부서진 벽은 버려지고 정적이며 흥미롭지 않아 보입니다.
- 전투 후 잔해 (바닥의 시체) 금지: 전투가 이미 끝난 후에 찍은 프레임으로, 바닥에 죽은 시체만 보이고 나머지 유닛은 유휴 상태로 서 있는 프레임을 절대 선택하지 마십시오. 전투 중 액션을 포착하고, 후에는 포착하지 마십시오.
- 결과 누출 또는 점수 스포일러 금지:
- 썸네일은 경기 결과를 절대 공개해서는 안 됩니다:
- 채팅에
"Player X resigned"이 표시되거나 점수 상자에 플레이어 이름이 지워진 프레임을 절대 포착하지 마십시오. - 점수 차이 / 기지 압도 누출 금지: 오른쪽 하단 점수 상자가 엄청난 점수 적자(예: 플레이어가 상대 점수의 70-75%)를 표시하는 동시에 플레이어 기지가 폐허/약탈당하고 있는 프레임을 절대 선택하지 마십시오. 이는 시청자에게 손실을 노골적으로 누출하고 긴장감을 망칩니다. 점수와 보드 상태를 모호하게 유지하거나 자르기/깨끗하게 유지하십시오.
- 채팅에
- 모든 썸네일 프레임은 활발하고, 긴장되며, 경쟁적인 게임 플레이 중에 포착되어야 합니다.
- 썸네일은 경기 결과를 절대 공개해서는 안 됩니다:
- 페이스 캠 표정 품질 및 자르기 검사 프로토콜:
- 녹화에 웹캠/페이스 캠 오버레이가 포함된 경우:
- 전용 페이스 캠 검사 (1:1 비율로 자르기 및 확인): 전체 1440p 보기만으로 얼굴 표정을 판단하지 마십시오. 에이전트는 최종 썸네일 프레임을 선택하기 전에 페이스 캠 영역(
crop=390:300:0:890또는 동등한 웹캠 상자)을 1:1 픽셀 규모로 분리하여 자르고 검사해야 합니다. 이는 표정 품질을 완벽하게 확신하기 위함입니다. - 표정 품질 임계값: 페이스 캠 프레임은 관련성, 강도 및 품질을 충족해야 합니다: 반응이 약하거나, 무표정하거나, 술에 취했거나, 방향을 잘못 보거나, 눈을 가늘게 뜨거나, 먹거나, 폰을 보고 있거나, 키보드에서 떨어진 프레임은 거부하십시오.
- 얼굴 우선 순위: 1차 선택은 여전히 게임 액션에 중점을 두어야 합니다. 표정은 선택된 동작을 보완하는 역할을 합니다.
- 전용 페이스 캠 검사 (1:1 비율로 자르기 및 확인): 전체 1440p 보기만으로 얼굴 표정을 판단하지 마십시오. 에이전트는 최종 썸네일 프레임을 선택하기 전에 페이스 캠 영역(
- 녹화에 웹캠/페이스 캠 오버레이가 포함된 경우:
3. 일관된 썸네일 템플릿 변형
[!IMPORTANT] 썸네일 디자인은 경기 결과를 암시하거나 누출하는 것을 피해야 합니다 이미지가 결과를 암시해서는 안 됩니다. 적극적인 전투 또는 긴장된 순간을 보여주되, 명백한 패배 또는 승리 이미지는 피하십시오.
아래 템플릿은 1440p의 ffmpeg drawtext에 최적화되어 있습니다. 해상도에 따라 크기를 조정하십시오:
템플릿 1: 집중된 전투 (전방 액션, 전장 중앙) meme_template: focused_battle action_frame_description: Units actively clashing in melee or shooting in the center of the battlefield. No idle bases. text_position: top, spread across the top edge left_text: (empty, left empty for unit visibility) center_text: "<Meme Line 1>" (White / bold, fontsize=150) right_text: "<Meme Line 2>" (Golden Yellow / bold, fontsize=150) bottom_text: (empty / none)
템플릿 2: 밀집된 혼란 (매우 가까운 전투, 유닛이 화면을 거의 채움) meme_template: tight_chaos action_frame_description: Very close melee where units almost fill the screen. High chaos. text_position: top-center & bottom-center, avoiding the packed center center_text: "<Meme Line 1>" (White / bold, fontsize=155, shadow, top-center) bottom_text: "<Meme Line 2>" (Orange / bold, fontsize=155, shadow, bottom-center) left_text: (empty) right_text: (empty)
템플릿 3: 가까운 전투, 원거리 지원 meme_template: close_melee_ranged_support action_frame_description: Melee units clashing in the mid-foreground with ranged units (archers/cavalry archers) firing from the background in support. text_position: top, but lower than full top edge to leave breathing room around ranged supports center_text: (empty) left_text: "<Meme Line 1>" (White / bold, fontsize=145, top-left corner) right_text: "<Meme Line 2>" (Golden Yellow / bold, fontsize=145, top-right corner) bottom_text: (empty)
템플릿 4: 전진 / 돌진 / 약탈 meme_template: push_rush_raid action_frame_description: Army moving forward aggressively: pushing into an enemy base, raiding villagers, seizing ground. Units are actively moving/attacking, not posturing. text_position: top & bottom edges, leaving central army visible center_text: "<Meme Line 1>" (White / bold, fontsize=160, top-center) bottom_text: "<Meme Line 2>" (Orange / bold, fontsize=160, bottom-center) left_text: (empty) right_text: (empty)
템플릿 5: 총력전 (마지막 스탠드 / 막판 푸시) meme_template: all_in_final_push action_frame_description: Intense, desperate fight: lots of projectiles, explosions, mangonels firing, units dying, high stakes. Usually late-game. text_position: top & bottom, narrower to avoid covering the chaotic action left_text: "<Meme Line 1>" (White / bold, fontsize=160, top-left) center_text: "<Meme Line 2>" (Golden Yellow / bold, fontsize=160, bottom-center) right_text: (empty) bottom_text: (empty)
YouTube 업로드 워크플로우 (yutu)
yutu란 무엇인가?
yutu는 비디오, 썸네일 및 메타데이터를 포함하여 YouTube에 콘텐츠를 게시하는 데 사용되는 명령줄 도구입니다. $env:USERPROFILE\Videos\yt-uploader\에 설치되어 있습니다.
[!CAUTION] NEVER READ CREDENTIAL FILES
yt-uploader디렉토리에서yutu를 찾기 위해 디렉토리를 나열하는 것은 허용되지만,client_secrets.json,request.token또는youtube.token.json파일의 내용을 읽거나, 보거나, cat 또는 인쇄하는 것은 절대 허용되지 않습니다.
YouTube 업로드 명령 실행
모든 게임이 절단되고, 썸네일이 생성되었으며, 준비된 후에만 yutu를 호출하여 비디오를 YouTube에 게시하십시오. yutu를 호출할 때:
$env:YUTU_CREDENTIAL = "value-from-secure-context"
$env:YUTU_CACHE_TOKEN = "value-from-secure-context"
& "$env:USERPROFILE\Videos\yt-uploader\yutu" `
-video <VideoPath> `
-title <YouTubeTitle> `
-thumbnail <ThumbnailPath> `
-description <DescriptionText> `
-metaJSON <MetadataJsonPath> `
-privacyType "private" `
-publishAt <PublishDateTime> `
-playlistIds <PlaylistIds>
YouTube 업로드 규칙
-
YouTube 제목 규칙 준수:
-title값은 위에 정의된 대로 승패 스포일러가 없어야 합니다. -
-metaJSON필드: 설명을 위해 다음 구조의 JSON 파일을 생성하십시오 (경기 및 문명 정보 포함):{ "description": "<DescriptionText>", "tags": ["age of empires 2", "aoe2", "<Map>", "<Result>", "<MyCiv>", "<OpponentCiv>", "1v1" or "team game"] } -
비공개로 업로드 (
-privacyType "private"): 모든 업로드는-publishAt날짜/시간에 예약될 때까지 비공개로 시작되어야 합니다. -
-publishAt시간 규칙:- 게시 시간은 미래의 버퍼링된 시간을 기준으로 설정해야 합니다.
-publishAt형식:YYYY-MM-DDTHH:MM:SSZ(UTC).- 경기 간 최소 간격: 6시간.
- 업로드 시간 사이에는 최소 60초의 지연이 있어야 합니다.
-
재생목록 할당 (
-playlistIds):- 1v1 (게임당 단일 문명):
1v1YouTube 재생목록에 할당하십시오. - 팀 게임 (게임당 여러 문명):
Team GamesYouTube 재생목록에 할당하십시오.
- 1v1 (게임당 단일 문명):
YouTube 큐 검사
YouTube 큐 랜드마크 이해
수동 스크립트 없이 YouTube 업로드 일정을 검사하려면:
방법: 업로드된 게시물의 예약 시간을 읽기 위해 yutu 사용
& "$env:USERPROFILE\Videos\yt-uploader\yutu` ` -listSchedule
예약된 비디오가 있는 경우:
- 모든 게시 시간을 읽습니다.
- 마지막 게시 시간을 식별합니다.
- 가장 최근 예약된 비디오 이후 6시간 후인 미래 시간을 계산합니다.
- 계산된 시간을
-publishAt값으로 사용합니다.
큐가 비어 있거나 예약된 비디오가 없는 경우:
- (날짜 폴더의) 첫 번째 게임 업로드에 대해
Now + 20분에 게시 시간을 설정합니다.
종단 간 워크플로우 요약
- 소스 스캔:
$env:USERPROFILE\Videos\을 스캔하여 녹화를 찾습니다. 이미- aoe-editor-done이 있는 파일을 건너뜁니다. - 날짜 추출 및 폴더 생성: 파일 이름에서
DDMmmYY를 구문 분석합니다.$env:USERPROFILE\Videos\aoe\<DDMmmYY>\를 생성합니다. - 클립 감지 및 트리밍:
ffmpeg를 사용하여 각 게임의 시작/종료 시간을 감지합니다. 대기열, 로비 및 AFK 시간을 자릅니다. - 게임 필터링: 7분 미만의 게임을 건너뜁니다. 편파적인 게임을 플래그 지정하고 사용자 검토를 요청합니다.
- 내보내기: 각 게임을
Game <N> - <Civs> (<Map> - <Result>).mp4로 저장합니다. - 썸네일 생성: 각 게임에 대해
ffmpegdrawtext를 사용하여.png썸네일을 생성합니다. - 소스 표시:
- aoe-editor-done을 소스 파일에 추가합니다. - YouTube 업로드 (선택 사항):
yutu로 큐를 검사합니다.- 스포일러 없는 제목을 준비합니다.
- 설명이 포함된 JSON 메타데이터를 생성합니다.
yutu로 비공개 업로드를 실행하고, 6시간 간격으로 게시를 예약합니다.- 재생목록 (1v1 또는 팀 게임)에 할당합니다.