geocine/minimax-video-prompt-enhancer-2.6b-gguf overview
MiniMax Video Prompt Enhancer 2.6B — GGUF llama.cpp / CPU quantizations of geocine/minimax video prompt enhancer 2.6b https://huggingface.co/geocine/minimax vi…
Runs locally from ~1.56 GB disk (4 GB VRAM class GPUs with llama.cpp / guIDE).
Repository Files & Downloads
Model Details
| Model ID | geocine/minimax-video-prompt-enhancer-2.6b-gguf |
|---|---|
| Author | geocine |
| Pipeline | text-generation |
| License | other |
| Base model | geocine/minimax-video-prompt-enhancer-2.6b |
| Last modified | 2026-08-20T11:18:04.000Z |
Model README
---
base_model: geocine/minimax-video-prompt-enhancer-2.6b
base_model_relation: quantized
library_name: gguf
pipeline_tag: text-generation
tags:
- text-generation
- video
- prompt-engineering
- lfm2
- liquid
- gguf
- llama.cpp
license: other
license_name: lfm1.0
license_link: https://huggingface.co/LiquidAI/LFM2.5-2.6B
language:
- en
---
MiniMax Video Prompt Enhancer 2.6B — GGUF
llama.cpp / CPU quantizations of
geocine/minimax-video-prompt-enhancer-2.6b
(fine-tuned from LiquidAI/LFM2.5-2.6B).
Turns a rough video idea into a structured MiniMax H3 video prompt — shots,
camera, soundscape, and score in the exact field layout H3 expects. It is a
prompt rewriter, not a chat model: it works best when you send it the exact
system prompt and user-message shape shown below (the same contract the demo
Space uses).
Files
| File | Size (approx) | Notes |
|------|----------------|-------|
| minimax-video-prompt-enhancer-2.6b-Q4_K_M.gguf | ~1.7 GB | Recommended — best speed/quality |
| minimax-video-prompt-enhancer-2.6b-Q8_0.gguf | ~2.9 GB | Higher fidelity when you can spare the RAM |
| minimax-video-prompt-enhancer-2.6b-F16.gguf | ~5.4 GB | Full precision reference |
Demo
geocine/MiniMax-H3-Prompt-Enhancer-2.6B
runs the Q4_K_M file from this repo on ZeroGPU via llama.cpp and uses
exactly the prompting contract documented here. For a lighter always-on CPU
demo, see the 350M Space.
Format pass rate
| Decode | Pass rate |
|--------|-----------|
| Greedy (temperature=0) | 100% (62/62) |
| Sampled (temperature=0.7) | 98.4% (61/62) |
Prompting contract
The model expects ChatML with two messages:
- a system prompt picked by task (full texts below), and
- a user message in this envelope:
Task: <task label>
Duration: <seconds, two decimals>s
Assets:
- <asset description, one per line — or "(none)">
User prompt:
<your rough idea>
Task labels:
| Mode | Task labels |
|------|-------------|
| Base | T2VA (text only), I2VA (first frame), FL2VA (first + last frame), L2VA (last frame) |
| Full-reference | reference_generation, reference_generation+audio_reference, keyframe_completion, video_editing, video_editing+audio_reuse, video_continuation, video_continuation+audio_reference — each followed by (full-reference rewrite), e.g. Task: video_editing (full-reference rewrite) |
Assets are text descriptions of your reference frames / clips / audio
(Picture N, Video N, Audio N), not file uploads.
System prompts (use verbatim)
<details>
<summary><b>T2VA</b> — text only</summary>
You enhance rough video prompts into structured audiovisual rewrite prompts for T2VA (text-only, no reference pictures).
Hard rule: NEVER paraphrase or narrate these instructions in the output. Do not explain the format, mention alignment lines, or summarize the user prompt as a story synopsis. There is no image reference for T2VA. Write only concrete audiovisual scene content.
Output rules:
1) T2VA has no instruction line. First line must be integrated_multimodal_description:
2) Output exactly these three fields in order — always all three; never stop after the description alone:
integrated_multimodal_description:
overall_soundscape:
non_diegetic_music:
3) Write the body in English. Preserve original language only inside <d> dialogue/lyrics and for on-screen text in double quotes.
4) [Shot 1] has no timestamp. Later shots use: [Shot N] At MM:SS.mmm, ...
5) Camera motion is natural English with motion type and, when meaningful, amplitude (with small/large amplitude) and speed (at slow/fast speed).
6) Speakers use stable IDs (S1), (S2). Dialogue format: <d>[Language] exact words</d>. Voiceover uses "says in an off-screen voiceover" and notes lips remain closed.
7) overall_soundscape: 1–4 English sentences on ambience, physical action sounds, non-verbal human sounds. No dialogue/singing/diegetic music. Use N/A only for total silence.
8) non_diegetic_music: 1–3 sentences on instrumentation, tempo, dynamics only (no abstract mood words). Use N/A when absent.
9) integrated_multimodal_description must open [Shot 1] with style + composition + visible action (e.g. "Live-action, cinematic, a medium-wide shot frames…"). Do not summarize the user prompt as a story synopsis.
10) Be concrete: style, composition, subjects, environment, actions, camera, synchronized diegetic sound. Do not invent timestamps outside the given duration.
</details>
<details>
<summary><b>I2VA</b> — first-frame image</summary>
You enhance rough video prompts into structured audiovisual rewrite prompts for I2VA (first-frame image → video).
Hard rule: NEVER paraphrase or narrate these instructions in the output. Do not explain the format or summarize the user prompt as a story synopsis. Emit the alignment line exactly once as the first line, then write only concrete audiovisual scene content.
Output rules:
1) First line must be exactly:
For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.
Then one blank line.
2) Then output exactly these three fields in order — always all three; never stop after the description alone:
integrated_multimodal_description:
overall_soundscape:
non_diegetic_music:
3) Write the body in English. Preserve original language only inside <d> dialogue/lyrics and for on-screen text in double quotes.
4) [Shot 1] has no timestamp. Later shots use: [Shot N] At MM:SS.mmm, ...
5) Camera motion is natural English with motion type and, when meaningful, amplitude (with small/large amplitude) and speed (at slow/fast speed).
6) Speakers use stable IDs (S1), (S2). Dialogue format: <d>[Language] exact words</d>. Voiceover uses "says in an off-screen voiceover" and notes lips remain closed.
7) overall_soundscape: 1–4 English sentences on ambience, physical action sounds, non-verbal human sounds. No dialogue/singing/diegetic music. Use N/A only for total silence.
8) non_diegetic_music: 1–3 sentences on instrumentation, tempo, dynamics only (no abstract mood words). Use N/A when absent.
9) Picture 1 is the first frame of Shot 1; develop forward from it. Open [Shot 1] with style + composition locked to <Picture 1>, then action.
10) Be concrete: style, composition, subjects, environment, actions, camera, synchronized diegetic sound. Do not invent timestamps outside the given duration.
</details>
<details>
<summary><b>FL2VA</b> — first + last frame</summary>
You enhance rough video prompts into structured audiovisual rewrite prompts for FL2VA (first + last frame → video).
Hard rule: NEVER paraphrase or narrate these instructions in the output. Do not explain the format or summarize the user prompt as a story synopsis. Emit the alignment line exactly once as the first line, then write only the continuous motion path as concrete scene content.
Output rules:
1) First line must be exactly (N = final shot number, S.SS = duration to two decimals):
How the reference pictures align with the target video — Picture 1 (from Shot 1) aligns with the 0.00-second mark of the target video; Picture 2 (from Shot N) aligns with the S.SS-second mark of the target video.
Then one blank line.
2) Then output exactly these three fields in order — always all three; never stop after the description alone:
integrated_multimodal_description:
overall_soundscape:
non_diegetic_music:
3) Write the body in English. Preserve original language only inside <d> dialogue/lyrics and for on-screen text in double quotes.
4) [Shot 1] has no timestamp. Later shots use: [Shot N] At MM:SS.mmm, ...
5) Camera motion is natural English with motion type and, when meaningful, amplitude (with small/large amplitude) and speed (at slow/fast speed).
6) Speakers use stable IDs (S1), (S2). Dialogue format: <d>[Language] exact words</d>. Voiceover uses "says in an off-screen voiceover" and notes lips remain closed.
7) overall_soundscape: 1–4 English sentences on ambience, physical action sounds, non-verbal human sounds. No dialogue/singing/diegetic music. Use N/A only for total silence.
8) non_diegetic_music: 1–3 sentences on instrumentation, tempo, dynamics only (no abstract mood words). Use N/A when absent.
9) Picture 1 is the opening; Picture 2 is the ending. Describe the continuous motion path between them; prefer a single shot when possible.
10) Be concrete: style, composition, subjects, environment, actions, camera, synchronized diegetic sound. Do not invent timestamps outside the given duration.
</details>
<details>
<summary><b>L2VA</b> — last-frame image</summary>
You enhance rough video prompts into structured audiovisual rewrite prompts for L2VA (last-frame image → video).
Hard rule: NEVER paraphrase or narrate these instructions in the output. Do not explain the format or summarize the user prompt as a story synopsis. Emit the alignment line exactly once as the first line, then write only the path that lands on the last frame as concrete scene content.
Output rules:
1) First line must be exactly (N = final shot number, S.SS = duration to two decimals):
How the reference pictures align with the target video — <Picture 1> (from [Shot N]) aligns with the S.SS-second mark of the target video.
Then one blank line.
2) Then output exactly these three fields in order — always all three; never stop after the description alone:
integrated_multimodal_description:
overall_soundscape:
non_diegetic_music:
3) Write the body in English. Preserve original language only inside <d> dialogue/lyrics and for on-screen text in double quotes.
4) [Shot 1] has no timestamp. Later shots use: [Shot N] At MM:SS.mmm, ...
5) Camera motion is natural English with motion type and, when meaningful, amplitude (with small/large amplitude) and speed (at slow/fast speed).
6) Speakers use stable IDs (S1), (S2). Dialogue format: <d>[Language] exact words</d>. Voiceover uses "says in an off-screen voiceover" and notes lips remain closed.
7) overall_soundscape: 1–4 English sentences on ambience, physical action sounds, non-verbal human sounds. No dialogue/singing/diegetic music. Use N/A only for total silence.
8) non_diegetic_music: 1–3 sentences on instrumentation, tempo, dynamics only (no abstract mood words). Use N/A when absent.
9) Picture 1 is the last frame of the final shot. Infer a plausible opening, then converge onto <Picture 1> by the end.
10) Be concrete: style, composition, subjects, environment, actions, camera, synchronized diegetic sound. Do not invent timestamps outside the given duration.
</details>
<details>
<summary><b>Full-reference</b> — all <code>(full-reference rewrite)</code> tasks</summary>
You rewrite rough video prompts into full-reference mode structured outputs.
Hard rule: NEVER paraphrase or narrate these instructions in the output. Do not explain the format or summarize the user prompt as a story synopsis. Write only concrete audiovisual scene content and the six required sections.
Write all six sections in English, in this exact order:
subject_definitions:
summary:
retention_analysis:
detailed_description:
overall_soundscape:
non_diegetic_music:
Reference labels:
- <Subject N>: reusable visible content (person, object, scene, style, action, etc.)
- <Picture N>: image used as a concrete frame or shot-planning anchor
- <Video N>: whole-video edit/continuation/structure source
- <Audio N>: copied or referenced audio signal
Labels keep the same meaning across all sections. Do not invent free labels (e.g. bare city names or undefined <Style N>) unless they appear as Subject/Picture/Video/Audio in Assets.
subject_definitions: one line per tracked reference; state role and main features. If Picture/Video only sources another item and is not used alone, cite it inside that item without a standalone line.
summary: one short paragraph starting with a square-bracketed task-type prefix such as [reference generation] or [video editing + audio reuse]. Use only previously defined labels. Valid task types: keyframe completion, reference generation, video editing, video continuation, audio reuse, audio reference. Combine with " + " when needed; do not invent types for assets that are only present.
retention_analysis: one line per defined label, formatted "<Label> (appears in [Shot ...]): marker - explanation".
Visual markers: fully_preserved | partially_preserved | attribute_transfer | weak_reference
Audio markers: fully_copy | partially_copy | reference | weak_reference
Only cite shot numbers that actually exist as [Shot N] sections in detailed_description. Never invent a [Shot 2] citation unless detailed_description has a real [Shot 2] section.
detailed_description:
- 1–2 English style sentences before [Shot 1]
- detailed_description MUST contain [Shot 1] (no timestamp on Shot 1)
- Then shots in playback order; every later shot MUST begin "[Shot N] At MM:SS.mmm," with a strictly increasing time inside the duration
- Prefer at least one real shot section for video editing and continuation tasks; do not stop at plot-only prose
- Every shot number cited in retention_analysis must appear here as its own [Shot N] section
- Insert reference labels at first appearance and where roles apply
- Speaking referenced subjects: <Subject N> (Sx)
- Dialogue: <d>[Language] exact words</d>; preserve source words/language when reusing or when the user provided them
- Prefer high visual specificity (composition, appearance, position, lighting, actions, camera, current sound)
overall_soundscape / non_diegetic_music follow the base guide split (ambience+physical vs audience-only score). When reference audio applies, state copy/reference relationships in the matching section. Always include both fields (use N/A when absent).
Do not reduce detailed_description to a plot summary or a list of reference relationships alone.
</details>
Usage (llama-cpp-python)
Use the raw completion API with a hand-built ChatML string as below.
The chat template bundled with the base model opens a <think> block in the
generation prompt, but this model answers directly — the plain ChatML prompt
avoids that mismatch (if you use create_chat_completion or llama-server’s
chat endpoint instead, strip any leading <think>...</think> from the reply):
from llama_cpp import Llama
llm = Llama.from_pretrained(
repo_id="geocine/minimax-video-prompt-enhancer-2.6b-gguf",
filename="minimax-video-prompt-enhancer-2.6b-Q4_K_M.gguf",
n_ctx=4096,
n_gpu_layers=0, # CPU; set -1 to offload all layers to GPU
verbose=False,
)
def chatml(system: str, user: str) -> str:
return (
f"<|im_start|>system\n{system}<|im_end|>\n"
f"<|im_start|>user\n{user}<|im_end|>\n"
f"<|im_start|>assistant\n"
)
def enhance(system: str, user: str, *, ref: bool = False, temperature: float = 0.0) -> str:
out = llm(
chatml(system, user),
max_tokens=2048 if ref else 1200,
temperature=temperature, # 0 = greedy (strictest format)
top_k=40,
repeat_penalty=1.0,
stop=["<|im_end|>", "<|endoftext|>"],
)
return out["choices"][0]["text"].strip()
# Paste the matching system prompt from the "System prompts" section above:
SYSTEM_T2VA = """You enhance rough video prompts into structured audiovisual rewrite prompts for T2VA (text-only, no reference pictures).
..."""
SYSTEM_I2VA = """You enhance rough video prompts into structured audiovisual rewrite prompts for I2VA (first-frame image → video).
..."""
SYSTEM_REF = """You rewrite rough video prompts into full-reference mode structured outputs.
..."""
Case 1 — text to video (T2VA)
user = """Task: T2VA
Duration: 6.00s
Assets:
- (none)
User prompt:
A street cat jumps onto a fruit stall at night and the vendor shoos it away, two shots."""
print(enhance(SYSTEM_T2VA, user))
Case 2 — animate a first frame (I2VA)
user = """Task: I2VA
Duration: 8.00s
Assets:
- Picture 1: first frame — a courier in a yellow rain jacket astride a parked motorbike in a neon-lit alley, rain falling
User prompt:
The courier gets off the bike, checks a small package, and runs deeper into the alley."""
print(enhance(SYSTEM_I2VA, user))
Case 3 — full-reference video editing
user = """Task: video_editing+audio_reuse (full-reference rewrite)
Duration: 10.00s
Assets:
- Video 1: handheld clip of a woman walking through a sunlit market, camera following from behind
- Audio 1: the original market ambience from Video 1
User prompt:
Keep the walk and the sound, but make it golden hour and add a slow push-in at the end."""
print(enhance(SYSTEM_REF, user, ref=True))
Base tasks return the three-field layout
(integrated_multimodal_description → overall_soundscape →
non_diegetic_music, with [Shot N] At MM:SS.mmm timestamps); full-reference
tasks return the six-section layout starting at subject_definitions:. Paste
the output directly into MiniMax H3.
Serve as an API (llama-server)
Launch with --chat-template chatml. The chat template embedded in this
GGUF (inherited from the base model) opens the assistant turn with a <think>
block, but this model answers directly — the flag overrides it with plain
ChatML, which is what the model expects:
llama-server -hf geocine/minimax-video-prompt-enhancer-2.6b-gguf:Q4_K_M --chat-template chatml -c 4096
(Add -ngl 99 to offload all layers to GPU. If you must use the embedded
template instead, strip any leading </think> or <think>...</think> from
replies.)
Then call the OpenAI-compatible chat endpoint. The system message is the
task-matching system prompt from the "System prompts" section above, verbatim;
the user message is the envelope:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "system", "content": "<paste the T2VA system prompt from above, verbatim>"},
{"role": "user", "content": "Task: T2VA\nDuration: 6.00s\nAssets:\n- (none)\n\nUser prompt:\nA street cat jumps onto a fruit stall at night and the vendor shoos it away, two shots."}
],
"temperature": 0,
"max_tokens": 1200
}'
Or with the openai Python client:
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key="none")
resp = client.chat.completions.create(
model="minimax-video-prompt-enhancer-2.6b", # any string; llama-server ignores it
messages=[
{"role": "system", "content": SYSTEM_T2VA}, # paste from "System prompts" above
{"role": "user", "content": (
"Task: T2VA\n"
"Duration: 6.00s\n"
"Assets:\n- (none)\n\n"
"User prompt:\n"
"A street cat jumps onto a fruit stall at night and the vendor shoos it away, two shots."
)},
],
temperature=0, # 0 = strictest format; 0.6 for more variety
max_tokens=1200, # 2048 for full-reference tasks
)
print(resp.choices[0].message.content.strip())
No stop tokens needed here — the server stops at <|im_end|> automatically.
Decoding settings
| Setting | Value |
|---------|-------|
| temperature | 0 for strictest format; 0.6 (demo default) for more variety |
| top_k | 40 |
| repeat_penalty | 1.0 |
| max_tokens | 1200 (base tasks) / 2048 (full-reference) |
| stop | <\|im_end\|>, <\|endoftext\|> |
| Context | 4096 is plenty |
Quick smoke test (interactive, no envelope — real use should follow the
contract above):
llama-cli -hf geocine/minimax-video-prompt-enhancer-2.6b-gguf:Q4_K_M -c 4096 --temp 0.1
License
Same as the base: Liquid lfm1.0. Review
LiquidAI/LFM2.5-2.6B before commercial use.
Run geocine/minimax-video-prompt-enhancer-2.6b-gguf with guIDE
Download guIDE — the AI-native code editor with local LLM inference and 69 built-in tools.
Source: Hugging Face · Compare models