Launch kit — 미디어를 릴리스와 함께 출시하세요
릴리스의 영상이 아닌 미디어를 제작합니다. 출시된 기능의 단 한 번의 테이크가 릴리스에 필요한 모든 에셋이 되며, 대상별로 구성되고 크기가 조정되고 검증되며, 다음 릴리스가 재촬영이 아닌 재렌더링이 되도록 편집 가능한 문서로 유지됩니다. 모든 것이 데이터입니다. 프리뷰는 렌더링이며, 4K까지 모든 해상도에서 워터마크 없이 무료로 내보낼 수 있습니다. 엔진은 MIT 라이선스입니다.
이 키트는 vos deliver라는 하나의 명령어로 렌더링되며, 문서들은 감각을 전달합니다. 모든 카드는 POSTER 문서의 프레임입니다. (포스터가 원하는 위치에 카드가 있고, 단어와 마크가 클립으로 있는 평범한 테이크). 모든 컷은 vos plan이 제안한 모션을 문서에 담아 재생합니다. (진입, 엔드 카드, 캡션, 배경 음악). 정적 순간은 스토리에서 오며, 두 검증자가 무엇이 잘못되었는지 말로 알려줍니다. deliver는 아무것도 구성하지 않습니다. 당신의 판단은 세 개의 파일(BRAND.md, LAUNCH.md, actions.json), 하나의 선택(카드가 따르는 선반 위의 포스터), 그리고 하나의 결정(어떤 순간이 스토리인지)에 들어가며, 수동으로 자르는 데 사용되지 않습니다.
설정
npm i -D @vosjs/cli # vos CLI (테이크 파이프라인 포함)
ffmpeg가 PATH에 있으면 CLI가 내보내지 않는 것(PH 호버 GIF)을 처리하고 vos validate --picture가 비디오의 첫 번째와 마지막 프레임을 읽을 수 있게 합니다. MP4 렌더링은 시스템의 Chrome이 필요합니다(--format mp4).
1. 릴리스 설정
녹화 전 다섯 가지 사실:
-
출시된 것 — 기능, 버전 문자열, 실행되는 URL.
-
대상 채널 — 채널별 사양 테이블이 데이터로 제공됩니다.
node_modules/@vosjs/cli/schema/channel-specs.json(CWS, Product Hunt, X, LinkedIn, GitHub, OG, YouTube; 크기, 개수, 바이트 및 기간 제한, 단어 정책 및 대상별 안전 사각형, 각 이미지의 GENRE:screenshot은 실제 페이지,card는 포스터 문서의 프레임입니다.references/channel-specs.md는 표로 된 동일한 데이터입니다). 이것을 반복하고, 치수를 수동으로 입력하지 마십시오. 이 릴리스가 어떤 채널로 전달되는지 물어보십시오. 기본값은 마지막 릴리스의 세트입니다. JSON에는verified날짜가 있습니다. 분기보다 오래된 경우 배송 전에 채널 문서를 점검하십시오. -
브랜드 — 에셋 제작 전에 해결하고, 레이아웃 자체의 팔레트를 기본값으로 사용하지 마십시오. 프로젝트 폴더의
BRAND.md가 브랜드 키트입니다. (frontmatter는 색상 역할bgA bgB bgC ink accent, 글꼴 역할fontDisplay fontBody,logoUrl(베어 마크, 타일 아이콘이 아님),wordmark, 그리고look을 담고 있습니다. 프레젠테이션은 사이트 자체의 배경이 요구하는 것입니다.plate는 종이 사이트용,dark는 어두운 사이트용, 그 외에는gradient입니다). 없으면vos brand <url>이 사이트의/design.md,/llms.txt및 페이지 자체에서 이를 증명하고, 모든 역할을 출처와 함께 기록합니다. 읽고, 페이지가 말할 수 없는 것을 수정하고,vos recipe push BRAND.md --folder <slug>로 제출하십시오. 테이크 옆 (또는 테이크의 상위 폴더)에 배치하십시오.plan과deliver는 플래그 없이 거기서 읽습니다. -
단어 — 테이크 옆의
LAUNCH.md가 frontmatter에 릴리스의 역할을 담고 있으며, 플래그 없이 읽습니다.headline: "두 단어에서 여섯 단어\n최대 세 줄" # 포스터와 엔드 카드 kicker: "PRODUCT V2.1" # 없음 = wordmark 더하기 --release music: upbeat # 카탈로그 슬러그 또는 분위기; none = 무음 entrance: tilt-in # tilt-in | pull-out | rise | none endCard: on # 공식 End 카드 템플릿; none은 끔; 제목, vos id 또는 doc.json 이름은 다른 것을 지정 with: "Split cover, landscape@end" # 선택 사항: 앵커(@end | @start | @step:<id> | @<seconds>)에 배치된 템플릿 captions: on # none은 비트 캡션을 끔 poster: poster/landscape # 선택 사항: 모든 카드가 렌더링되는 문서 poster-tile: poster/tile # 선택 사항: 자체 이름이 지정된 하나의 클래스헤드라인은 릴리스가 말하는 한 줄입니다.
\n으로 줄을 나누어 작성하십시오.vos plan은 컷의 모션을 제안할 때 모션 역할을 읽고plan --style은 단어를 포스터에 입력합니다.deliver는poster역할만 읽으며, 없으면 테이크 옆에서poster/<class>/doc.json을 찾습니다. -
레이아웃 — 카드가 따를 포스터, 선반 위에 있습니다. vos.so의 공식
Poster families프로젝트는POSTER.md옆에 종횡비 클래스(landscape, square, portrait, tile)당 하나의 예제를 보유하며, 각 클래스가 언제 적합한지 설명합니다. 제작자 자신의 프로젝트도 같은 형태입니다.vos folder pull poster-families는 vos id와 함께 나열합니다. 레이아웃 이름이나--layout플래그는 없습니다. 예제 자체가 레이아웃이며, 데이터로 복사됩니다.
대상이 뷰포트를 결정하며, 녹화 전에 결정됩니다. 푸티지 해상도 = 뷰포트이며, 1280×720 테이크로 1920×1080 비디오 사양을 정직하게 채울 수 없습니다. 1080p 키트의 경우 1920×1080으로 녹화하고, 대상이 더 큰 경우 2560×1440으로 녹화하십시오.
작업이 vos.so 프로젝트(폴더)에 있다면 먼저 가져오고 그 안의 모든 .md 레시피를 읽으십시오. LAUNCH.md는 이 루프를 CUT.md가 컷을 바인딩하는 방식으로 바인딩하고, POSTER.md는 포스터를 바인딩합니다. 레시피는 이 스킬의 기본값을 재정의합니다.
2. 소스: 실제 제품의 단일 테이크
키트는 제품으로부터 만들어지며, 목업에서 만들어지지 않습니다. (스토어 정책 동의: 오해의 소지가 있는 리스팅 이미지는 제거 위반입니다.)
녹화 전에 콘텐츠를 세트처럼 준비하십시오. 프리미엄 런치 이미지를 스크린샷과 구분하는 요소의 절반은 화면에 무엇이 있는가입니다. actions.json은 포스터나 스토어 스틸이 잘리기 전에 제품을 자랑스러운 스크린샷이 보여줄 상태로 남겨두어야 합니다. — 레이블 입력, 실제 데이터처럼 보이도록, 기능이 스토리 중간에 있도록. deliver는 빈 순간(배경화면, 빈 캔버스)을 드롭하고 그렇게 말하지만, 세트를 준비할 수는 없습니다.
actions.json에 스토리를 작성하십시오. 단계에 id를 부여하십시오. (순간과 재렌더링 루프가 이를 주소로 지정합니다). 비트가 가치가 있는 곳에 caption을 부여하십시오. (두 단어에서 여덟 단어; plan은 단어를 사용하는 컷에서 해당 단계의 순간에 하단 1/3으로 제안합니다). 탐색하는 클릭 후에는 로드를 위한 wait를 넣으십시오. 스틸은 해당 wait의 끝에서 읽히므로, 프레임은 페이지를 보여주고 스피너를 보여주지 않습니다.
- 새 녹화:
product-video스킬의 루프 (탐색 →actions.json→vos record --strict→doc.json조정).actions.json을 리포지토리에 보관하십시오. — 다음 릴리스의 스크립트입니다. - 출시된 기능이 로그인 뒤에 있는 경우: 스크립트 전에 세션을 처리하십시오.
product-video스킬의 사다리 방식으로 (전체 내용은 https://vos.so/llms-full.txt, "Sessions" 참조): 리포지토리에 이미 있는 테스트 인증에서 생성하거나, 오프 카메라로 양식을 스크립팅하거나, 사람이 한 번 로그인(vos session open <url> --name <app>, 그런 다음--session <app>)하거나, 확장 프로그램으로 녹화하고 컷을 만듭니다.--storage-state <파일>로 녹화하십시오. 릴리스는 모든 버전을 다시 녹화하므로, 사람이 필요 없는 단계를 선호하십시오. 다음 릴리스에서도 여전히 작동하는 단계입니다. 프로덕션 비밀번호를 입력하거나 수락하지 마십시오. 상태 파일을 테이크 밖에, git 밖에 두십시오. 데모 계정에서 녹화하십시오. 실제 고객 데이터를 보여주는 스토어 리스팅은 제거 위반 실수입니다. - 기존 테이크:
vos-cut스킬로 컷하십시오. 호스팅된 테이크는vos fetch <vosId|watch-url> --out dir --media로 가져옵니다. - 이미 촬영된 제품의 새 버전: 동일한 테이크에
vos record로 다시 녹화하십시오. (푸티지는 교체되고, 컷은doc.prev.json으로 유지됩니다). 그런 다음vos plan take --reuse가 새 녹화에 컷을 다시 타임라인하고 따를 수 없는 것을 말합니다. 처음부터 시작하지 마십시오. 모든 수정은doc.json에 대한 편집입니다.
다른 곳에서 렌더링된 모션 그래픽 세그먼트는 입력입니다. 문서에서 미디어 오버레이 클립 또는 배경으로 드롭되며, 그 반대는 아닙니다.
3. 문서로서의 포스터와 모션
컷은 데이터로 움직입니다. 새로운 vos plan은 LAUNCH.md의 역할에서 컷의 모션을 doc.json에 제안합니다. 카드의 진입, END CARD (vos.so의 공식 End card 템플릿, 끝에 배치: 카드는 마지막 프레임의 1초 정지 위로 물러나고, 그런 다음 마크, 단어별로 도착하는 헤드라인, 릴리스 라인과 URL이 바닥에 정착합니다. 클립은 from: endcard로 스탬프됩니다). with:가 앵커에 이름을 지정하는 템플릿, 단계당 캡션, 배경 음악, 그리고 마이크가 없는 테이크의 모든 누름에 클릭 소리; 모든 제안은 안정적인 id(bed, click-<n>, caption-<step>)를 갖습니다. 기존 컷에서 --motion은 다시 제안합니다. 새로 고침은 절대 하지 않으므로 삭제된 엔드 카드는 삭제된 상태로 유지됩니다. 템플릿은 클립이 안정적인 id를 갖는 선반 위의 평범한 테이크입니다. 참조는 공식 선반의 제목("End card", "Split cover, square"), vos id 또는 디스크의 문서입니다. 스튜디오에서 테이크를 열면 보는 것이 키트가 렌더링하는 것입니다.
vos plan take --motion --release v2.1
포스터는 문서, 평범한 테이크입니다. frame.inset으로 배치된 카드 (음수 쪽은 가장자리 밖으로 흘러나감), 틸트 트랙의 휴식 포즈로 기울어짐, 단어와 마크는 오버레이 클립으로 안정적인 id(stage-title, stage-kicker, stage-brand, stage-mark)를 가지며, 마지막 세그먼트에 후행 hold가 있고, 그 시작이 스틸입니다. 릴리스에 필요한 종횡비 클래스(landscape, square, portrait, tile)당 하나씩 만들어 각각 테이크 자체의 푸티지로부터 만듭니다.
cp -r take poster/landscape # 또는 vos duplicate <take vosId>, 그런 다음 fetch --media
vos plan poster/landscape --style <poster vosId|doc.json> --headline "…" --kicker "…"
vos frames poster/landscape --frame <rest>; vos validate poster/landscape
vos push poster/landscape --folder <project-slug> --label "poster, landscape"
plan --style <poster>는 레이아웃(카드의 배치와 프레젠테이션, LAUNCH.md 또는 플래그에서 릴리스의 단어가 패치된 스테이지 클립, 나머지 기울어짐, hold)을 테이크에 복사하고 테이크 자체의 종횡비, 크롬 및 컷을 유지합니다. BRAND.md logoUrl의 브랜드 마크는 stage-mark용으로 brand/로 가져오고, 따를 수 없는 것은 말합니다. 세그먼트를 순간(줌 정점, 클릭 후 안정된 응답)으로 좁혀서 나머지가 콜드 오픈이 아닌 기능이 되도록 하십시오. 제품은 hold까지 카드 내에서 계속 재생될 수 있습니다. 그런 다음 나머지 프레임을 보십시오. 포스터는 푸시되기 전에 눈으로 판단됩니다. 사람이 스튜디오에서 열고 카드를 드래그하고, 제자리에 단어를 다시 입력하고, hold를 이동합니다. vos pull --media는 이를 다시 가져오고, 다음 릴리스는 자체 푸시된 문서에서 동일한 plan --style로 단어를 다시 설정합니다.
4. 전달
vos deliver take --to cws,producthunt,x,linkedin,og,github,youtube --release v2.1
한 번의 패스로, 동사는 당신이 수동으로 결정하던 것을 결정합니다.
- 순간들. 정적 시간은 스토리에서 옵니다. 각 단계의 끝에 안정화 시간(클릭 후 wait의 끝)이 더해지고, 그런 다음 줌 정점, 그런 다음 분포. 각 후보는 실제 페이지로 한 번 읽힙니다. 빈 것은 드롭되고, 동일한 프레임의 두 개는 하나로 축소되며, 모든 드롭은
skipped[]에 말해집니다.--times step:<id>[+offset]은 하나를 지정합니다. - 스크린샷은 실제 페이지이며, 전체 블리드입니다. 스토어 스틸과 갤러리는 기본적으로 컷의 줌, 틸트 및 크롬을 드롭합니다. (
--composed는 이를 유지하며, 픽처 패스는 거부합니다.