ai-video은(는) 무엇을 하나요?
하나의 동영상은 하나의 video.json 파일입니다. 음성이 말하는 문장들과, 각 주요 아이디어에 대해 16가지 유형으로 구성된 카탈로그에서 선택된 장면으로 이루어집니다.
scripts/make.mjs 스크립트가 나머지 모든 작업을 수행합니다. 절대 HTML, CSS 또는 애니메이션 코드를 직접 작성하지 마십시오. 유일한 예외는 커스텀 시각 효과가 필요한 단 한 순간(html 유형)입니다.
아이디어 ─► 스크립트(문장) ─► video.json ─► make.mjs ─► 콘택트 시트(검토) ─► --rendu ─► MP4 + 커버 + 게시글 텍스트
JSON 키는 프랑스어(
phrases,texte,scene,voix,marque…)이며, 장면 유형도 프랑스어(titre,chiffre,liste…)입니다. 이 스킬에 표시된 대로 정확히 작성하십시오. 음성이 말하는 텍스트는 모든 언어가 가능합니다.
첫 번째 동영상 전(한 번만)
sh <skill>/scripts/install.sh # node ≥ 18, ffmpeg, python3 확인; <skill>/.venv에 edge-tts 설치
<skill>은 이 파일이 있는 폴더입니다. 첫 실행 시 HyperFrames(npx를 통해), GSAP 및 로고를 다운로드합니다. 이후에는 모든 것이 캐시됩니다.
작업 흐름
- 주제를 한 문장으로. 사용자가 주제를 제공하지 않으면 3개를 제안하고 선택하게 하십시오.
- 스크립트.
references/writing.md를 읽으십시오: 효과적인 훅, 구조, 길이.- 9
14개의 문장과 110170단어를 목표로 하십시오. - 초당 약 2.7단어, 문장 사이 0.35초를 계산하면 130단어는 약 50초입니다.
- 9
- 파일. 사용자 프로젝트에
videos/<id>.json을 작성하십시오. 형식은 아래와 같으며, 전체 카탈로그는references/scenes.md에 있습니다. 미디어 파일은videos/medias/에 넣으십시오. - 빌드.
node <skill>/scripts/make.mjs videos/<id>.json명령어는 렌더링 없이 음성, 페이지, 검사 및 콘택트 시트를 만듭니다(약 1분). - 검토. 하나의 이미지만 여십시오:
videos/rendus/<id>-planche.jpg.- 프레임 1, 각 장면의 끝(모든 요소가 도착한 후), 아웃트로 카드를 보여줍니다.
- JSON을 수정하고 명령어를 다시 실행하십시오. 음성은 캐시됩니다. 변경된 문장만 다시 생성됩니다.
- 렌더링.
--rendu를 추가하십시오. 45초 동영상 기준 약 1분이 소요됩니다. 다음 파일이 생성됩니다:videos/rendus/<id>.mp4;-couverture.jpg(커버, 프레임 1);<id>.txt(제목, 설명, 해시태그 및 고정 댓글 포함).
- 게시.
references/publishing.md를 읽어 게시 시간(대상 국가별), 게시 주기 및 설명을 확인하십시오. 사용자의 명시적인 승인 없이는 절대 게시하지 마십시오.
토큰 절약: 중요한 규칙
이 스킬은 모델이 동영상당 250400줄의 HTML 및 애니메이션 코드 대신 60120줄의 JSON을 작성하기 때문에 저렴합니다. 블라인드 테스트에서 새로운 에이전트가 이 스킬을 읽는 것을 포함하여 약 65,000 토큰으로 완성된 60초 동영상을 제작했습니다. 이 효율성을 유지하려면:
-
make.mjs,lib/*.mjs,style.css또는 생성된index.html을 열지 마십시오. 장면 카탈로그로 충분합니다. 명령어가 실패하고 메시지가 부족한 경우에만 코드를 여십시오. -
해당 단계에 대해서만 참조를 읽으십시오:
단계 참조 작성 writing.md장면 선택 scenes.md음성, 영상 또는 스크린샷 modes.md게시 publishing.md대화에서 이미 읽은 참조는 다시 읽지 마십시오.
-
스크린샷 대신 콘택트 시트 하나. 동영상을 확인하려면
<id>-planche.jpg를 한 번 보십시오. 초당 한 프레임을 가져오거나 MP4를 프레임별로 검사하지 마십시오. -
검사를 신뢰하십시오. 명령어는 HyperFrames 검사(텍스트 오버플로우, 숨겨진 텍스트, 런타임 오류)를 실행하고 몇 줄로 요약합니다.
aucun débordement, aucune erreur는 깨끗함을 의미합니다.- ✗ 줄은 항상 수정해야 합니다.
- ⚠ 줄은 읽을 가치가 있습니다: 텍스트에 영향을 미치면 수정하십시오.
-
배치 작업은 한 번의 명령어로. 먼저 N개의 파일을 작성하십시오. 그런 다음
node make.mjs videos/a.json videos/b.json … --rendu를 백그라운드에서 실행하고 출력을 보지 않고 완료될 때까지 기다리십시오. -
제자리에서 수정. 문제를 수정하려면 JSON에서 해당 문장이나 장면만 변경하십시오. 전체 파일을 다시 작성하지 마십시오.
-
에셋을 찾지 마십시오. 로고(
logo:bitcoin,logo:metamask…)와 45개의 아이콘(icone:cle…)이 내장되어 있습니다. 사용자가 요청한 경우에만 웹에서 이미지를 검색하십시오.
video.json 형식
{
"id": "wallet-key",
"titre": "Your crypto is not in your wallet",
"langue": "en",
"voix": { "nom": "en-US-AndrewMultilingualNeural", "debit": "+4%" },
"marque": { "nom": "BDan", "visuel": "icone:etincelle" },
"prononcer": { "USDT": "U S D T" },
"phrases": [
{ "texte": "Your crypto is not in your *wallet*.",
"scene": { "type": "titre", "lignes": ["Your crypto", "is not in", "your *wallet*"], "visuel": "icone:portefeuille" } },
{ "texte": "The key fits in *twelve words*.",
"scene": { "type": "chiffre", "valeur": "12", "apres": "words", "au": "twelve", "couleur": "accent" } },
{ "texte": "It's called the recovery phrase." }
],
"fin": { "texte": "I'm BDan.", "sous": "Let's talk new tech.", "audio": "medias/signature.wav" },
"publication": { "titre": "…", "legende": "…", "hashtags": ["crypto"], "commentaire": "…" }
}
-
phrases[].texte: 음성이 말하는 그대로의 텍스트입니다.*word*는 강세 단어를 표시합니다: 색상이 있는 이탤릭체로 표시되고, 말할 때 펄스 효과가 있으며, 카메라가 해당 단어로 확대됩니다.- 문장당 최대 하나를 사용하십시오.
-
scene: 새 장면을 시작합니다.- 장면이 없는 문장은 이전 장면을 연장하여 읽을 시간을 확보합니다.
- 필름 모드에서 장면이 없는 문장은 얼굴을 보여줍니다. 이 경우
"scene": "suite"는 장면을 연장합니다.
-
au("at"): 요소가 문장의 해당 단어에서 나타납니다(예:"au": "Ledger").au가 없으면 요소는 자체적으로 분산됩니다: 요소 수만큼 문장이 있으면 문장당 하나씩, 그렇지 않으면 균등한 간격으로 배치됩니다.
-
시각 자료: 장면이 필요로 하는 곳에 사용합니다:
"logo:binance","icone:cadenas","emoji:🔑"또는"medias/screenshot.png"와 같은 경로(.svg파일은 인라인 처리됨). -
voix: 음성입니다.nom은 음성 이름,debit는 속도입니다.fichier는 자체 녹음 파일을 가리킵니다. -
langue: 기본값은"fr"입니다. 영어의 경우"en"으로 설정하고 영어 음성을 함께 사용하십시오. -
marque: 왼쪽 하단의 작은 브랜드 알약입니다.nom은 브랜드 이름,visuel은 로고입니다. -
prononcer: 발음 변환입니다. 화면에 표시되는 텍스트는 변경하지 않고 음성이 단어를 말하는 방식만 변경합니다. -
fin: 아웃트로 카드로,marque로고,texte및sous(부제목)를 포함합니다.audio는 카드에서 녹음된 사인오프를 재생합니다.audio가 없으면 카드는 2초간 무음으로 표시됩니다.
-
titre: 파일의 동영상 이름입니다. YouTube 제목은publication에 넣으십시오. -
선택 사항:
키 효과 musique음악 파일, 음성 아래에서 줄여서 재생 couleurs색상(예: {"accent": "#2f6bff", "accent2": "#5fa3ff"})sons: false전환 시 휙 소리 없음 blanc문장 사이 무음, 기본값 0.35초 pause한 문장 후 추가 무음 sousTitres: false자막 없음 -
문장 1은 항상 장면이 있어야 합니다. 프레임 1은 사람들이 피드에서 보는 커버이므로 짧고 훅이 있는
titre를 사용하십시오.
16가지 장면(매개변수 및 예시는 references/scenes.md에 있음):
| 표시할 내용… | 유형 |
|---|---|
| 훅, 강력한 한 줄 | titre |
| 숫자(가격, 기록, 백분율) | chiffre |
| 2~6개의 포인트, 도구 또는 팁 | liste |
| 2~5단계의 방법 | etapes |
| A 대 B, 전/후, 신화/사실 | duel |
| 브랜드, 코인, 앱 | logos |
| 앱 스크린샷 또는 화면 녹화 | telephone |
| 웹사이트, 페이지 | navigateur |
| 사진(카드 또는 전체 화면) | image |
| 대화(AI, 지원, 사기) | chat |
| 위험, 사기, 좋은 소식 | alerte |
| 트렌드, 숫자 비교 | graphique |
| 명령어, 설치 | terminal |
| 누군가의 인용문 | citation |
| 개념과 설명 | carte |
| 독창적인 시각 효과가 필요한 순간 | html |
장면을 다양하게 사용하십시오.
- 각 주요 아이디어에 고유한 장면을 할당하십시오: 동영상당 6~10개의 장면.
- 동일한 유형을 연속으로 두 번 사용하지 말고, 매 동영상마다 유형 순서를 변경하십시오.
- 고정된 스타일이 템플릿이 되어서는 안 됩니다. 세 개의 동영상이 동일한 장면 순서를 공유하면 시청자가 이탈합니다.
세 가지 모드(자세한 내용은 references/modes.md 참조)
- Generated: JSON만 있으면 됩니다.
- 음성은 edge-tts: 무료, 키 불필요, 여러 언어 지원.
voix.nom을 설정하여 음성이나 악센트를 변경하십시오.
- Images: 스크린샷과 사진을
telephone,navigateur또는image에 넣고videos/medias/에서 가져옵니다.- 녹음 또는 복제된 음성은
"voix": { "fichier": "medias/voice.wav" }에 넣습니다. - 로컬(whisper)에서 전사되어 문장과 동기화됩니다.
- 녹음 또는 복제된 음성은
- Filmed:
"rush": "medias/clip.mp4"를 설정하십시오. 클립의 오디오가 음성입니다.- 장면이 없는 문장은 얼굴을 하단에 자막과 함께 표시합니다.
- 장면은 해당 아이디어 길이만큼 화면을 덮습니다.
- 스크립트에서 문장을 작성하십시오: 스킬이 단어별로 동기화합니다.
렌더링 전: 체크리스트
- 문장 1은 주제를 명확히 진술하고, 제목이 1초 이내에 읽힙니다.
- 모든 기술 용어는 같은 문장 또는 다음 문장에서 설명됩니다.
- 문장당 최대 하나의 강세 단어가 있으며, 6~10개의 다양한 유형의 장면이 있습니다.
- 숫자는 실제 확인된 출처에서 가져옵니다.
chiffre장면은 숫자가 타사 출처에서 온 경우source를 포함합니다. - 콘택트 시트가 검토되었고, 검사가 깨끗하며, 'mot introuvable'(단어를 찾을 수 없음) 경고가 남아 있지 않습니다.
- 엔딩은 시청자가 머물 이유(다음 내용, 기억할 한 줄)를 제공하며, 모호한 질문이 아닙니다.
- 브랜드는 이에 대해 이야기하기 위해 표시되며, 파트너십을 암시하기 위해 표시되지 않습니다.
- 가상의 대화에는
"mention": "Exemple fictif"또는 영어로 "Example"이 포함됩니다.
문제 발생 시
| 메시지 | 조치 |
|---|---|
voix : … edge_tts | sh <skill>/scripts/install.sh 실행 |
mot « x » introuvable | au는 해당 장면의 문장에 있는 단어를 정확히 반복해야 함 |
logo « x » introuvable | 파일("medias/x.svg")을 제공하거나 공백 없이 브랜드 이름 시도 |
| 텍스트 오버플로우 | 텍스트를 줄이거나 더 넓은 장면(carte 또는 liste, duel보다는)으로 전환; CSS는 건드리지 말 것 |
| 단어 발음이 잘못됨 | prononcer에 추가(예: {"Ledger": "Ledjer"}) |