three.js로 입체 모델을 만들고 회전 가능한 뷰어에서 모든 각도로 확인합니다. OBJ + MTL이나 GLB로 저장해 다른 3D 제작 소프트웨어에서 사용할 수 있습니다.
- 입체 모델을 만들고 모든 각도에서 확인하기
- Blender에서 편집할 모델 만들기
- 모델의 윤곽과 재질 표현 확인하기
Gemini Omni 1.1 Flash로 문장이나 이미지에서 동영상을 만들고 기존 클립을 편집하거나 최대 40초까지 연장합니다. 입력 영상 조정, 음성 유지 또는 재생성, 여러 작업의 병렬 실행도 지원합니다.
Use this skill for generative video editing, text-to-video, image-referenced video generation, first-frame-to-video, first-and-last-frame transitions, and video extensions using Gemini Omni 1.1 Flash (gemini-omni-1.1-flash) via the official google-genai SDK. Includes workflows for pre-processing/optimizing high-resolution or long source videos with ffmpeg, stripping audio for full sound regeneration, and handling turn-by-turn video editing and parallel execution.
실행 점수 미검증
설치 방법 보기Gemini Omni 1.1 Flash를 사용해 동영상을 생성하고 편집합니다. 문장에서 영상을 만들거나 시작 이미지를 움직이게 하고, 시작 이미지와 끝 이미지 사이의 전환을 생성할 수 있습니다. 이미지나 동영상을 인물, 사물, 스타일의 참고 자료로 지정하는 생성도 지원합니다. 기존 영상의 스타일을 바꾸거나 일부를 수정하고 최대 40초까지 연장할 수 있습니다. 편집할 때 원래 음성을 유지하거나 영상에서 음성을 제거한 뒤 새 음성을 생성하도록 선택할 수 있습니다. 포함된 스크립트로 영상 길이와 해상도를 조정하고 여러 생성 또는 편집 작업을 병렬로 실행할 수 있습니다.
짧은 영상 초안을 만들거나 이미지에서 애니메이션을 만들 때, 기존 클립의 분위기를 바꾸거나 후속 장면을 만들 때 사용할 수 있습니다. 긴 영상이나 고해상도 영상을 다루기 전에 입력 영상을 확인하고 조정하는 데도 유용합니다.
Python 3.10 이상, google-genai 2.19.0 이상, GEMINI_API_KEY가 필요합니다. 영상 전처리와 음성 제거에는 ffmpeg와 ffprobe가 필요합니다. EEA, 스위스, 영국 및 미국 일부 주에서는 영상을 업로드해 편집하거나 연장할 수 없습니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.
점수에는 넣지 않았습니다. 2026년 10월 30일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
This skill uses the Gemini Omni 1.1 Flash model (gemini-omni-1.1-flash) to perform text to video generation, image to video generation (first frame and last frame transitions), video extensions (up to 40s), and video editing.
[!WARNING]
Important Regional Restrictions: Uploading videos to use for video edits or extensions is NOT available in the EEA, Switzerland, the United Kingdom, and some US states. If a video-to-video edit completes quickly with empty outputs (total_output_tokens: 0or no video content), it is likely due to this restriction.
--first-frame).--first-frame and --last-frame; note: --last-frame must be used with --first-frame).--extend or --previous-interaction-id).Analyze request: Determine the target task (e.g., first-frame-to-video, first-and-last-frame transition, video extension, reference-guided editing) and identify any input media assets.
Run SDK scripts:
scripts/video/generate_video.py or scripts/upload_file.py).--aspect-ratio (e.g. 16:9, 9:16), --resolution (360p, 720p, 1080p, 4k; default: 720p), and --duration (any integer between 3 and 10 seconds, e.g. 3, 5, 10). Note: 4k requests take longer to generate.Retrieve and process output: Outputs are saved to the local filesystem (e.g. media/). Report back the completed media path to the user.
gemini-omni-1.1-flash) are handled via the Interactions API.interactions.create input parts array.google-genai): Requires google-genai >= 2.19.0 (Python) to support the interactions client and full video output resolution configuration (360p, 720p, 1080p, 4k). Install or upgrade using:
pip install -U google-genai
google-genai SDK types and methods).prep_video.py, inspect_video.py, and generate_video.py (when stripping audio via --strip-audio) require ffmpeg and ffprobe binaries installed and available in your system PATH.GEMINI_API_KEY environment variable:
export GEMINI_API_KEY="your-api-key"
Use the following Python scripts to upload media with the Files API, prepare input videos with ffmpeg, and generate video outputs using the Interactions API.
upload_file.py: Uploads local media (images and videos) to the Files API and polls until ACTIVE. If uploading a video larger than 25MB, it prints an informative warning/tip highlighting that Gemini Omni Flash is optimized for editing 10s videos at 720p/24fps, and recommends pre-processing with prep_video.py first to speed up the upload.
./scripts/upload_file.py path/to/image.png
generate_video.py: Performs end-to-end video generation and downloads the output video. It detects and uploads local media references (images or videos) before calling the Interactions API. Large video assets (>25MB) will trigger informative pre-processing recommendations without blocking the upload.
Text to video:
./scripts/video/generate_video.py "A close-up of a cat drinking tea" --output media/cat_tea.mp4
Output resolution options (--resolution):
Gemini Omni 1.1 Flash natively supports four output resolutions across both landscape (16:9) and portrait (9:16) aspect ratios:
360p: 640x360 (16:9) or 360x640 (9:16)720p: 1280x720 (16:9) or 720x1280 (9:16) — (default)1080p: 1920x1080 (16:9) or 1080x1920 (9:16)4k: 3840x2160 (16:9) or 2160x3840 (9:16)# High-definition (1080p)
./scripts/video/generate_video.py "A cinematic drone shot over misty mountains at sunrise" --resolution 1080p --output media/mountains_1080p.mp4
# Ultra-high-definition 4K (Note: 4K requests take longer to generate; pass --timeout if needed)
./scripts/video/generate_video.py "A macro shot of a dewdrop on a flower petal in golden sunlight" --resolution 4k --timeout 900 --output media/flower_4k.mp4
Configurable request timeouts (--timeout):
Default HTTP timeout is 600 seconds (10 minutes). For computationally intensive requests — such as extending a 30s video in 4K by 10s (up to the maximum 40s total video length) — generation can take several minutes. Use --timeout 900 (or 1200) to provide an extended execution budget.
First frame to video:
./scripts/video/generate_video.py "The waves crash against the shore." --first-frame start.png --output media/waves.mp4
First and last frame transition:
Provide a starting frame and an ending frame to generate a smooth transition between them (note: --last-frame must be used together with --first-frame):
./scripts/video/generate_video.py "A smooth timelapse from sunrise to sunset" --first-frame start.png --last-frame end.png --output media/interpolation.mp4
Looping video (identical start and end frame):
./scripts/video/generate_video.py "A crystal orb spinning continuously in place" --first-frame orb.png --last-frame orb.png --output media/loop.mp4
Image-referenced video generation:
./scripts/video/generate_video.py "A cybernetic warrior in the style of <IMAGE_REF_0>" --image reference.png --output media/warrior.mp4
Video-referenced video generation:
Provide one or more reference videos (--video-reference / -vr) to guide character, object, or motion style (ideal duration is ~3s, up to 3 reference videos recommended):
./scripts/video/generate_video.py "A musician playing cello in the style of <VIDEO_REF_0>" --video-reference ref_dance.mp4 --output media/cello.mp4
Video extension (extend an existing video):
Extend an existing video by up to 10 seconds (total duration up to 40 seconds):
./scripts/video/generate_video.py "The scene continues as the sun sets over the horizon" --extend media/sunset.mp4 --output media/sunset_extended.mp4
Video extension with reference images and reference videos:
Prompt-based extension allows passing reference images and reference videos simultaneously:
./scripts/video/generate_video.py "Extend this video. The character in <IMAGE_REF_0> enters dancing like the dancer in <VIDEO_REF_0>." --extend media/sunset.mp4 --image character.png --video-reference dance_ref.mp4 --output media/sunset_extended_with_refs.mp4
Video editing (keep original audio):
./scripts/video/generate_video.py "Transform the style to Japanese anime" --video input.mp4 --output media/anime_style.mp4
Video editing (regenerate all audio from scratch):
./scripts/video/generate_video.py "Transform the style to Japanese anime" --video input.mp4 --strip-audio --output media/anime_style_new_audio.mp4
Turn-by-turn video editing (edit previous interaction):
Edit a prior video generation without re-uploading assets by passing the interaction ID:
./scripts/video/generate_video.py "Change the setting to a snowy winter wonderland." --previous-interaction-id "v1_..." --output media/winter_wonderland.mp4
Turn-by-turn video extension (extend previous interaction):
Extend a prior video generation by passing the previous interaction ID:
./scripts/video/generate_video.py "Extend this video. The character turns around and begins to run." --previous-interaction-id "v1_..." --output media/extended_turn.mp4
Parallel batch execution (prompts file): Run multiple prompts from a line-by-line text file concurrently:
./scripts/video/generate_video.py --prompts-file prompts.txt --concurrency 3
Parallel batch execution (JSON config): Execute fully configured, distinct generation and editing jobs in parallel:
./scripts/video/generate_video.py --batch jobs.json --concurrency 3
Example jobs.json:
[
{
"prompt": "A smooth timelapse from sunrise to sunset.",
"first_frame": "start.png",
"last_frame": "end.png",
"resolution": "1080p",
"output": "media/interpolation.mp4"
},
{
"prompt": "Extend this video. The scene continues with the character in <IMAGE_REF_0> dancing like <VIDEO_REF_0>.",
"extend": "media/sunset.mp4",
"image": "character.png",
"video_reference": "dance_ref.mp4",
"output": "media/extended_with_refs.mp4"
},
{
"prompt": "A macro shot of a crystal orb refracting cosmic nebula colors.",
"resolution": "4k",
"output": "media/nebula_orb_4k.mp4"
},
{
"prompt": "A musician playing cello in the style of <VIDEO_REF_0>.",
"video_reference": "cello_ref.mp4",
"output": "media/cello.mp4"
},
{
"prompt": "Transform the style to Japanese anime.",
"video": "input.mp4",
"output": "media/anime_style.mp4",
"strip_audio": false,
"aspect_ratio": "16:9"
}
]
inspect_video.py: Inspects a local video file (using ffprobe) to check its duration, resolution, frame rate (FPS), audio stream presence, and format details.
./scripts/video/inspect_video.py media/output.mp4
To get a pre-parsed, structured JSON summary:
./scripts/video/inspect_video.py media/output.mp4 --json
To get the complete, unmodified ffprobe raw JSON dump:
./scripts/video/inspect_video.py media/output.mp4 --raw
prep_video.py: Normalizes, trims, and formats any video file to fit standard Gemini Omni Flash generation and editing limits. It handles timecode-based trimming, optional frame rate conversion, and proportional scaling of large videos (max 1280x720 for landscape, 720x1280 for portrait) to optimize upload times without stretching. If the video is longer than 10 seconds and the script is run interactively (in a TTY), it prompts the user to select the first 10s, last 10s, or enter a custom timecode (defaulting to the first 10s).
./scripts/video/prep_video.py path/to/source.mp4
or explicitly specify the start and duration:
./scripts/video/prep_video.py path/to/source.mp4 --start 0 --duration 10
Trim last 10s (automatically calculates starting point based on source length):
./scripts/video/prep_video.py path/to/source.mp4 --start last
Trim 10s starting at specific timecode (MM:SS or HH:MM:SS):
./scripts/video/prep_video.py path/to/source.mp4 --start 00:03 --output media/custom.mp4
Custom frame rate and resolution:
./scripts/video/prep_video.py path/to/source.mp4 --fps 30 --resolution 1920x1080
Strip audio for audio regeneration:
./scripts/video/prep_video.py path/to/source.mp4 --strip-audio --output media/video_with_no_audio.mp4
When editing a source video that contains audio, you must choose between keeping the original audio or regenerating all audio from scratch.
--strip-audio (or -a) when pre-processing with scripts/video/prep_video.py or executing scripts/video/generate_video.py.By default Gemini Omni Flash will try to create a video with a few different shots. It'll attempt to craft an interesting narrative based on the prompt.
If you need the output video to contain a single scene, you must prompt for that:
For example:
Continuous, unbroken handheld shot of a fluffy tabby cat sitting on a sunny windowsill, looking out into a leafy garden. The cat's tail twitches slowly, and its ears rotate slightly toward ambient noises. Sunbeams illuminate dust motes in the air. Sound design: Gentle breeze, distant bird chirps. No dialogue.
If the generated video contains things you don't want, include simple negative prompts to avoid them:
Simple prompts work best for video editing. Overly descriptive prompts can lead to unintended changes.
The following are more examples of simple editing prompts:
When editing a specific aspect of the video, include "Keep everything else the same" to maintain visual consistency.
The following are some examples to show how to apply this technique:
In the video of the man sitting on the sofa, please add a small black cat that runs from the right side of the screen, jumps onto his lap, and then he starts to stroke its head while looking down.
Add a cat that jumps onto his lap, he begins to pet it. Keep everything else the same.Please remove the cell phone that the person is holding in their hand and fill in the background so it looks like they are just holding their hand empty.
Make the phone invisible. Keep everything else the same.By default the model will try to generate an appropriate audio track for a video. This might not always be what you want. You can use your prompt to describe the type of audio you want. This is especially important if you want music in your video:
You can prompt for things to happen at specific times in the video, there is no precise syntax needed and you can use natural language. This is especially useful in creating your own scene cuts, rhythm or rapid fire sequences. See the following for examples:
You can also use a timecode syntax:
[0-3s] A person is walking
[3-6s] They stop and turn around
[6-10s] They start running
You can ask Gemini Omni Flash to pay attention to general qualities or principles of video generation:
[thing] every 1s, upbeat music, include text to label the thing.You can prompt to include text in your video and Gemini Omni will render in a way that is correct and readable. If there will be naturally occurring text in your video, even in background elements, it can help to define what it should say.
With Gemini Omni 1.1 Flash you can extend videos with prompts like, "Extend this video" or "The scene continues". You can extend videos by 10s, up to a total length of 40s.
Omni creates an extension that keeps video, motion, characters and audio coherent by using the last 10s of your original video as context. Some of the final frames in your input video will be edited to make the transition seamless.
[!TIP]
Extending with References: Video extensions can be done with a prompt (e.g.,"Extend this video","The scene continues") without setting the API'stask="extend"parameter. Omitting thetaskparameter allows passing in reference images (--image) and reference videos (--video-reference) during video extensions to introduce new characters, objects, or styles seamlessly into the extended scene. Iftask="extend"is explicitly set, multimodal references cannot be passed.
When extending, all of this guide's Omni prompting tips still apply:
"The music continues into the chorus""Show the same characters in the next scene""The person shown in the reference image enters the scene", "The dog in the reference video <VIDEO_REF_0> jumps onto the sofa""After 2s cut to a new scene with the same characters"previous_interaction_id).task="extend" parameter only when prompting alone does not work and you need to help the model understand which mode it should use, as setting the task field adds constraints (such as disabling multimodal reference inputs).You can use tags to bind uploaded media to specific generation roles. This lets you specify whether each image or video is a starting frame, a final frame, or a reference.
For simple cases where media roles are clear from the prompt, you can bind images and videos to roles directly:
<FIRST_FRAME>: use the image as the starting frame of the video, for example: <FIRST_FRAME> a woman is walking<LAST_FRAME>: use the image as the final frame of the video to transition to. Must be used with <FIRST_FRAME>, for example: <FIRST_FRAME> <LAST_FRAME> a woman is walking<IMAGE_REF_N>: use the image as a reference, for example: in the style of <IMAGE_REF_0> a woman <IMAGE_REF_1> is walking (combines style reference from the first image and subject reference from the second image). Image references start from 0.<VIDEO_REF_N>: use the video as a character or object reference, for example: the person in <VIDEO_REF_0> is playing the violin. Video references also start from 0.[!NOTE]
Reference Video Guidelines:
- Duration: Ideal reference videos are ~3 seconds, though longer videos are fine. Use
prep_video.py --duration 3if you want to trim longer source files down to reference length.- Quantity: Up to 3 reference videos is ideal, though more can also be used.
The following is an example with 6 reference images:
[0-3s] A studio fashion sequence. Starting with woman <IMAGE_REF_0>, she is holding <IMAGE_REF_1>
[3-6s] Then we see the man <IMAGE_REF_2> holding <IMAGE_REF_3>
[6-10s] And finally another woman <IMAGE_REF_4> who is holding <IMAGE_REF_5> while walking.
For more complex cases with multiple media inputs and multiple roles, you can use explicit prefix tags paired with natural language instructions. You should declare these sources and references at the start of your prompt.
[# Sources <FIRST_FRAME>@Image1] will use the first image as the starting frame.[# Sources <FIRST_FRAME>@Image1 <LAST_FRAME>@Image2] will use the first image as the starting frame and the second image as the final frame.[# Sources <FIRST_FRAME>@Image1 <LAST_FRAME>@Image1] will use the first image as both the first frame and the last frame, creating a video that loops.[# Sources <FIRST_FRAME>@Image1] [# References <IMAGE_REF_0>@Image2] will use the first image as the starting frame and the second image as a reference.[# Sources <VIDEO_0>@Video1] will use the video as the primary source video to edit or modify.[# Sources <PREVIOUS_VIDEO>@Video1] will use the video from the previous turn to extend.[# References <IMAGE_REF_0>@Image1] will use the first image as a reference.[# References <IMAGE_REF_1>@Image2] will use the second image as a reference.[# References <IMAGE_REF_0>@Image1 <IMAGE_REF_1>@Image2] will use both images as references.[# References <VIDEO_REF_0>@Video1] will use the first video as a reference.[# References <IMAGE_REF_0>@Image1 <VIDEO_REF_0>@Video1] will use both an image and a video as a reference.Add guiding instructions at the end of your prompt:
"Use this image as the starting frame.""Use this image as the first frame and the last frame.""Use the given image(s) as references for video generation. The images should not be used as literal initial frames.""Use the given video(s) as references. Do not use them as a source for video editing."Some examples of prompts with source and reference declarations:
[# Sources <FIRST_FRAME>@Image1] [# References <IMAGE_REF_0>@Image2] a woman <IMAGE_REF_0> is walking. Use Image1 as the starting frame. Use Image2 as a reference for the video generation.
[# References <IMAGE_REF_0>@Image1 <VIDEO_REF_0>@Video1] The woman in <VIDEO_REF_0> is playing the violin shown in <IMAGE_REF_0>. Use Video1 as a character reference and Image1 as an object reference.
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
three.js로 입체 모델을 만들고 회전 가능한 뷰어에서 모든 각도로 확인합니다. OBJ + MTL이나 GLB로 저장해 다른 3D 제작 소프트웨어에서 사용할 수 있습니다.
Audit web accessibility with Chrome DevTools MCP and Lighthouse. Inspect semantic structure, labels, keyboard focus, tap target size, and color contrast, then identify page elements that may need changes based on web.dev guidance.
한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.
개인 작업 목록에 할 일, 기한, 다음 단계, 답변을 기다리는 대상과 진행을 막는 이유를 기록합니다. 진행 상황과 의존 관계를 갱신하고 중복 및 완료 항목을 정리합니다.
Coordinate a task from a verifiable goal through completion. Handle work directly or split independent tasks across separate agent sessions, track progress, verify results, and arrange pull request merging when included in the goal.
한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.
Antigravity가 사용자 지정 항목을 발견하고 불러오는 위치와 우선순위를 알아봅니다. 에이전트 작업 흐름과 외부 도구 연결에 맞춰 스킬, 규칙, 플러그인, 훅, MCP 서버를 선택하고 만드는 방법을 안내합니다.
재생, 일시 정지, 시간 위치 지정이 가능한 HTML 애니메이션을 만듭니다. 장면 길이와 속도를 조절하고 가로형·세로형 영상 내보내기를 준비합니다.