1Password에 저장한 비밀번호와 API 키를 명령과 설정 템플릿에 사용합니다. CLI 설치와 인증부터 비밀 값 조회 및 환경 변수 전달까지 안내합니다.
- 1Password CLI 설치와 설정
- 저장된 API 키로 명령 실행
- 설정 템플릿에 비밀 값 삽입
주제나 대본과 사용 허가를 받은 성인 인물 이미지로 내레이션과 자막이 있는 발표자 영상을 제작합니다. 입 모양과 화질을 확인하고 음량을 조정해 보관용과 공유용으로 내보냅니다.
Make a verified AI presenter video from script + image.
ai-presenter-video는 주제나 대본과 사용 허가를 받은 성인 인물 이미지 한 장으로 발표자가 설명하는 영상을 제작합니다. 내레이션을 생성하고 대본과 일치하는지 확인한 뒤 음성에 맞춰 영상과 자막을 편집합니다. 음성과 입 모양의 동기화인 립싱크와 인물의 일관성을 확인하고, 음량을 조정한 보관용 및 공유용 영상과 검증 보고서를 출력합니다. 기존 작업 재개, 자막 추가, 수정, 다시 내보내기도 지원합니다.
짧은 설명 영상을 만들거나 제작 중인 발표자 영상을 마무리할 때 유용합니다. 짧은 시험 영상으로 외모와 입 모양을 확인한 뒤 본 제작에 들어가며, 확인된 결과물은 재생성하지 않고 활용합니다.
Linux와 macOS용이며 ffmpeg, ffprobe, python3가 필요합니다. 최종 출력에는 bash, jq, awk도 사용합니다. 음성 및 영상 생성용 외부 도구가 필요하며 유료 생성과 이미지 외부 전송은 사전 승인이 전제입니다. 이미지 권리와 성인 여부를 확인해야 하며 음성 복제는 별도 허가가 필요합니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용만을 근거로 4가지 관점에서 판정했습니다. 스타 수나 인기도는 판정에 넣지 않았습니다.
총점은 각 항목을 A=25점, B=15점, C=5점으로 더한 값입니다. 2026년 10월 19일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Turn a topic (or finished script) plus ONE authorized adult presenter image into a complete, publish-ready presenter-led video: locked narration, avatar generation with lip-sync QA, captions, deterministic editing, loudness-normalized master/share encodes, and machine + visual acceptance reports.
Use this skill for new presenter videos AND for continuing, revising,
captioning, lip-sync-repairing, or re-exporting an existing presenter-video
job. The workflow is provider-neutral: pick generation capabilities from what
is actually available in the session (FAL video/image models via
image_generate and the video-gen plugin, TTS via text_to_speech, ASR via
the whisper/STT tooling, ffmpeg for everything deterministic).
Ported from cclank/lanshu-create-ai-presenter-video (MIT). Upstream body kept substantively verbatim in
references/; Hermes adaptations live in this hub file. Scripts are deterministic (no network, no credentials).
Skill dir resolution — upstream hardcoded its own agent's skills path.
In Hermes the loader expands ${HERMES_SKILL_DIR} to this skill's installed
directory, so every command below uses that token directly:
SKILL_DIR="${HERMES_SKILL_DIR}"
Shell variables do not persist between tool calls — re-paste the assignment (or the expanded path) in each terminal call that uses it.
Capability mapping — where the references say "a voice generation
capability", use text_to_speech (OpenAI/Edge/ElevenLabs per user config);
"presenter/avatar generation" → FAL image-to-video families (Kling, Wan,
MiniMax H3 etc.) through the configured video tooling, or an avatar/lipsync
endpoint the user has access to; "word-timestamp ASR" → whisper via the STT
tooling or faster-whisper in a venv; "deterministic compositor" → ffmpeg
filtergraphs, or the hyperframes skill when installed (the editing
reference has a HyperFrames section that maps directly onto it).
Visual QA — do the "normal-speed visual review" steps with
vision_analyze on the generated contact sheet plus sampled frames
(identity, mouth timing, hands, blinking, continuity). Numeric checks come
from the scripts' ffprobe output.
Paid-generation consent — remote avatar/TTS generation is billable.
Follow the upstream operating rules: before the first paid call state the
uploaded assets, requested seconds, known cost, pilot size, and retry
ceiling, and get the user's explicit go-ahead. Never upload the presenter
image to a remote provider before remote_upload_approved is true in
job.json.
Consent flags live under input — rights_confirmed,
adult_presenter_confirmed, remote_upload_approved, and
voice_clone_approved sit inside the input object of job.json (init
flags set them; hand-editing must target input.*, not the job root).
manual_input_review.* sits at the root. preflight.py distinguishes
errors (block everything) from remote_blockers (block only remote
generation) — local script/audio work may proceed while remote is blocked.
Start or resume a job. New job:
python3 "$SKILL_DIR/scripts/init_job.py" \
--job-dir ~/Videos/my-presenter-video \
--presenter-image /path/to/presenter.png \
--topic "explain context engineering in one minute" \
--duration 60 --aspect 9:16 \
--rights-confirmed --adult-presenter-confirmed
Use --script for an existing script file; other flags: --voice-sample,
--supporting-media, --width, --height, --fps, --watermark,
--cta. For an existing job, read job.json + QA reports and resume from
the earliest unfinished state — never regenerate accepted work.
Manual input review. Actually look at the presenter image
(vision_analyze) and listen to any voice sample; record findings by
setting the manual_input_review booleans in job.json, e.g.:
python3 - <<'PY'
import json
p = "~/Videos/my-presenter-video/job.json" # expand ~ or use an absolute path
import os; p = os.path.expanduser(p)
j = json.load(open(p))
j["manual_input_review"].update(image_viewed=True, single_clear_face=True,
image_has_no_unwanted_text=True)
json.dump(j, open(p, "w"), indent=2)
PY
Then gate:
python3 "$SKILL_DIR/scripts/preflight.py" ~/Videos/my-presenter-video/job.json
Proceed only when ok: true; do remote generation only when
remote_ready: true. Note: preflight also updates job.json in place
(records the report path) — re-read it after running rather than editing
a stale copy.
Lock content and audio — read references/generation.md. Script →
full narration via text_to_speech → ASR-verify the narration against the
script → record real durations. The locked audio is the master clock for
everything downstream.
Plan and generate the presenter — read references/generation.md.
Short low-cost pilot first; full run only after the pilot passes identity
and mouth-timing review.
Edit — read references/editing.md. Deterministic timeline driven by
the locked audio; captions and keyword callouts only after audio and media
are final.
Verify and deliver — read references/qa-recovery.md, render, then:
bash "$SKILL_DIR/scripts/finalize_delivery.sh" \
~/Videos/my-presenter-video/renders/rendered.mp4 \
~/Videos/my-presenter-video/outputs my-video
The finalizer preserves aspect ratio, runs two-pass loudness normalization
(program ≈ −16 LUFS), produces master + share encodes, decode-verifies
both, writes a delivery report JSON, and emits a nine-frame contact sheet.
Inspect the contact sheet with vision_analyze before claiming completion.
9:16, 1080×1920, 30fps; topic-derived videos target 45–75s; stock voice when no authorized sample; presenter-led layout with hook → 2–4 beats → close; no music/CTA unless requested; language inferred from the request.
references/generation.md — intake, content, voice, capability selection,
presenter prompts, paid generation, provider changes.references/editing.md — timeline contract, openings/closes, captions,
keyword-callout presets, HyperFrames composition, exports.references/qa-recovery.md — technical acceptance, visual acceptance, and
recovery for lip-sync/identity/hands/exposure/freeze/caption/audio faults.preflight.py requires ffprobe; on a bare box install ffmpeg first.input.*; editing them
at the job-json root silently does nothing (preflight keeps blocking).finalize_delivery.sh needs bash + jq + awk and a fully decodable input —
a truncated render fails the decode check by design, not by accident.Validated hands-on (Aug 2026): init_job.py → job.json with correct state
machine; preflight.py correctly blocked on unreviewed inputs, flipped to
ok: true after review booleans, and kept remote_ready: false until
input.remote_upload_approved; finalize_delivery.sh on a synthetic 5s
1080×1920 render produced decode-verified master (631kbit/s) + share encodes,
delivery-report JSON, and a 9-frame contact sheet, exit 0.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
1Password에 저장한 비밀번호와 API 키를 명령과 설정 템플릿에 사용합니다. CLI 설치와 인증부터 비밀 값 조회 및 환경 변수 전달까지 안내합니다.
손익계산서·재무상태표·현금흐름표를 수식으로 연결한 Excel 모델을 만듭니다. 실적과 예측 가정을 입력하고 시나리오를 비교하며 세 재무제표의 일관성을 단계별로 확인합니다.
기존 PyTorch 학습 코드를 적은 수정으로 여러 GPU나 컴퓨터에 맞게 구성합니다. 혼합 정밀도, 메모리 절약 설정과 학습 실행 방법을 안내합니다.
Hermes에서 Actual Computer로 자신의 기기에 AI 모델을 실행하도록 연결을 설정합니다. 중계 서비스와 로컬 연결, 모델 선택, 응답 확인 및 오류 점검을 다룹니다.
기술에 익숙하지 않고 쉽게 불만을 느끼는 사용자로 앱을 시험합니다. 혼란스러운 조작과 이탈 원인을 찾고, 개선 과제와 개인적 불만을 나눠 수정안을 정리합니다.
두 에이전트가 각각 수정한 브랜치의 Git 충돌을 양쪽 변경 내용과 의도에 따라 중립적으로 해결합니다. 충돌별 판단 이유를 기록하고 빌드나 테스트로 통합 결과를 확인합니다.