3D 설명 영상
사용자 요청 없이 완전 제공: out/<slug>.mp4 (브랜드 엔딩으로 종료) +
thumbs/<slug>-1.png 및 -2.png + out/<slug>-legenda.txt (출처와 해시태그가 포함된 게시물 자막).
사용자 PC에서 npm run explicar는 모든 파일을 Google Drive에도 복사합니다.
(G:\Meu Drive\Scientia\Posts\<data> · <slug> · <título>\: video.mp4, thumb-1/2.png, legenda.txt, fontes.txt).
"Drive를 찾을 수 없습니다"라는 메시지가 나타나면 스크립트가 출력하는 마운트 명령어를 사용자에게 보여주세요.
사용자는 주제만 입력하면 됩니다. 혼자서 결정할 수 있는 사항에 대해 중간에 멈춰서 묻지 마세요.
품질 기준 (사용자 결정, 2026년 10월 16일): 근접 카드 영상.
videos/aproximacao/roteiro.json + src/explicativo/videos/Aproximacao.tsx. 시작하기 전에 두 파일을 모두 읽고
references/referencia.md의 레시피를 복사하세요. "Ludificando" 패턴 (회색 배경, 선반, 흐림 효과, 많은 인형, 80–90초)으로 만든 영상은 거부되었습니다 — 다시 사용하지 마세요.
그런 다음 대본 작성 전에 references/ganchos.md를, 장면 구성 전에 references/estilo.md + references/biblioteca.md를 읽으세요.
references/ludificando.md는 아이디어의 원천일 뿐, 규칙이 아닙니다.
1. 조사 (필수)
- 현재 관련 정보 (법률, 숫자, 직위, 기한)는 지금 웹 검색을 통해 2개 이상의 신뢰할 수 있는 출처에서 가져와야 합니다. (Agência Brasil, Senado/Câmara, IBGE, g1, Folha…). 기억에 의존한 숫자는 안 됩니다.
- 출처를 대본의
fontes에 기록하세요. 출처가 일치하지 않으면 가장 공식적인 출처를 사용하고 그 사실을 명시하세요. - 사실과 예측/의견을 구분하세요 ("Dieese는 계산합니다…", "CNI는 말합니다…").
2. 대본 → videos/<slug>/roteiro.json
근접 영상 레시피: ~60초, 7개 장면, 장면당 18–30단어 (총 약 170–190단어),
장면당 하나의 아이디어, 논리적 순서로 설명 (각 장면이 다음 장면을 유도: "그래서…", "그러자…", "만약 누군가…").
chip = 장의 짧은 이름을 대문자로 표기 ("에너지", "아주 가까이", "복사하면?").
- 후크 = 강력한 숫자 + 질문 ("4번의 구매 중 3번이… 그런데 배터리 없는 카드가 어떻게 결제가 될까요?"). 마지막 장면 = 사람이 가져갈 실용적인 정보 (예: 비밀번호 없는 한도).
- "양측"과 "주의/사기"는 주제가 요구할 때만 (실제 논란, 실제 사기) 포함됩니다. 필수 사항이 아닙니다.
- 첫 문장 = 후크, 항상 질문 (사용자 규칙)이며, 그 안에 또는 바로 뒤에 강력한 사실이 있어야 합니다. 예: "배터리 없는 카드가 어떻게 결제가 될까요?". "안녕하세요"는 안 됩니다.
- 친구에게 말하듯 짧은 문장. 숫자는 숫자로 표기 ("75표").
- 음성이 잘못 읽을 수 있는 내용 (약어, "6x1", 소수점 "26,8")은
pronuncia에 기재. - 마지막 장면: 마무리 — 후크 질문에 대한 최종 실용 정보 / 답변. 금지 (사용자 규칙): 댓글, 좋아요, "저장", "팔로우", "X 댓글 달면 보내드립니다…" 요청 금지 — 말이나 화면에 모두 금지. 출처는 게시물 설명에만 남깁니다. 마지막 대사 이후에는 브랜드 엔딩만 자동으로 표시됩니다.
- 6–14단어의 문장, 천천히 말하기 (나레이션은 문장 단위로, 각 쉼표와 마침표에서 멈춤).
- 대본에
cta는 더 이상 없음: 엔딩은 브랜드만 표시. sons: 기본값은 첫 프레임에 임팩트, 장면 전환에 스우시/후시, 숫자 카드에 "팝", 메모/알약에 "틱", 엔딩 진입 시 상승 효과를 자동으로 생성합니다. 배경 음악 없음 (레퍼런스에 없음. 사용자가 요청할 때만"musica": "sfx/bed-scientia.mp3"로 켜기). 키워드에 2–3개의acentos를 적당히 작성:"sons": {"acentos": [{"palavra": "75", "cena": "aprovado", "som": "sfx/ding.wav", "volume": 0.5}, {"palavra": "desliga", "cena": "liga", "som": "sfx/boom.wav", "volume": 0.5}, {"palavra": "relógio", "cena": "agora", "som": "sfx/riser.wav", "pico": 1.49, "volume": 0.35}]}. 준비된 사운드는public/sfx/에 있음: boom (충격), ding (숫자/공개), pop (딱), riser (서스펜스,pico사용), whoosh/swoosh.palavra는fala에 쓰인 단어입니다 (pronuncia의 단어가 아님). 모든 사운드는 사용자 라이브러리(public/soundeffects/catalog.md)의 사운드로 교체 가능 —musica,transicao(목록 교체),aparecer,dado,abertura,final;null은 끄기.composicao= 컴포넌트 이름 (예:Escala6x1).marca="SCIENTIA · <짧은 주제>"(채널명은 Scientia).voz={ "principal": "masculina", "alternar": "nao" }— 대본에velocidade를 넣지 마세요 (voz.json에서 가져옴, 현재 1.08).post= Instagram/TikTok 자막 (out/<slug>-legenda.txt파일이 됨):{ "gancho": "<강력한 사실 + 질문> 📌", "pontos": [마침표 없는 짧은 문장 3개, 숫자 포함], "fontes": ["Agência Senado", "IBGE", …이름만], "hashtags": ["주제", "내용", …최대 5개, # 없이] }(#scientia는 자동 추가). 영상과 같은 톤: 개인에게 어떤 변화가 있는지, 의견 없음. 이모지는 최대 1개.thumb= 영상 썸네일 (6단계 참조):{ "titulos": [2개 옵션], "cena": "<배경 장면 ID>", "quadro": <장면의 프레임>, "descer": 330, "zoom": 1.45 }.
3. 나레이션
npm run narrar -- <slug> → public/explicativo/<slug>/narracao.wav + tempos.json (각 단어의
시간 정보, 음성 자체에서 가져옴). edge-tts 신경망 음성 (인터넷 필요); 인터넷이 없으면 로컬 Kokoro 음성으로 대체.
채널 음성은 voz.json에 저장됨 (엔진, 사용자가 선택한 음성, 속도). 음성, 엔진 또는 ID를 임의로 선택하거나 변경하지 마세요
— 이는 사용자의 취향입니다. 대본에서 voz 필드는 다음만 정의합니다:
"principal": "masculina"— 항상. 채널에서 승인된 음성은 Antonio (Microsoft)이며, 6x1 및 근접 영상에 사용된 음성입니다. 여성 음성 Thalita Multilingual은 포르투갈 포르투갈어처럼 들려 (투표함 영상) 사용이 중단되었습니다. "Multilingual" 음성은 절대 사용하지 마세요. 사용자가 요청할 때만 여성 음성을 사용하세요."alternar": "cenas"— 장면이 두 음성 사이를 번갈아 가며 사용 (듀오). 기본값:"nao".- 사용자가 음성에 대해 불만을 표시하면:
npm run vozes(Microsoft) /npm run vozes -- eleven및npm run vozes -- usar <id> feminina|masculina를 보여주세요. - 듣기 위해 대사를 작성하세요 — 이것이 합성 음성의 억양을 가장 크게 바꿉니다:
- 짧은 문장 (6–14단어), 숨 쉬는 부분에 쉼표, 괄호나
pronuncia없는 약어 사용 금지; - 2–3 장면마다 수사학적 질문 ("이미 지불한 사람은?") — 목소리가 "?"에서 올라가 생동감을 얻습니다;
- 대비와 반전: "그런데…", "하지만 주의:", "게다가:";
- 중요한 숫자는 문장 끝에 단독으로 ("75표 대 1이었습니다.") 또는 반복 ("11일!")하여 사용;
- 쉼표가 많은 긴 문장과 4개 이상 항목의 목록은 피하세요 (음성이 단조로워집니다).
- 짧은 문장 (6–14단어), 숨 쉬는 부분에 쉼표, 괄호나
- 기본 나레이션은 레퍼런스와 동일: 문장 단위, 쉼표에서 0.12초, 마침표에서 0.32초 일시 정지,
장면 간 0.45초, Antonio 속도 1.08. 사용자가 요청하지 않으면
"estilo": "continuo"로 변경하지 마세요. - 더 표현력이 풍부한 로컬 음성 (사용자 GPU의 Chatterbox)을 테스트하려면:
npm run vozes -- comparar <slug>.
4. 장면 → src/explicativo/videos/<Nome>.tsx
Escala6x1.tsx의 구조를 복사: 장면당 하나의 컴포넌트,CENAS_<NOME>및 파일 끝에export const VIDEO = { id: "<Nome>", roteiro: roteiro as Roteiro, cenas: CENAS_<NOME> };(import roteiro from "../../../videos/<slug>/roteiro.json"사용). 영상은 자동으로 등록됩니다.Composicoes.tsx를 편집하지 마세요 (편집 시git pull에서 충돌 발생).- 영상 완료 후 GitHub에 저장:
git add videos/<slug> src/explicativo/videos/<Nome>.tsx+ commit + push (이렇게 하면 사용자의 다음git pull이 멈추지 않습니다). - 히어로 객체 (계산기 + 카드처럼): 주제의 한두 가지 객체를 잘 만들고 크게 배치하여 거의 모든 장면에 등장시킵니다. 각 장면은 객체의 일부/상태를 보여줍니다 (불이 켜지는 필드, 화면의 코드, 튀어나오는 키). 인형은 조연으로만 사용 (장면당 0–1개, 절대 중심이 아님).
- 키트 (
three/Kit.tsx,ui/Kit.tsx)는 선택 사항: 장면이 필요할 때만 한 조각을 사용하세요 (예: 투표에서Hemiciclo). 장면에 알약/눈금자를 채우지 마세요. - 각 장면에 대해 데이터의 하나의 시각적 은유를 선택하세요 (
references/estilo.md참조): 표 → 켜지는 의자; 시간 → 사라지는 큐브; 사람 → 인형 (인형 1개 = X); 돈 → 동전/급여명세서; 기한 → 타임라인의 표지판; 규칙/법률 → 종이 + 체크리스트. - 대사와 동기화:
w("palavra")는 단어가 발화되는 프레임을 반환합니다. 시각적 요소는 단어와 함께 변경됩니다 (예: 음성이 숫자를 말할 때 카드 번호가 변경됨). - 카메라:
cam(pos, look)는 장면 시작 위치에서 끝 위치로 보간 (ease(f, 0, dur)사용). - 배경:
Stage는 이미 다크 모드 (검정 배경, 먼지)로 제공됩니다 — 레퍼런스와 동일. 사용자가 요청하지 않으면cenario="estudio"또는acabamento(흐림/블룸)를 사용하지 마세요. - 카메라: 객체로부터의 거리 6–8, y ≈ 1을 바라봄; 장면 내에서 10–15% 느린 줌인 (Aproximacao.tsx처럼).
- 프레이밍: 주요 객체가 너비의 40–70%를 차지합니다. 절대 빈 프레임, 아주 작은 객체 (가는 선) 또는 참조 없이 화면 전체를 차지하는 블록을 사용하지 마세요. 항상 인간 참조 (옆에 인형) 또는 알려진 객체와 함께 크기 조정.
- 주제 객체를 단순한 형태로 구성 (책 = 얇은 상자, 금고 = 상자 + 원기둥, 휴대폰 = 둥근 모서리 상자 + 어두운 화면, 저울 = 원기둥) — 구체적인 맥락이 추상적인 블록보다 더 잘 집중시킵니다.
- 화면 중앙 세로 영역 (y ≈ 450–1250px)에 콘텐츠 배치. 상단 = 브랜드/칩/카드; 1300+ = 자막 및 TikTok 버튼. 오른쪽 가장자리 (앱 아이콘)에는 중요한 것을 배치하지 마세요.
Callout에 숫자 출처 표기 (sub="출처: …").
5. 프레임 확인
npm run quadros -- <slug> → out/quadros/<slug>/grade.jpg (각 장면 끝의 한 프레임).
그리드를 확인하세요. 확인 사항: 잘리거나 자막 뒤에 가려진 부분 없음; 텍스트 읽기 쉬움; 주요 객체 충분히 큼;
카드/칩 위에 겹쳐진 부분 없음; 시각적 요소가 문장과 일치함. 카메라/크기 조정 후 반복.
6. 썸네일 (표지)
thumb.titulos에 2개의 제목 작성 (\n으로 줄 바꿈, *별표*로 강조):
- 3줄, 줄당 최대 ~16자; 마지막 줄은 강조 표시된 질문/호기심.
- 하나는 사실/강력한 숫자 포함 ("75표 대 1."), 다른 하나는 사람이 가진 질문 ("언제 바뀌나요?")
- 진실: 영상이 보여주지 않는 것을 약속하지 마세요.
- 배경: 가장 예쁘고/읽기 쉬운 장면 (이미 구성된
cena+quadro).npm run thumb -- <slug>→thumbs/<slug>-1.png,-2.png. 전달하기 전에 두 개를 모두 확인하세요.
7. 렌더링 및 전달
npm run explicar -- <slug> → out/<slug>.mp4 + 썸네일 (3D 렌더링, GPU 없음: Codespace에서 영상 1분당 약 6–10분 소요).
최종 mp4의 3–4개 프레임을 시청하고, 오디오 끝을 확인한 후 출처와 함께 전달하세요.
사용자에게 표시: 영상, 썸네일 2개 (어느 것을 게시할지와 그 이유를 말하세요) 및 out/<slug>-legenda.txt의
자막을 복사할 수 있도록 붙여넣으세요. 의견을 묻고 사용자가 생각한 내용을 notas-do-editor.md ("Explicativos" 섹션)에 기록하세요.