무표정 설명 영상 샤오홍슈
이것은 독립적인 숏폼 영상 제작 라우팅으로, '실제 콘텐츠 스크린샷 카드 + 동적 풍경 배경 + 로컬 BGM'을 조합한 샤오홍슈 초안을 전문적으로 처리합니다. 기존 $explainer 스킬을 수정하거나 대체하지 않습니다. 후자는 여전히 16:9, 더빙 및 전체 설명 동영상을 담당합니다.
계정의 핵심 독자는 개인 창업을 꿈꾸고 AI를 배우며, 기본적인 비즈니스 및 AI 이해도를 갖춘 사람들입니다. 스크린샷은 단지 증거의 입구일 뿐이며, 진정한 콘텐츠 가치는 스크린샷 속 통찰력을 이러한 독자들이 판단하고 실행할 수 있는 액션으로 번역하는 데 있습니다.
먼저 경계 설정
- 각 콘텐츠는 사용자에게 두 가지만 제공합니다: 열 수 있는
.mp4파일 하나와 같은 제목의.md게시 초안 하나; 같은 주의 여러 콘텐츠 쌍은 동일한 주간 디렉토리에 직접 넣을 수 있으며, 내부 추적 manifest는 전달 대상에 포함되지 않으며 주간 디렉토리에 넣지 않습니다. - 기본 위치는
说明小红书XX/第N周/이며, 같은 주의 완성본과 게시 초안은 주간 디렉토리에 직접 넣고, 개별 콘텐츠 하위 디렉토리는 만들지 않습니다. - 게시 초안은 항상
publish_status: draft입니다; 최종 전달 전에title_status는 반드시locked여야 합니다. 기본적으로 자동 로그인, 업로드, 게시, 댓글, 좋아요 또는 팔로우를 하지 않습니다; 편집자가 명시적으로 요청하는 경우에만 지정된 완성본과 게시 초안을 로그인된 샤오홍슈 창작 센터에 업로드하여 초안으로 저장할 수 있으며, 절대 게시 버튼을 클릭하지 않습니다. 사용자가 후보 계정 목록을 명확히 확인한 경우 로그인된 X 앱에서 하나씩 수동으로 팔로우할 수 있지만, 일괄 스크립트화하거나 이를 통해 상호작용 성장을 도모할 수 없습니다. - X 콘텐츠는 사용자가 제공한 스크린샷 또는 사용자가 로그인한 X 앱에서 볼 수 있는 게시물에서만 가져와야 합니다. CAPTCHA, 유료 벽 또는 권한을 우회할 수 없으며, 스크린샷 텍스트를 재정렬하거나 계정/숫자/날짜를 허위로 생성할 수 없습니다.
- 기본적으로 X 출처 행을 작성하지 않으며, 사용자가 별도로 요청하는 경우에만 작성합니다; 출처와 허가는素材库 메타데이터에만 보관합니다.
- 하나의 스크린샷은 유일한 정보 카드입니다. 자막, 제목 바, 스티커, 로고, 인트로, 아웃트로, CTA, 두 번째 카드 또는 캐릭터를 중첩할 수 없습니다.
- 사용자가 사실적 증거를 제공하지 않은 경우, 제목과 카피는 명확하게 표시된 요약만 할 수 있으며 추측을 사실로 제시하지 않습니다.
- 각 완성본은 주간 디렉토리 외부에 내부
run_manifest.json을 두어 스크린샷, 배경, BGM, 대상 독자, 주제 선정 점수, 제목 후보, 본문 구조, 검토 패키지, 해시 및 수동 확인을 기록해야 합니다; 이는 게시 파일이 아니며 주간 디렉토리에 넣을 수 없습니다.
사용 시기
사용자가 "설명 영상 샤오홍슈 만들어줘", "X 스크린샷을 영상으로 만들어줘", "동적 풍경을 배경으로", "BGM 하나 넣어줘", "영상과 게시 초안 줘"라고 말할 때 이 스킬을 사용합니다. 로그인된 데스크톱/X 앱을 조작해야 하는 경우 먼저 사용 가능한 computer-use/브라우저 제어 스킬을 읽습니다. 미디어 탐지 및 렌더링에는 로컬 ffprobe, ffmpeg 또는 승인된 편집 도구를 사용합니다. 스크린샷, 배경, 규정을 준수하는 BGM 또는 사실 의미를 변경할 제목 근거가 부족하면 WAIT_DATA/WAIT_USER에서 멈추고 스스로 생성하지 마십시오.
입력 및 출력 계약
제목, 50자 본문 및 태그 생성 및 검토 규칙은 content-generation-contract.md를 참조하십시오. 해당 참조 파일은 이 스킬의 콘텐츠 제작 표준이며, 선택적 영감이 아닙니다.
최소 입력
- X 스크린샷 하나 또는 로그인된 X 앱에서 찾을 수 있는 게시물 하나.
- 사용자가 업로드한 레이아웃 참조 이미지 하나로
source_crop_rect_px를 결정합니다; 사용자가 X 스크린샷 자체가 레이아웃 참조 이미지임을 명확히 확인한 경우에만 동일한 파일을 재사용할 수 있습니다. - 동적 배경 영상 하나. 사용자가 제공하지 않은 경우 Pexels/Unsplash의 명확한 다운로드 페이지에서 가져오고 라이선스/출처 기록을 저장해야 합니다; 검색 결과 페이지만으로 자료를 사용할 수 없습니다.
- 로컬 BGM 하나 또는 로컬
说明小红书BGM素材库에서 선택할 수 있습니다. 라이선스가 불명확한 오디오는 완성본에 포함할 수 없습니다.
선택 사항: 주제, 목표 감정, 주 번호, 사용자 지정 제목, 원본 게시물의 보이는 이미지 영역 유지 여부; 영상 길이는 입력으로 받지 않으며 영구적으로 8초로 고정됩니다.
영상 고정 규격
- 캔버스는 영구적으로
1080×1440 px(3:4)로 고정, 기본30 fps, H.264 비디오, AAC 오디오. - 영상 길이는 영구적으로
8초로 고정; 다른 길이로 조정할 수 없습니다. - 동적 배경은 전체를 채우며, 약간의 밝기 감소/비네트/블러를 적용하여 카드를 받칠 수 있습니다; 배경을 정지 프레임으로 고정할 수 없습니다.
- 스크린샷 카드 너비는 영구적으로
880 px로 고정, 캔버스 좌우 여백은 영구적으로100 px로 고정(100 + 880 + 100 = 1080). - 스크린샷 카드는 먼저 사용자 참조 이미지에 따라 원본 스크린샷의 자르기 영역을 결정한 다음, '채우기 + 자르기(cover)' 방식으로
880 px너비를 채웁니다; pad, letterbox 또는 빈 공간 채우기를 엄격히 금지합니다. 키 텍스트를 변경, 재정렬 또는 가릴 수 없습니다. - 스크린샷 카드 높이는 참조 이미지로 결정된 스크린샷 비율에 따라 자연스럽게 결정됩니다:
logical_card_height <= 1440이면final_card_height = logical_card_height이고y = floor((1440 - final_card_height) / 2); 1440px를 초과하면 먼저source_vertical_crop_px = floor((logical_card_height - 1440) / 2)로 중앙 수직 자르기를 수행하고,final_card_height = 1440, 최종y = 0입니다. 두 경우 모두 고정된 상하 여백을 지정하지 않으며, 너비를 줄이거나 빈 공간을 채우지 않습니다. - 최종 스크린샷 가시 레이어는 통일적으로
24 px둥근 모서리 마스크(1080×1440 출력 픽셀 기준)를 사용하며, 카드 가장 바깥쪽에서 안쪽으로2 px밝은 회색 테두리#C9D1D8를 그리고 부드러운 그림자를 추가합니다: 검은색,16%불투명도, 블러 반경12 px, 오프셋(0, 8 px), 확장36 px. 테두리와 그림자는 스크린샷 카드 자체에 속하며, 카드의 880px 외부 크기를 변경하거나 두 번째 정보 레이어를 추가하지 않습니다. 참조 이미지가 제공되지 않으면WAIT_USER에서 멈추고 자르기 사각형을 결정하지 않습니다. - 스크린샷 카드는 기본적으로 0초에 나타나 영상의 가장 앞에 있는 유일한 정보 카드로 끝까지 유지됩니다; 사용자가 명시적으로 등장 애니메이션을 요청하는 경우에만 이 카드 자체에 약간의 가독성 있는 변화만 적용할 수 있습니다.
- 화면에는 '배경 + 하나의 스크린샷 카드'만 있습니다. 추가 자막, 스티커, 출처 표시줄, 인트로, 아웃트로 및 두 번째 정보 레이어를 금지합니다.
- 기본적으로 하나의 BGM 오디오 트랙만 있으며, 내레이션을 추가하지 않습니다; 음악은 전체 영상을 덮으며 짧은 페이드 인/아웃을 적용하여 클리핑과 갑작스러운 컷을 방지합니다.
게시 초안 고정 규격
Markdown 기본 파일명은 영상과 완전히 동일해야 합니다: <제목>.mp4 및 <제목>.md. 본문은 기본적으로 엄격하게 50자(한자)입니다; 문자 수 계산은 제목, 구두점, 숫자, 영어, 태그 및 상태 필드를 제외하고 본문의 한자만 계산합니다. 사용자가 명시적으로 느슨한 모드를 선택한 경우에만 45–65자를 사용할 수 있습니다. 원고는 다음만 유지합니다:
publish_status: draft
title_status: locked
copy_length: exact_50
platform: xiaohongshu
content_review_status: claude_approved
content_review_agent: claude
content_generation_agent: claude
editorial_review_status: codex_approved
editorial_review_agent: codex
# 제목
본문 (정확히 50자, 매력적인 후크와 명확한 마무리 포함)
#태그1 #태그2 #태그3
BGM 라이선스, 다운로드 링크 또는 제작 과정을 독자에게 전달하는 카피에 넣지 마십시오. 기록이 필요하면素材库 index.json 또는 내부 실행 결과에 기록하며, 주간 전달 파일을 늘리지 않습니다.
워크플로
- 수신 및 검증: 스크린샷, 독립적인 레이아웃 참조 이미지(또는 사용자가 스크린샷을 참조 이미지로 사용함을 명확히 확인), 배경, 주제, 주 번호 및素材库 상태를 확인; 부족한 항목을 나열합니다. 제목에 숫자, 인과 관계 또는 수익 약속이 포함된 경우 먼저 스크린샷이 이를 실제로 지원하는지 확인합니다.
- 콘텐츠 캡처: 사용자가 X 앱 조작을 승인한 경우 현재 보이는 콘텐츠만 캡처합니다; 원본 스크린샷을 읽기 전용으로 임시 작업 공간에 복사하고, 완성본 검수 후 임시 사본을 정리하며, 사용자의 원본 스크린샷, 원본 비디오 또는 원본 음악을 삭제하지 않습니다.
- 필터링, 주제 선정 및 Claude 초안: 후속 자동화는 확인된 X 계정 풀에서 공개 게시물만 읽으며, 먼저
content-generation-contract.md의 스크린샷 품질 임계값을 통과시킵니다; 통과 후topic_packet을 작성하고 점수를 매긴 다음 Claude가 5개의 제목 후보, 1개의 추천 제목, 2개의 예비 제목, 4개의 본문 단락 및 5개의 태그를 생성하도록 합니다. 편집자가 이미 제목을 지정한 경우 해당 제목을 바로 잠그고 Claude는 본문과 태그만 생성합니다. Claude 출력은 항상素材稿(소재 원고)이며, 직접 전달할 수 없습니다. - Codex 심층 편집 및 완성된 원고 검토: Codex는 Claude의 초안을 재고해야 하며, 후크, 시선 사로잡기, 실제痛点, 갈등, 정체성 주장, 기억에 남는 문장, 행동 가치 및 증거 경계에 중점을 두고 검토합니다; 필요한 경우 단순히 글자 수를 맞추는 것이 아니라 완전히 다시 작성합니다. 정확히 50자와 5개 태그의 기계적 검사를 완료한 후 최종 완성 원고를 Claude에 규정 준수 검토를 위해 보냅니다; Claude를 사용할 수 없는 경우에만 Hermes로 전환하고
fallback_reason을 기록합니다.editorial_review_status: codex_approved이고 규정 준수 상태가claude_approved또는 합법적인hermes_approved인 경우에만 전달 단계로 넘어갈 수 있습니다. - 배경 선택: 사용자가 제공한 비디오를 우선 사용합니다; 외부 자료는 승인된 공식 페이지에서만 다운로드하고 출처를 기록합니다. 3:4로 자르기/크기 조정하며, 스크린샷 카드의 읽기 영역을 변경하지 않습니다.
- BGM 선택: 먼저
audit_bgm.py를 실행한 다음,approved,sync_allowed=true,commercial_allowed=true인 로컬 레코드에서 감정, 에너지, 길이 및 보컬 상태별로 필터링하고, 최고 점수를 받은 3–5곡 중에서 고정 시드를 사용하여 한 곡을抽選합니다.pending은 후보 제안으로만 사용할 수 있습니다; 제작/전달은 반드시--confirmed-only및human_listen_status=confirmed를 사용해야 합니다. AI가 사람을 대신하여 최종 선택을 하지 않습니다. CC BY 트랙에는 배치 가능한 귀속 텍스트도 있어야 하며, 그렇지 않으면淘汰됩니다. - 합성: 원본 스크린샷, 배경 및 BGM에서 전체 타임라인을 재구성하고, ffmpeg/편집 도구를 사용하여 1080×1440 MP4를 출력합니다. 오류가 발견되면 원본素材로 돌아가 재구성하며, 이미 렌더링된 MP4에 패치를 오버레이하지 않습니다.
- 검수:
ffprobe를 사용하여 비율, 프레임 속도, H.264/yuv420p, AAC, 단일 오디오 트랙, 오디오가 0초부터 시작하여 화면을 덮고 길이가 8초(컨테이너 오차 ±0.05초 허용)인지 강제로 확인합니다; 프레임을抽출하여 카드가 선명하고 추가 텍스트 레이어가 없는지 확인합니다; 오디오에 피크 클리핑, 무음 시작 및 명백한 보컬 충돌이 없는지 확인합니다; 텍스트는 먼저 Codex 심층 편집을 통과한 다음 Claude 규정 준수 검토를 통과하거나, Claude 연결 실패 시 이유를 기록하고 Hermes 예비 검토를 통과해야 합니다. - 보관:
说明小红书XX/第N周/에 정확히 하나의 MP4와 하나의 Markdown을 직접 씁니다; 내부 manifest는 주간 디렉토리 외부에 둡니다. 이번 실행에서 생성된 임시 사본, 임시 프레임, 로그 및 백업 버전만 정리하며, 사용자 원본 자료는 정리하지 않습니다; manifest의 출처, 라이선스 및 해시 레코드를 유지합니다; 로컬 초안 상태를 유지하며 외부 게시를 하지 않습니다. - 샤오홍슈 초안함 (사용자가 명시적으로 요청한 경우에만): 사용자가 로그인한 PC의 Google Chrome 샤오홍슈 창작 센터를 우선接管하며, Codex 내장 브라우저의 로그인 상태를 PC 브라우저 세션으로 간주하지 않습니다. 창작 센터 로그인을 확인한 후 지정된
.mp4를 업로드하고, 같은 제목과 Markdown의 최종 본문/5개 태그를 작성하고, 처리가 완료될 때까지 기다린 후 '초안 저장' 또는 동등한 버튼을 클릭합니다. 저장 후 페이지 프롬프트, 초안 목록 또는 제목 다시 읽기를 사용하여 권위적으로 검증하고draft_upload_status, 시간 및 초안 식별자를 주간 디렉토리 외부의 manifest에 기록합니다. 로그인, CAPTCHA, 리스크 관리, 저작권 고지 또는 사용자의 판단이 필요한 기타 페이지가 나타나면WAIT_USER에서 멈춥니다; '게시', 예약 게시, 동시 게시를 대신 클릭하거나 상호작용 작업을 수행할 수 없습니다.
Hermes / 무표면 설명 검수 하드 제약
매 전달마다 사실적 증거를 기록해야 하며, '대충 비슷해 보인다'는 이유로 통과시킬 수 없습니다:
- 캔버스:
ffprobe는1080×1440이어야 합니다. - 수평 기하학: 프레임抽출 또는 필터 로그는 스크린샷 카드
x=100, w=880, right_margin=100을 증명해야 합니다. - 채우기 자르기: 스크린샷 카드에 pad, letterbox, 흰 여백 또는 투명한 빈 공간이 나타나서는 안 됩니다; 넘치는 콘텐츠는 cover 자르기에서 비롯되어야 합니다.
- 수직 기하학: 초과하지 않은 경우
y=floor((1440-final_card_height)/2); 초과한 경우 먼저 중앙source_vertical_crop_px를 기록하고, 최종 카드 높이는 1440이며y=0입니다. - 둥근 모서리, 테두리, 그림자 및 레이어: 최종 스크린샷 가시 레이어의 마스크 반경은
24px, 카드 가장 바깥쪽 안쪽 테두리는2px #C9D1D8로 고정, 그림자는 검은색16%, 블러12px, 오프셋(0,8px), 확장36px로 고정; 화면에는 동적 배경과 이 스크린샷 카드만 있을 수 있습니다. - 재현 가능: manifest는 위의 기하학 값, 사용자 참조 이미지 경로/해시,
source_crop_rect_px, 검수 시간, 첫/중/마지막 프레임 경로와 해시, 필터 로그 경로 및next_state를 명시해야 합니다; 참조 이미지 또는 증거가 부족하면WAIT_USER에서 멈춥니다.
둥근 모서리, 테두리 및 그림자는 스크린샷 카드가 합성에 들어가기 전에 완료되어야 합니다: 먼저 카드 가장 바깥쪽에서 안쪽으로 2px #C9D1D8 테두리를 그린 다음, scripts/make_rounded_mask.py --width 880 --height FINAL_CARD_H --radius 24 --output rounded-mask.pgm을 사용하여 최종 크기의 PGM 마스크를 생성하고 alphamerge합니다; 동일한 둥근 모서리 카드 알파에서 확장, 블러 및 오프셋된 그림자를 생성한 다음 그림자와 원본 카드를 배경에 합성합니다. 이미 렌더링된 MP4에 레이어를 추가할 수 없습니다. manifest는 테두리와 그림자의 모든 고정 매개변수를 기록해야 합니다.
의도 진입점
다음 구문을 안정적인 내부 라우팅으로 간주하며, 사용자가 스크립트 매개변수를 알 필요가 없습니다:
/xhs-card-video make
/xhs-card-video make --source x-app --week auto --bgm random --confirmed-only --record
/xhs-card-video make --source <screenshot> --background <video> --bgm <bgm-id>
/xhs-card-video bgm init --count 100
/xhs-card-video bgm ingest <file-or-folder>
/xhs-card-video bgm confirm <bgm-id> --status confirmed
/xhs-card-video bgm audit
/xhs-card-video bgm pick --mood rainy --energy low-mid --seed <seed> --confirmed-only --record
/xhs-card-video audit <week-folder>
/xhs-card-video audit <week-folder> --title <제목> --manifest <run-manifest.json>
/xhs-card-video audit <week-folder> --manifest <run-manifest.json>
해당 스크립트는 이 스킬의 scripts/에 있습니다. 스크립트는 재사용 가능한 보조 도구이며, 외부 게시가 이미 실행되었음을 의미하지 않습니다.
로컬 BGM 소재 라이브러리
기본 경로:
{{CREATOR_ROOT}}/说明小红书BGM素材库/
환경 변수 PROOF_EXPLAINER_XHS_BGM_LIBRARY로 덮어쓰는 것을 우선시합니다; 이전 변수 EXPLAINER_XHS_BGM_LIBRARY는 호환성을 위해서만 유지됩니다. 현재 초기 라이브러리에는 100곡이 있으며 10개 카테고리로 나뉩니다: 집중과 일상, 비 오는 밤과 날씨, 분위기와 꿈, 깊은 밤과 네온, 따뜻함과 느린 리듬, 재즈와 서점, 가벼움과 일상, 동양과 선(禪), 복고와 그루브, 세계와 영화적 감성. 100곡은 단지 호출 가능한素材 풀이며, 샤오홍슈 인기 Top 100이 아니며 트렌드 순위를 구성하지 않습니다.
메타데이터 최소 요구 사항
각 트랙은 index.json에 최소한 다음을 포함해야 합니다:
{
"id": "bgm-001",
"relative_path": "audio/01_집중과일상/bgm-001__track.mp3",
"source_page_url": "https://…",
"download_url": "https://…",
"source_platform": "openlofi|user_local|manual_other",
"license_class": "cc0|cc_by|site_custom|user_owned|reference_only|blocked",
"sync_allowed": true,
"commercial_allowed": true,
"standalone_redistribution_allowed": false,
"license_checked_at": "YYYY-MM-DD",
"license_snapshot_path": "licenses/…",
"license_snapshot_sha256": "…",
"rights_notes": "…",
"trend_status": "verified|unverified|not_claimed",
"duration_s": 12.3,
"sha256": "…",
"review_status": "approved|review|rejected",
"human_listen_status": "pending|confirmed|rejected"
}
review_status=approved, sync_allowed=true, commercial_allowed=true이고 라이선스 클래스가 명확한 트랙만 영상에 포함될 수 있습니다. reference_only는 영감 기록에만 사용되며, blocked는 호출할 수 없습니다. 사용자가 제공한 로컬 비디오 오디오는 기본적으로 review입니다; 사용자가 권리를 소유하거나 승인을 받았음을 확인한 후에만 user_owned로 변경할 수 있습니다. 오디오를 별도로 패키징/재판매할 권한은 '영상에 포함'과 다르며, 기본적으로 추론할 수 없습니다.
초기 라이브러리는 Open Lo-Fi v1.0.0의 고정 릴리스 패키지를 사용하며, 디렉토리에 업스트림 카탈로그, README, LICENSE 스냅샷 및 SHA-256을 보관합니다. README는 CC0 1.0을 명시하지만, 타사 샘플/지역적 권리는 이 스킬이 독립적으로 감사하지 않습니다; rights_notes에는 이 주의사항을 반드시 보관해야 합니다. 출처가 Pixabay, Mixkit, OpenGameArt, DOVA 등인 경우 공식 라이선스 페이지를 하나씩 읽어야 하며, 일괄 가져오거나 미리보기 URL을 공식 승인/다운로드 증명으로 사용할 수 없습니다. XHS/TikTok/Instagram의 제한된 인기 오디오 소스를 다운로드하거나 재배포하지 마십시오.
선택 규칙
random은 제약 없는 무작위가 아닙니다:
라이선스 및 디코딩 불합격 → 淘汰
감정 일치 +4
에너지/리듬 일치 +3
길이, 반복 가능, 순수 악기 +2
최근에 사용됨 -1
보컬이 스크린샷 카드와 충돌 -3
먼저 가장 높은 점수를 받은 3–5곡을 유지한 다음, 고정 시드를 사용하여 1곡을 선택합니다; bgm_id, 시드, 선택 이유를 selection_history.jsonl에 기록하며, 실행 로그를 주간 전달 디렉토리로 가져오지 않습니다.
주간 디렉토리, 파일명 및 상태
说明小红书XX/
└── 第N周/
├── <제목>.mp4
└── <제목>.md
第N周는 기본적으로 현재 ISO 주를 사용합니다; 사용자가 주를 지정하면 사용자를 따릅니다.- 파일명은 확인된 제목입니다. 시스템에서 금지하는 문자, 줄 바꿈 및
/만 바꾸고, 조용히 번호로 변경하지 마십시오. - 주간 디렉토리에는 쌍을 이루는 MP4/Markdown 파일만 있을 수 있으며, 임시素材, 로그 또는 하위 디렉토리를 넣지 않습니다; 여러 콘텐츠가 포함된 경우
audit_delivery.py --title <제목>을 사용하여 지정된 쌍을 검토합니다. - 주간 디렉토리의 상위 디렉토리는 정확히
说明小红书XX여야 하며, 주 이름은第1周–第53周형식을 따라야 합니다; 내부 manifest는{{CREATOR_ROOT}}/.xhs-card-video-runs/(또는 사용자가 지정한 주간 디렉토리 외부 경로)에 저장됩니다. - 내부 상태는 다음과 같이 작성할 수 있습니다:
state: INTAKE | WAIT_DATA | WAIT_USER | WAIT_REVIEW | BUILD | AUDIT | local_ready
source_status: captured | supplied | missing
bgm_status: approved_confirmed | approved_pending_listen | review | missing
title_status: locked | draft
publish_status: draft
draft_upload_status: not_requested | pending | saved | blocked
draft_upload_platform: xiaohongshu | none
draft_upload_at: <ISO-8601 or null>
draft_entry_identifier: <title/url/id or null>
copy_length: exact_50 | range_45_65
platform: xiaohongshu
content_review_status: pending | claude_approved | hermes_approved | rework_required
content_review_agent: claude | hermes | none
content_generation_agent: claude | hermes | none
editorial_review_status: pending | codex_approved | rework_required
editorial_review_agent: codex | none
run_manifest: <주간 폴더 외부의 절대 경로>
delivery_path: <주간 폴더의 절대 경로>
next_state: DONE | WAIT_DATA | WAIT_USER
두 최종 파일을 모두 열 수 있고, audit_bgm.py 및 audit_delivery.py --manifest …가 모두 통과하고, 수동 화면/청취 확인이 완료되었으며 외부 게시 작업이 없는 경우에만 local_ready를 보고할 수 있습니다.
실패 처리
- 스크린샷/배경/사용 가능한 BGM 부족: 구체적인 부족 사항을 보고하고
WAIT_DATA에서 멈추며, 승인되지 않은 대체 자료를 다운로드하지 않습니다. - 제목이 원본 게시물의 사실을 변경하는 경우:
WAIT_USER에서 멈추고 확인이 필요한 사실 경계를 제시합니다. - 오디오를 디코딩할 수 없거나, 해시가 중복되거나, 라이선스 필드가 누락된 경우: 후보 풀에서淘汰하고
audit_bgm.py를 실행하며, '일단 쓰고 보자'고 하지 마십시오. - BGM의
human_listen_status가 여전히pending이거나, manifest가 없거나 주간 디렉토리 내에 있거나, CC BY 귀속을 배치할 위치가 없는 경우:WAIT_USER/AUDIT에서 멈추고local_ready를 보고할 수 없습니다. - 렌더링 비율, 카드 가독성 또는 오디오 트랙이不合格인 경우: 해당 임시 출력을 삭제하고 원본素材에서 재구성하며, 패치 레이어를 오버레이하지 않습니다.
- 공개 게시, 예약 게시 또는 상호작용 요청: 초안 상태를 유지하고 사용자가 직접 확인/실행해야 함을 명확히 합니다; 이 스킬은 사용자가 명시적으로 요청하는 경우에만 샤오홍슈 초안함에 업로드하며, 반드시 '초안 저장'에서 멈추고 대신 게시하지 않습니다.
참조 파일
references/xhs-video-contract.md: 캔버스, 카드, 오디오 및 렌더링 제약.references/bgm-library-contract.md: 디렉토리, 라이선스, 필드 및 선택 알고리즘.references/delivery-checklist.md: 전달 전 실행 가능한 검수 체크리스트.references/run-manifest.md: 주간 디렉토리 외부의 출처, 라이선스, 해시 및 수동 확인 체크리스트.references/content-generation-contract.md: 대상 독자, 주제 선정 점수, Claude 초안, Codex 심층 편집, 제목/50자 본문/5태그 메커니즘 및 최종 규정 준수 검토 경로.scripts/install_openlofi.py: 고정 공식 릴리스에서 초기 100곡素材 풀을 초기화합니다.scripts/select_bgm.py: 필터링 및 시드 기반 무작위 선택, 오디오를 변경하지 않습니다.scripts/ingest_bgm.py: 사용자 로컬 오디오를 검토 대기함에 넣고, 기본적으로 권리를 부여하지 않습니다.scripts/confirm_bgm.py: 사용자가 명시적으로 지정한 ID에 대해서만 수동 청취 통과/거부를 기록하고, 사람을 대신하여 결정하지 않습니다.scripts/audit_bgm.py: 인덱스, 경로, 디코딩, 해시 및 라이선스 필드를 확인합니다.scripts/audit_delivery.py: 주간 디렉토리의 두 파일 계약, 초안 상태, 콘텐츠 검토 상태, 기하학적 증거 및 MP4 기본 스트림 정보를 확인합니다.