資料には具体的なスキルの内容や手順が記載されていないため、用途や得られる結果を特定できません。
- 用途を確認したいとき
- 入力や手順を確認したいとき
- 期待する結果を確認したいとき
既存動画の冒頭だけを指定クリップや動く文字に差し替え、元の本編・音声・字幕・エンディングを保った動画を書き出して確認するスキルです。
Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending. Use for surgical hook tests rather than regenerating the complete ad.
実行スコア 未検証
インストール方法を見る既存動画の冒頭を、指定した動画クリップまたは短い動く文字に差し替え、元の本編につないだMP4を書き出します。本編の映像フレームや音声、字幕、エンディングは元動画から引き継ぎ、編集内容や保存状態をマニフェストに記録します。字幕ファイルが別にある場合は、冒頭の長さの変化に合わせてタイミングを調整します。元動画との照合では、本編のフレーム数や順序、音声などを確認します。
広告全体を作り直さず、冒頭の見せ方だけを変えて比較したいときに向いています。差し替え後も元の本編や終わり方を残したい場合や、編集候補ごとに元動画との関係を記録しておきたい場合にも使えます。
Python 3.10以降と、libx264・AACに対応したffmpeg、ffprobeが必要です。動く文字にはPillowと、利用許諾を確認したフォントを指定します。元動画は対応する形式である必要があり、形式が合わない場合は確認済みの変換版を別途用意します。生成映像や音声はこのスキルの範囲外で、別途見積もりと承認が必要です。書き出した動画は実際に再生し、映像・音声を確認するまでレビュー待ちです。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Replace only the opening of a selected video. The rest comes from the original, including its ending and burned captions. A supplied hook uses free local assembly; short text can become a free animated card. Generated footage or voice is optional and requires a separate estimate and approval.
The output is a complete MP4 and an edit manifest identifying the exact original, cut, duration change and preservation checks. It stays needs review until the finished video has been watched and its sound checked.
Perform one hard-cut opening replacement with immutable source identity and decoded retained-body verification. There is no fixed three-second boundary, mandatory creator, new music, body regeneration, whole-video caption pass or automatic final selection. Read the editing guide.
ffmpeg/ffprobe with libx264 and AAC. Test the binaries
themselves before any paid step. Supplied-clip execution uses only Python stdlib.source.path: exact selected original, never a template sample. Optional
source.sha256 refuses changed bytes; project_id/render_id are opaque caller
identifiers preserved in the manifest. Compute and freeze the hash at intake.hook_end_sec: positive opening boundary leaving a body. If speech crosses it,
choose a measured word/silence boundary. No silent correction of that boundary.hook.path: supplied video, any dimensions/frame rate, normalized to the original.
Or hook.text, duration_sec, font_path and optional #RRGGBB colors. Text needs
Pillow (part of the video toolchain) and an explicitly supplied licensed font.words:[{start,end,word}] measured on this source, or word_times JSON
containing source_sha256 and words. A cut through a measured word fails.captions:{path,output_path}: original separate SRT or timed JSON cues.
Complete retained cues shift by the measured duration delta. A cue crossing the
cut requires measured words, so removed opening copy does not linger over the body.output:{path,manifest_path?}: a new .mp4 path. Existing outputs and every input
are protected from overwrite. The default manifest is <output>.manifest.json.The original must be CFR, unrotated square-pixel 8-bit yuv420p with zero video start time. Other sources fail before assembly. If normalization is necessary, make it a separately approved source version and freeze that version; do not quietly remaster the selected original. Audio is optional. An original audio/container tail more than 2ms beyond the last video frame also blocks; make a reviewed source version with a final-frame hold before editing. The renderer never trims that narration/music tail and calls it preserved.
python3 scripts/replace_hook.py --preflight --config /path/to/source-config.json.
This needs only source/cut and optional words/captions, verifies runtime encoders
and supported source shape, and writes no media or paid job.
Generated hooks are separate work: read the chosen generation capability, quote
only the required new opening, obtain approval, then bind its finished clip here.python3 scripts/replace_hook.py --config /path/to/config.json.
The script normalizes only the hook geometry/fps; joins original body at normal
speed; uses browser-compatible High-profile libx264 CRF 12; retains original body audio with AAC 256k;
shifts separate captions; and checks source integrity before publishing files.review:{status:'passed',source_sha256:<original hash>,output_sha256:<finished hash>,checked_at:<ISO datetime>}
alongside the passing quality report. Never recycle another output's review.From a fresh package folder:
python3 scripts/make_demo.py --out-dir demo
python3 scripts/replace_hook.py --config demo/config.json
python3 -m unittest discover -s tests -v
The neutral fixture replaces 2.4s with 1.5s and retains the original body/end.
--font /path/to/licensed.ttf adds burned captions to the fixture. Set
HOOK_TEST_FONT=/path/to/licensed.ttf to test the optional kinetic text route too.
The demo makes no network requests or paid calls. It is a timing fixture, not a
customer ad or catalog upload. High-quality retained-body encoding can produce large files.
For a local pack, use python3 scripts/replace_pack.py --config pack.json with
the same source, hook_end_sec, optional words/captions, output_dir and
variants:[{label,hook:{path}}]. The wrapper freezes one source hash and writes
one complete MP4/manifest per label plus pack-manifest.json. Successful siblings
remain available if one fails; retry the failed target with the single renderer.
source.{sha256,project_id,render_id}, hook_end_sec,
body_start_sec, replacement_duration_sec, new_body_start_sec,
duration_delta_sec, output.{path,sha256,duration_sec}, caption artifacts and
verification.{source_unchanged,body_video_preserved,body_audio_preserved,caption_timing_preserved}.status/review.status: needs_review. No project storage behavior is embedded
in this generic renderer; the caller saves candidates and performs final review.| Problem | Action |
|---|---|
| Wrong source hash or stale word file | Refetch the selected version and remeasure; never switch versions silently. |
| Cut clips speech or a separate caption | Choose a safe boundary; supply measured words for a partial caption. |
| VFR, HDR/10-bit, rotated or nonzero-start original | Create an explicitly reviewed normalized source version first. |
| Original audio outlasts video | Make a reviewed source version with a final-frame hold, then freeze that version; never drop the audio tail. |
| Missing/corrupt media or LFS pointer | Resolve real media before rendering or generation. |
| Existing output path | Use a fresh version path; never overwrite the original. |
| Local ffmpeg has no drawtext | Text uses Pillow PNG + fade/slide overlay; drawtext is not required. |
| Retained-body verification fails | Candidate is not published; inspect the failed video/audio metric and original remains available. |
| Needed generated creator/voice unavailable | Keep supplied footage/text options; show missing provider and new estimate before a paid retry. |
Used by the create-hook-variant-pack recipe. Check each candidate with the watch
skill. This renderer's own scripts handle the source preflight, the cut and the caption
shift.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
資料には具体的なスキルの内容や手順が記載されていないため、用途や得られる結果を特定できません。
顧客の課題や商品情報、広告事例を調べ、根拠のある広告訴求と静止画・動画・コピー案にまとめます。動画案は実際の制作フォーマットとの相性も確認し、商品単位の角度集として整理します。
Google、Meta、LinkedInなどの広告実績を分析し、成果の出た広告や予算の無駄を特定します。停止・拡大・テスト案や、具体的な予算配分を提案します。
広告費と登録後の成果を照合し、質の高いリード獲得にかかった実コストを算出します。広告素材ごとに拡大・維持・調査・停止の判断材料を整理するスキルです。
Meta広告を始める前にブランド情報を調べ、予算や広告表現に関わる不明点だけを質問して準備を整えます。確認事項と仮定を記録し、ブランド情報とキャンペーン概要を作成します。
広告文や画像内の表現を配信先と商品カテゴリのルールに照らして確認し、直せる箇所を修正しながら、法務や人の判断が必要なリスクを広告ごとに整理します。