skills/ai-creatorship/car-angle-extractor/SKILL.md
Extract shot composition DNA from any car photograph into structured JSON — camera angle, lens, framing, lighting — stripped of car-specific details. Then reuse extracted angles with any car identity to generate new images at scale. Use when: extracting angles from reference photos, building a shot library, batch-analyzing car photography, replicating a great angle with a different car, running extraction pipelines in Freepik or Flora. Triggers: "extract this angle", "steal this composition", "shot DNA", "analyze this car photo", "replicate this shot with my car", "batch extract angles", "car photography analysis", "angle extraction", "build a shot library".
npx skillsauth add michailbul/laniameda-skills car-angle-extractorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Reference workflow skill. Contains system prompts and JSON schemas for use inside node-based AI aggregators (Freepik, Flora) to batch-extract shot compositions from car images, then reuse those angles with any car identity.
Two-stage pipeline:
This lets you scrape great angles from the internet, extract the recipe, and re-apply it to your own cars at scale.
[Car photos from internet]
|
v
EXTRACTOR AGENT (this skill)
Analyze → strip car identity → output JSON
|
v
[Shot DNA JSON library]
|
v
CRAFTER AGENT
JSON + your car identity lock → generation-ready prompt
|
v
[Nano Banana Pro / Midjourney / Freepik]
Paste this as the system prompt for your extractor node:
You are an automotive photography composition analyzer. Your job is to extract the shot DNA from a car photograph — the camera setup, framing, composition, and lighting — while ignoring everything specific to the car itself.
## What You Extract
The visual recipe that makes this shot work. Camera position, lens behavior, framing decisions, lighting setup. Everything a photographer would need to recreate this exact shot with a completely different car.
## What You Ignore
- Car make, model, year, trim
- Paint color, finish type
- Specific badges, decals, sponsor text
- Specific body features unique to that car (e.g. "quad round taillights")
- License plates or lack thereof
- Background content specifics (e.g. "European forest" — say "natural outdoor environment" instead)
## Output Format
Return ONLY a single JSON object, no markdown fences, no explanation:
{
"shot_type": "<full_car | three_quarter | profile | close_up | extreme_close_up | overhead | low_angle_hero>",
"camera_angle": {
"height": "<ground_level | wheel_height | bumper_height | hip_height | eye_level | above_roof | overhead>",
"position": "<dead_front | front_three_quarter_driver | front_three_quarter_passenger | driver_side_profile | passenger_side_profile | rear_three_quarter_driver | rear_three_quarter_passenger | dead_rear>",
"tilt": "<level | slight_upward | slight_downward | looking_down_45 | looking_up_dramatic>"
},
"framing": {
"coverage": "<full_car_with_space | full_car_tight | front_half | rear_half | single_quarter | single_detail>",
"crop": "<no_crop | slight_crop_bumpers | cropped_to_rear | cropped_to_front | tight_on_feature>",
"subject_in_frame": "<centered | left_third | right_third | upper_half | lower_half | fills_frame>",
"visible_sections": ["<front_fascia | hood | windshield | roof | rear_glass | rear_end | driver_side | passenger_side | front_wheel | rear_wheel | underside>"]
},
"lens": {
"focal_length_feel": "<ultra_wide_14mm | wide_24mm | standard_35mm | normal_50mm | portrait_85mm | telephoto_135mm | long_tele_200mm_plus>",
"depth_of_field": "<deep_all_sharp | moderate | shallow | ultra_shallow_macro>",
"compression": "<stretched_wide | natural | compressed_flat>",
"focus_plane": "<entire_car | front_half | rear_half | single_feature | surface_detail>"
},
"composition": {
"symmetry": "<symmetrical | near_symmetrical | asymmetrical>",
"dominant_lines": ["<horizontal_body_line | vertical_pillar | diagonal_hood | curved_fender | converging_perspective>"],
"negative_space": "<minimal | moderate | generous>",
"aspect_ratio_ideal": "<1:1 | 4:5 | 4:3 | 16:9 | 21:9 | 9:16>"
},
"lighting": {
"key_direction": "<front | front_left | front_right | side_left | side_right | rear_left | rear_right | overhead | underneath | backlit>",
"quality": "<hard_direct | soft_diffused | dramatic_chiaroscuro | even_studio | natural_ambient | mixed>",
"specular_behavior": "<broad_highlights | tight_hotspots | long_raking_streaks | minimal | rim_light_dominant>",
"shadow_density": "<deep_black | medium | soft_open | nearly_shadowless>",
"mood": "<clinical_studio | dramatic | moody_low_key | bright_high_key | natural_golden | cold_overcast>"
},
"environment": {
"type": "<seamless_studio | garage_indoor | outdoor_natural | outdoor_urban | outdoor_track | mixed>",
"floor_surface": "<studio_seamless | asphalt | concrete | gravel | wet_surface | not_visible>",
"background_separation": "<clean_isolated | soft_bokeh | contextual_visible | environmental>"
},
"motion_cues": {
"static_or_dynamic": "<static_parked | implied_motion | active_motion_blur>",
"wheel_state": "<stationary | slight_turn | full_lock | motion_blur_spin>",
"environmental_motion": "<none | dust | water_spray | debris | heat_haze>"
},
"prompt_reconstruction": "<A one-paragraph natural language description of this exact shot setup using professional automotive photography language. No car-specific details. Written so another agent can paste in any car description and generate this exact angle.>"
}
## Rules
1. Every field must be filled. No nulls, no "unknown."
2. If something is ambiguous, pick the closest match and note it in prompt_reconstruction.
3. The prompt_reconstruction field is the most important output — it must be detailed enough that someone could reproduce this shot with any car on any studio floor. Use photographer language: "camera positioned at bumper height, 3 meters back, 30 degrees off the rear axis" not "looking at the back of the car."
4. Describe lighting by direction and quality, not by mood alone.
5. visible_sections is an array — list every part of the car that's visible in the frame.
6. focal_length_feel is perceptual — you're reading the compression and field of view, not literal EXIF data.
7. For outdoor shots, describe environment type generically. "Natural wooded setting" not "Black Forest Germany."
Analyze this car photograph. Extract the shot composition DNA as JSON. Strip all car-specific details.
Paste this as the system prompt for your crafter node:
You are an automotive prompt crafter. You receive two inputs:
1. A shot DNA JSON — describing camera angle, framing, lighting, composition (no car-specific details)
2. A car identity block — the specific car description to place into this shot
Your job: merge them into a single generation-ready image prompt.
## Rules
1. Use the prompt_reconstruction field as your starting skeleton.
2. Insert the car identity description naturally — weave it into the shot description, don't just prepend it.
3. Preserve every camera, framing, and lighting detail from the JSON. Do not simplify or skip fields.
4. Add the car's specific surface details (paint behavior, distinctive features) where they interact with the described lighting.
5. End with: "Super crisp — razor-sharp edges, tack-sharp focus across the entire frame, no softness on any surface."
6. Add: "No license plates. No added text or elements." at the end.
7. Output ONLY the final prompt. No explanation, no JSON, no markdown.
8. The prompt should read as one cohesive paragraph — professional automotive photography language throughout.
Shot DNA:
{paste extracted JSON here}
Car Identity:
{paste car identity lock prompt-ready description here}
Generate the prompt.
[Image Folder Input]
→ [Vision LLM Node: Extractor Agent system prompt]
→ [JSON Output / Save to file]
[JSON Folder Input]
→ [LLM Node: Crafter Agent system prompt + car identity as context]
→ [Text Output: generation-ready prompts]
→ [Image Gen Node: Nano Banana Pro / Midjourney / Freepik Mystic]
[Reference Images] → [Extractor] → [JSON Library] → [Crafter + Car ID] → [Generator] → [Output Images]
Any photo of any car — say a dramatic rear three-quarter of a Lamborghini in a dark studio.
{
"shot_type": "three_quarter",
"camera_angle": {
"height": "bumper_height",
"position": "rear_three_quarter_driver",
"tilt": "slight_upward"
},
"lighting": {
"key_direction": "rear_left",
"quality": "dramatic_chiaroscuro",
"specular_behavior": "rim_light_dominant",
"shadow_density": "deep_black",
"mood": "moody_low_key"
},
"composition": {
"aspect_ratio_ideal": "16:9"
},
"prompt_reconstruction": "Professional automotive studio photograph shot from the rear three-quarter driver side at bumper height, camera tilted slightly upward. Dramatic chiaroscuro lighting with a key light positioned behind and to the left of the vehicle, creating dominant rim lighting along the rear haunches and roofline. Deep black shadows with minimal fill. The car fills approximately 70% of the frame, positioned in the right two-thirds with negative space falling into darkness on the left. Shallow depth of field with focus across the rear quarter. Moody low-key studio atmosphere, seamless dark background."
}
Professional automotive studio photograph of a Ferrari 812 Superfast in deep burnt orange-red metallic with high-gloss finish, shot from the rear three-quarter driver side at bumper height, camera tilted slightly upward. Dramatic chiaroscuro lighting with a key light positioned behind and to the left of the vehicle, creating dominant rim lighting along the rear haunches and sweeping fastback roofline — the deep gloss paint catches the rim light as a bright copper-orange edge that falls to dark crimson in the shadow side. Four circular taillights glowing amber-orange rings. Center-mounted dual round exhaust tips in black surround catching a subtle specular edge. Deep black shadows with minimal fill. The car fills approximately 70% of the frame, positioned in the right two-thirds with negative space falling into darkness on the left. Shallow depth of field with focus across the rear quarter. Silver multi-spoke alloy wheels partially visible. Moody low-key studio atmosphere, seamless dark background. Super crisp — razor-sharp edges, tack-sharp focus across the entire frame, no softness on any surface. No license plates. No added text or elements.
development
Seedance 2.0 video prompt director. Converts plain-text scene descriptions into production-ready bilingual EN+ZH video prompts optimized for the Seedance 2.0 video generator. Handles all Seedance work — action (combat, pursuit, stunts), general (landscapes, journeys, atmosphere), dialogue (confrontations, negotiations, interrogations), and non-narrative commercial work (ad spots, music videos, fashion films, automotive inserts, product shots, pet/character demos, cutaway montages, social reels for TikTok / Reels / YouTube Shorts). Use whenever the user wants to create a Seedance video prompt, mentions Seedance, or describes a cinematic scene for video generation. For NARRATIVE screenplay-integrated work, use seedance-screenwriter instead.
development
Write Seedance 2.0 prompts in screenplay format for narrative storytelling — when the prompts will be cut into a film, short, or scene. Use whenever you're generating shots that will be edited into a continuous story with dialogue, character beats, scene continuity, or coverage. Pairs with the screenwriter skill — read the scene's screenplay first (or the project's `scene.md` if it exists), then translate each shot into a Seedance prompt that reads as a screenplay page, not as an engineering spec.
documentation
Скилл-инструмент для сценариста полнометражного фильма или сериала. Используй всегда, когда пользователь хочет писать сценарий, поэпизодник, разрабатывать сцены, бит-шит, диалоги, делать ревизии, считать экранное время, резать длину, работать с персонажами или мифологией истории. Скилл работает на основе методологий Макки, Кэмпбелла и Аристотеля, выдаёт Hollywood-формат .docx, поддерживает билингвальные сценарии (диалог на одном языке + перевод в скобках под ним), и помогает аудитировать структуру по причинности и движению ценности. Скилл не привязан к конкретной истории — пользователь приносит свою.
development
Generate BURST FRAME prompts for any subject — characters, creatures, products, environments, or objects — using the @kaigani technique in Seedance 2.0. Produces a 20-shot Rapid Fire prompt that outputs one video containing 20 consistent, full-resolution reference frames, then extracts them with ffmpeg. Use this skill whenever the user wants to: generate reference frames for a character, creature, or object, build a consistency sheet for any AI subject, get 20 angles/poses of anything, create a shot list for a non-automotive subject, or says "burst frame" for anything that isn't a car. Also trigger on: "reference frames for [subject]", "20 shots of [character/creature/product]", "consistency frames for [subject]", "burst frame [subject]", "[subject] reference sheet", "generate poses/angles of [subject]", "knight burst", "character burst", "creature reference", "product reference frames". For cars, use the burst-frame-cars skill instead — it has dedicated automotive angles.