vision-understanding
Skill8 starsChanged 5 months agoMITView on GitHub
Turn images, video, audio, or documents into text. Use when the user says "what's in this image", "describe / caption this", "tag these photos", "read this document / receipt / screenshot", "summarize this video", "transcribe this audio", "answer questions about this picture", or wants OCR, alt-text, or structured extraction from media. Any "media in, text out" task.
In this repository32 other files it gives its agents.
- add-audio-to-videoSkill
- animate-imageSkill
- bring-your-own-modelSkill
- character-consistencySkill
- cinematic-videoSkill
- composite-sceneSkill
- controlled-generationSkill
- dialogue-audioSkill
- edit-imageSkill
- edit-videoSkill
- game-assets-2dSkill
- image-to-3d-assetSkill
- llm-agentSkill
- logos-and-vectorsSkill
- multi-shot-videoSkill
- musicSkill
- photoreal-stillsSkill
- product-ad-videoSkill
- product-photographySkill
- reframe-videoSkill
- replace-in-videoSkill
- restore-and-upscaleSkill
- runware-modelsSkill
- runware-promptingSkill
- runware-runSkill
- talking-avatarSkill
- text-in-imageSkill
- train-style-modelSkill
- ugc-adSkill
- video-upscaleSkill
- voice-cloningSkill
- voiceoverSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 48
Stay grounded: Ask the model to report only what is visible or audible and to say so when something is not present.
- Distinctive: line 62
Every claim is grounded in the media: no invented text, objects, or speakers.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Vision and media understanding
Take a media input (an image, a video, an audio clip, a document) and produce text about it: a direct answer, a caption, tags, extracted fields, a transcript, a summary. The lever is matching the input modality to a model that accepts it, then asking for exactly the text shape you want.
Inputs to collect
- The media to understand, as a URL or base64 (image, video, audio, or a document rendered to image/PDF).
- The input modality - image, video, or audio. This is the primary routing decision.
- What text you want back: a free-form answer, a one-line caption, a tag list, structured fields (JSON), a transcript, or a summary.
- Optional: the question or instruction (visual Q&A), and whether output must be machine-parseable (then ask for JSON explicitly).
Models
Route by input modality. Confirm the live model + its schema via the runware-models + runware-run skills before calling - never hardcode a stale choice.
- Image → text (default): Qwen2.5-VL-7B-Instruct (
runware:152@2) - hosted, instruction-tuned for captioning, visual Q&A, and structured extraction. Good price/quality default. - Image → text (premium / reasoning): Gemini 3.1 Pro (
google:gemini@3.1-pro) - flagship multimodal, strong on documents, charts, dense OCR, and multi-step reasoning over an image. - Image → text (cheap / fast alts): Qwen2.5-VL-3B-Instruct (
runware:152@1), LLaVA-1.6-Mistral-7B (runware:150@2), or Gemini 3.1 Flash Lite (google:gemini@3.1-flash-lite) for high-volume tagging. - Video → text: Gemini 3.1 Pro (
google:gemini@3.1-pro) for summarization and Q&A over a clip. Noop:captionmodel takes video today. - Audio → text: Gemini 3.1 Pro (
google:gemini@3.1-pro). Audio-to-text is single-vendor today - only the Gemini family carriesio:audio-to-text, so there is no non-Google fallback for pure audio. - Documents: render to image or PDF and route as image → text. Gemini 3.1 Pro handles multi-page and dense layouts best.
Workflow
- Decide the path by modality and by model type. Chat-style models (Gemini, Qwen-VL, LLaVA) carry
io:image-to-text/io:video-to-text/io:audio-to-textand run as a chat call against the OpenAI-compatible endpoint (api.runware.ai/v1). Dedicated caption models carryop:captionand run as a generation task (its owntaskType), not a chat completion. - Resolve the schema (
runware-run) and confirm the exact input field and the message/content shape before calling. Mirror its field names exactly. - Attach the media as a URL or base64 under the documented input field. Local files upload first.
- Ask for the text shape you want in the instruction: a caption, tags, an answer, or "return JSON with keys X, Y". For
op:captionmodels, set the caption options the schema exposes rather than free-prompting. - Run with the right delivery mode. Image and short-audio understanding return quickly and can run synchronously. Long video or long audio is a time-based job - run async and poll
getResponseuntil terminal (seerunware-run). - Read the result as text and validate it against what you asked for (correct fields present, transcript complete, no hallucinated detail).
Technique
- Pick by what goes in, not by brand. The whole decision is the input modality. Image and document → a vision-language model. Video → a video-capable model. Audio → Gemini. Sending a video to an image-only model fails the schema gate.
- Ask for the output shape explicitly. "Describe this" yields prose. For tags, say "list 10 keywords". For extraction, say "return JSON with fields date, total, vendor" and the chat models comply. Underspecifying the shape is the main cause of unusable output.
- Two surfaces, two contracts. Chat-style VLMs (Gemini, Qwen-VL, LLaVA) take an image alongside a text instruction in a chat message and answer conversationally - use the OpenAI-compatible endpoint.
op:captionmodels (Qwen-VL also exposes this) are a single-shot generation task driven by caption options, not by a free instruction. - For documents and dense OCR, prefer the reasoning tier. Gemini 3.1 Pro reads small text, tables, and multi-column layouts more reliably than the small hosted VLMs. Render each page to an image or pass the PDF.
- Stay grounded. Ask the model to report only what is visible or audible and to say so when something is not present. Do not let it invent text it cannot read or details off-frame.
Parameters that matter
- Input field - the media goes under the model's documented input field (an image/video/audio reference in the chat message content, or the caption task's input field). Confirm the exact name against the live schema; never guess.
- Instruction / question - the text prompt that sets the task (caption vs Q&A vs extraction). For
op:captionmodels, use the schema's caption options instead. op:captionis text-output only. Media output params (output type/format/quality, upload endpoint) do not apply and are removed from caption base types. Do not send them.- Delivery mode - sync for images and short clips, async + poll for long video/audio.
- For chat-style calls, the OpenAI-compatible endpoint takes the usual completion controls (e.g. token limit, temperature); keep temperature low for factual extraction.
Quality bar
- The model used actually supports the input modality (verified against its capabilities, not assumed) - no image-only model fed a video.
- The output is in the requested shape (a caption is one line, tags are a list, JSON parses, a transcript is complete).
- Every claim is grounded in the media: no invented text, objects, or speakers. Unreadable or absent detail is reported as such, not fabricated.
- For long media, the job ran async and was polled to completion rather than blocking a sync call.
Related skills
runware-run, runware-models, runware-prompting; llm-agent (text-only reasoning and tool use once the media is described, the sibling outcome on the OpenAI-compatible endpoint).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

