설명형 쇼츠 & 릴스 게시하기
Only Sci Facts 채널(YouTube @onlyfactsci, Instagram onlyfactsci)을 위한 종단 간 워크플로우:
에피소드 선택 → 업로드용 압축 → 커버 제작 → 캡션 작성 → YouTube Shorts 및 Instagram Reels에 게시 → 확인.
9:16 MP4 설명 동영상이 있는 모든 폴더에서 작동합니다.
스크립트는 이 파일 옆에 있는 scripts/ 디렉토리에 있습니다. 없으면 https://github.com/pranaykrpiyush/video-publishing-skill을 클론하고 publish-explainer-shorts/scripts/를 사용하세요.
스크립트에는 ffmpeg, ffprobe, Python 3(Pillow, numpy), Inter Display 글꼴이 필요합니다. 굵은 산세리프 글꼴이면 FONT_DIR 환경 변수를 가리키기만 하면 됩니다.
0. 시작하기 전에
- 에피소드 폴더를 요청하거나 찾으세요. 에피소드 이름은
NN-slug.mp4형식입니다(예:14-falling-into-a-black-hole.mp4). - 요청에 명시되지 않은 경우, 게시할 에피소드 수와 플랫폼을 물어보세요.
- 사용자가 Chrome에서 YouTube Studio와 Instagram에 로그인되어 있는지 확인하세요. 각 사이트를 한 번씩 열어 확인하세요.
- 이미 게시됨? YouTube Studio의 Shorts 목록과 Instagram 그리드를 확인하여 에피소드를 두 번 게시하지 않도록 하세요.
1. 가장 입소문이 잘 날 에피소드 선택
-
인벤토리:
scripts/inventory.sh <폴더>를 실행하면 각 파일의 재생 시간, 해상도, 오디오 레벨이 출력됩니다. -
제외 기준:
- 60초 초과(쇼츠로 작동은 하지만 완료율이 떨어짐) 또는 1080×1920이 아닌 경우;
- 무음이거나 오디오가 클리핑되는 경우(max_volume이 −0.5 dB 초과);
- 플랫폼에서 억제하는 주제(예: 마약, "LSD 거울" 에피소드; 그래픽 또는 의학 콘텐츠);
- 이미 게시된 에피소드.
-
콘텐츠를 확인하세요.
scripts/contact_sheet.sh <비디오> <출력.jpg>명령은 4초마다 한 프레임씩 이미지를 만듭니다. 시트를 읽어보세요. -
각 남은 에피소드에 대해 다음 항목별로 5점 만점으로 평가하세요:
- 첫 1초의 후크: 큰 숫자, 역설, 또는 "~하면 어떻게 될까?"
- 호기심 갭: 직관에 반하는 답변.
- 시각적 드라마: 블랙홀, 은하 또는 폭발이 다이어그램보다 우수.
- 댓글 유도: 열린 질문 또는 여러 경쟁 답변.
- 광범위한 매력: 우주와 인체가 틈새 주제보다 우수.
우주 역설(블랙홀, 페르미 역설, 별먼지, 암흑 물질)이 일반적으로 가장 높은 점수를 받습니다.
-
사용자에게 각 선택의 근거를 한 줄씩 알려주고 계속 진행하세요. 사용자가 선택을 요청하지 않는 한 승인을 기다리지 마세요.
2. 업로드용 압축
Chrome 확장 프로그램의 file_upload 도구는 3.8 MB를 초과하는 파일을 거부합니다. 재인코딩된 파일은 사용자가 직접 파일을 선택하는 경우에도 사용됩니다.
scripts/compress_for_upload.sh <입력.mp4> <출력.mp4>
스크립트는 x264를 CRF 26, -preset slow, AAC 96k, +faststart로 실행합니다. 그런 다음 원본 대비 SSIM과 크기를 출력합니다:
- 목표 SSIM은 최소 0.995로, 시각적으로 무손실입니다.
- 파일이 여전히 3.8 MB를 초과하면
CRF=28로 다시 실행하세요.
출력 파일은 에피소드 폴더 내 upload-ready/ 하위 폴더에 넣으세요. 원본 파일을 절대 덮어쓰지 마세요.
3. 커버 만들기
python3 scripts/make_cover.py --style blackhole \
--kicker "만약" --headline "블랙홀에|떨어진다면?" \
--tagline "두 가지 결말.|모두 사실입니다." --out 14-cover.png
python3 scripts/make_cover.py --style galaxy \
--kicker "100,000,000,000개의 별" --headline "모두|어디 있나요?" \
--tagline "우주선도 없고.|신호도 없습니다." --out 12-cover.png
python3 scripts/make_cover.py --style frame --video 05-why-the-sky-is-blue.mp4 --at 12 \
--kicker "왜" --headline "하늘이|파란가요?" --tagline "바다를|반사하는 게 아닙니다." --out 05-cover.png
인수 작동 방식:
--headline에서|는 줄을 바꿉니다.--tagline에서|는 텍스트를 흰색 부분과 주황색 부분으로 나눕니다.--style frame은 에피소드의 내장 자막 사이에 있는 아트워크를 가져옵니다. 아트 가장자리에 라벨이 보이면--art-top/--art-bottom으로 밴드를 이동하세요. 기본값은 소스 프레임의 420px과 1300px입니다.
각 커버는 1080×1920이며, 모든 텍스트는 중앙 1080×1350 영역 내에 유지되어 Instagram의 그리드 자르기가 유지됩니다.
카피라이팅 규칙:
- 헤드라인은 질문 또는 충격적인 숫자입니다. 대문자로 2~4단어로 유지하세요.
- 키커는 헤드라인을 설정합니다.
- 태그라인은 결과를 알려주지 않고 암시합니다.
사용하기 전에 모든 커버를 확인하세요: Read로 여세요.
4. 캡션 작성
YouTube 제목. 70자 미만으로 유지하고 비디오가 답하는 질문 형식으로 작성하고 이모지와 #shorts를 추가하세요. 예: 블랙홀에 떨어지면 어떻게 될까? 🕳️ #shorts
설명 및 Instagram 캡션. 두 플랫폼에서 동일한 템플릿을 사용하세요:
<후크 라인: 역설 또는 큰 숫자> <이모지>
<2문장: 결과를 평이한 말로>
<댓글 유도 질문: "어느 쪽을 믿으세요? 👇" / "어느 버전을 경험하고 싶으세요? 👇">
(IG에서 @onlyfactsci 팔로우) 매일 새로운 과학 상식을 만나보세요 🚀
#<주제> #<주제2> #우주 #과학 #우주상식 #shorts|#reels
5. YouTube Shorts에 게시 (Chrome의 Claude)
- chrome-browser 스킬을 로드하세요.
tabs_context_mcp를 실행한 다음 새 탭을 엽니다. https://studio.youtube.com/channel/<채널_ID>/videos/upload?d=ud로 이동하세요. 채널 ID는 로그인 후 Studio URL에 있습니다.- 파일을 첨부하세요:
- 먼저
find"file-input"을 시도한 다음, 장치 경로로file_upload를 시도하세요. - 알려진 제한 사항:
file_upload는 사용자의 연결된 폴더에 있는 파일을 자주 거부합니다("이 세션이 읽을 수 있는 파일만 허용됨"). 한 번 이상 재시도하지 마세요. 사용자에게 Select files를 클릭하고upload-ready/<파일>.mp4를 선택하도록 요청하세요. 기본 대화상자가 열리므로 직접 클릭하지 마세요.
- 먼저
- 세부 정보:
- 제목 필드: 클릭하고
ctrl+a를 누른 다음 입력하세요. - 설명: 클릭한 다음 입력하세요.
#태그를 입력하면 제안 드롭다운이 열립니다. Escape가 아닌 대화상자의 빈 부분을 클릭하여 닫으세요.- 시청자:
find로 "No, it's not made for kids"를 찾은 다음scroll_to로 스크롤하여 클릭하세요. - 썸네일: 사용자가 썸네일 아래 Upload file을 클릭하고 커버를 선택합니다. Studio는 맞춤형 Short 썸네일을 지원합니다.
- 제목 필드: 클릭하고
- Next를 세 번 클릭하세요(비디오 요소, 확인, 공개 설정). Public을 선택한 다음 Publish를 선택하세요.
- 확인:
/videos/short를 열고get_page_text를 실행하세요. 새 제목에 Public 및 Published가 표시되어야 합니다.
6. Instagram Reels에 게시 (Chrome의 Claude)
https://www.instagram.com/을 엽니다. "Turn on notifications" 알림은 Not Now로 닫으세요.- 사이드바에서 Create를 클릭한 다음 Post를 클릭하세요.
- 사용자가 Select from computer를 클릭하고 MP4를 선택합니다. YouTube와 동일한 파일 선택기 제한 사항입니다.
- 자르기 단계: Instagram 기본값은 1:1로, 비디오를 정사각형으로 자릅니다.
- 미리보기 왼쪽 아래의 자르기 아이콘을 클릭하고 Original을 선택하세요.
- 미리보기가 세로(9:16)인지 확인한 다음 Next를 클릭하세요.
- 편집 단계: 사용자가 "Cover photo" 옆의 Select From Computer를 클릭하고 커버 PNG를 선택합니다.
- 커버가 비디오와 일치하는지 확인하세요. 미리보기를 재생하고 콘텐츠와 트림 길이(예: 페르미의 경우 55초, 블랙홀의 경우 47초)를 비교하세요. 사용자가 잘못된 커버를 쉽게 선택할 수 있습니다.
- Next를 클릭하세요.
- 캡션 단계:
- 캡션 상자를 클릭하고 캡션을 입력하세요.
- 해시태그 드롭다운이 닫히도록 끝에 공백을 추가하세요.
- 사용자가 요청하지 않는 한 "Share to Facebook"은 끄세요.
- Share를 클릭하세요.
find로 "Share button in New reel dialog header"를 찾고 ref로 클릭하세요. 대화상자가 크기가 조정될 때 좌표가 이동하기 때문입니다. - "Your reel has been shared." 메시지가 나타날 때까지(20~40초) 기다린 다음 Done을 클릭하세요.
7. 프로필 및 브랜딩 (요청 시)
python3 scripts/brand_assets.py --outdir <디렉토리>명령은 다음을 생성합니다:onlyscifacts-profile-picture.png: 1024², 주황색 고리가 있는 블랙홀;onlyscifacts-youtube-banner.png: 2560×1440, 텍스트는 1546×423 안전 영역 내에 위치.
- Instagram:
- 소개:
instagram.com/accounts/edit/, 그런 다음 Submit. - 이름:
accountscenter.instagram.com/profiles/, 그런 다음 계정, Name, Done. 14일 동안 두 번만 변경 가능합니다. - 사진: 계정 센터, Profile picture, Upload new photo. 사용자가 파일을 선택합니다.
- 소개:
- YouTube:
studio.youtube.com/channel/<ID>/editing/profile로 이동하세요.- 설명: 입력하세요.
- 사진: Change. 배너: Upload. 사용자가 두 파일을 모두 선택합니다.
- Publish를 클릭하세요.
- 채널 이름은 14일 동안 두 번만 변경 가능합니다. 이름 변경 전에 물어보세요.
- 저장하기 전에 항상 사용자에게 소개와 설명 텍스트를 보여주고 동의를 받으세요. 프로필 변경 사항은 공개됩니다.
규칙
- 게시는 공개적이며 되돌리기 어렵습니다. 사용자가 요청한 내용만 게시하세요. 이전 게시물 편집, 게시물 보관 또는 채널 이름 변경 등 요청 외의 작업은 먼저 확인하세요.
- 비밀번호를 절대 입력하지 마세요. 사이트에서 로그인을 요청하면 사용자가 직접 합니다.
- 무엇이 게시되었는지 제목과 공개 설정과 함께 보고하세요. 파일 선택과 같이 사용자가 처리해야 할 사항이 있으면 언급하세요.