惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
Recorded Future
Recorded Future
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The GitHub Blog
The GitHub Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Y
Y Combinator Blog
N
News | PayPal Newsroom
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Help Net Security
Help Net Security
博客园 - Franky
SecWiki News
SecWiki News
Recent Announcements
Recent Announcements
T
Troy Hunt's Blog
The Register - Security
The Register - Security
The Last Watchdog
The Last Watchdog
Webroot Blog
Webroot Blog
S
Security Affairs
博客园 - 司徒正美
S
Schneier on Security
I
InfoQ
博客园_首页
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Forbes - Security
Forbes - Security
腾讯CDC
N
Netflix TechBlog - Medium
N
News and Events Feed by Topic
Cloudbric
Cloudbric
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
A
About on SuperTechFans
Engineering at Meta
Engineering at Meta
Recent Commits to openclaw:main
Recent Commits to openclaw:main
B
Blog
V
Vulnerabilities – Threatpost
C
Check Point Blog
Google DeepMind News
Google DeepMind News
Google Online Security Blog
Google Online Security Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cisco Blogs
Schneier on Security
Schneier on Security
O
OpenAI News
K
Kaspersky official blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
How to Measure Whether AI Video Is Production-Ready: Cost per Usable Clip
Johrdan Blaa · 2026-05-21 · via DEV Community

AI video demos well. Production is where it gets messy.

The failure mode I keep seeing:

Team generates 50 short clips, 7 are usable, nobody tracks why the other 43 failed, and the next batch starts from scratch.

That is not just a model problem. It is a workflow and measurement problem.

If you are building an AI video pipeline for ads, ecommerce, social, product marketing, or creative ops, do not start with:

cost per generation

Enter fullscreen mode Exit fullscreen mode

Start with:

cost per usable clip

Enter fullscreen mode Exit fullscreen mode

That metric forces you to include retries, review, editing, failed generations, and brand/compliance overhead.

Cost per generation is the wrong production metric

A typical estimate looks like this:

duration_seconds × credits_per_second × price_per_credit

Enter fullscreen mode Exit fullscreen mode

That is useful for API spend. It is not production cost.

A better metric:

cost per usable clip
= generation_cost_per_attempt × attempts_per_usable_clip
+ human_review_cost
+ editing_cost
+ compliance_or_brand_review_cost
+ storage / orchestration / tooling cost

Enter fullscreen mode Exit fullscreen mode

Track these variables:

  • usable rate: what percentage of clips are publishable or close?
  • attempts per usable clip: how many generations produce one usable asset?
  • human minutes per usable clip: how much review/editing does each approved clip need?
  • rejection reasons: why are clips failing?

If you do not track those, you are guessing.

A simple 50-generation pilot

Assume a team tests 5–8 second AI B-roll clips for social.

Metric Value
Total generations 50
Usable clips 8
Published clips 5
Total model/API cost $30
Total human review time 180 min
Total editing time 120 min
Internal hourly cost $60/hr

Calculations:

usable rate = 8 / 50 = 16%
attempts per usable clip = 50 / 8 = 6.25
review + editing = 300 min = 5 hours
human cost = 5 × $60 = $300
total pilot cost = $30 + $300 = $330
cost per usable clip = $330 / 8 = $41.25
cost per published clip = $330 / 5 = $66

Enter fullscreen mode Exit fullscreen mode

That might be great if the alternative is a shoot, agency edit, or stock-footage workflow. It might be bad if your current process is faster and more reliable.

The point is not whether $66 is good or bad. The point is that you now have a number you can compare.

Log every attempt, not just the wins

You do not need a complex system at first. A spreadsheet, Airtable, Notion database, Postgres table, or JSONL file is enough.

Minimum fields:

Field Why it matters
brief_id Groups attempts by campaign/request
prompt_id / prompt_version Compares prompt iterations
model Compares vendors/models
duration_seconds Helps calculate cost
credits_used / generation_cost_usd Tracks API spend
asset_url Links output to metadata
status Drives workflow
rejection_reason Shows where quality fails
review_minutes Captures human cost
editing_minutes Captures post-production cost
published Separates usable from shipped

Example record:

{
  "id": "gen_00042",
  "brief_id": "bf_2025_001",
  "prompt_id": "pr_003",
  "prompt_version": "v2",
  "model": "video-model-a",
  "duration_seconds": 6,
  "credits_used": 42,
  "generation_cost_usd": 0.84,
  "asset_url": "s3://ai-video-pilots/bf_2025_001/gen_00042.mp4",
  "status": "rejected",
  "rejection_reason": "product_detail_wrong",
  "review_minutes": 3,
  "editing_minutes": 0,
  "published": false,
  "created_at": "2026-05-21T12:00:00Z"
}

Enter fullscreen mode Exit fullscreen mode

Start with fields that answer:

How much did this cost?
How much human time did it require?
Why did outputs fail?
Which prompts/models are improving?

Enter fullscreen mode Exit fullscreen mode

Use explicit review states

Do not let generated media go directly from model output to scheduled post.

Use states like:

draft_brief
→ prompt_ready
→ generated
→ review_pending
→ approved_for_edit
→ edited
→ brand_review
→ approved_to_publish
→ scheduled
→ published

Enter fullscreen mode Exit fullscreen mode

Rejected paths should be explicit too:

review_pending → rejected_quality
review_pending → rejected_accuracy
review_pending → rejected_rights_risk
brand_review → rejected_brand_fit
brand_review → needs_revision

Enter fullscreen mode Exit fullscreen mode

This matters because rejection reasons are one of the most valuable outputs of the pilot.

If most clips fail because of prompt ambiguity, fix the prompt template.

If most fail because of product accuracy, use AI video for background visuals or pre-production instead of exact product shots.

If most fail during compliance review, model cost is probably irrelevant. Your bottleneck is risk.

A copyable pilot workflow

brief template
→ prompt template
→ generation job
→ asset storage
→ metadata logging
→ human review UI
→ edit/caption step
→ approval state
→ scheduler/manual publish
→ performance notes
→ cost dashboard

Enter fullscreen mode Exit fullscreen mode

Brief template

Keep briefs structured. Free-text briefs make runs hard to compare.

{
  "brief_id": "bf_2025_001",
  "channel": "instagram_reel",
  "format": "social_broll",
  "duration_seconds": 6,
  "goal": "support a post about summer product launch",
  "must_include": ["bright kitchen", "morning light", "refreshing mood"],
  "must_avoid": ["visible logos", "people drinking alcohol", "incorrect product packaging"],
  "risk_level": "low",
  "consistency_requirement": "low"
}

Enter fullscreen mode Exit fullscreen mode

Prompt template

Version your prompts. They are part of the production system, not throwaway inputs.

Create a {{duration_seconds}} second {{format}} clip for {{channel}}.
Scene: {{scene}}.
Mood: {{mood}}.
Camera: {{camera_direction}}.
Must include: {{must_include}}.
Must avoid: {{must_avoid}}.
No text overlays. No logos. No recognizable public figures.

Enter fullscreen mode Exit fullscreen mode

Generation job

Create a record before generation and update it after the asset exists.

async function runGenerationJob({ brief, prompt, model }) {
  const record = await db.generations.insert({
    brief_id: brief.id,
    prompt_id: prompt.id,
    prompt_version: prompt.version,
    model,
    status: "generation_started",
    created_at: new Date().toISOString()
  })

  try {
    const result = await videoProvider.generate({
      model,
      prompt: prompt.text,
      duration_seconds: brief.duration_seconds
    })

    const assetUrl = await storage.save(result.video)

    await db.generations.update(record.id, {
      status: "review_pending",
      asset_url: assetUrl,
      duration_seconds: result.duration_seconds,
      credits_used: result.credits_used,
      generation_cost_usd: result.cost_usd
    })
  } catch (err) {
    await db.generations.update(record.id, {
      status: "generation_failed",
      error_message: err.message
    })
  }
}

Enter fullscreen mode Exit fullscreen mode

The provider does not matter for the pilot. The logging does.

Human review

Reviewers should not just click approve/reject. Make them choose a reason.

Useful rejection reasons:

artifact_or_distortion
product_detail_wrong
brand_mismatch
too_generic
prompt_not_followed
rights_or_likeness_risk
unsafe_or_policy_risk
needs_editing
other

Enter fullscreen mode Exit fullscreen mode

This turns subjective review into data.

Cost dashboard

At the end of the pilot, calculate:

select
  count(*) as total_generations,
  sum(case when status in ('approved_to_publish', 'published') then 1 else 0 end) as usable_clips,
  sum(generation_cost_usd) as model_cost,
  sum(review_minutes) as review_minutes,
  sum(editing_minutes) as editing_minutes
from generations
where brief_id = 'bf_2025_001';

Enter fullscreen mode Exit fullscreen mode

Then compute:

usable_rate = usable_clips / total_generations
attempts_per_usable_clip = total_generations / usable_clips
human_cost = ((review_minutes + editing_minutes) / 60) × hourly_rate
cost_per_usable_clip = (model_cost + human_cost) / usable_clips

Enter fullscreen mode Exit fullscreen mode

That is the number to compare with your existing workflow.

Where humans should stay in the loop

Automate:

  • structured brief creation
  • prompt generation from approved templates
  • generation job creation
  • file naming and storage
  • metadata logging
  • review queue creation
  • caption/post copy drafts
  • reporting

Keep human approval for:

  • brand fit
  • product accuracy
  • claims and disclaimers
  • likeness rights
  • copyright/music concerns
  • trademarks/logos
  • platform ad policy risk
  • sensitive categories like health, finance, children, politics, or legal topics
  • final approval for paid campaigns

A good system increases throughput without turning publishing into an unreviewed media firehose.

Pick the right first use case

Evaluate AI video with two dimensions:

risk level
consistency requirement

Enter fullscreen mode Exit fullscreen mode

Risk Consistency needed Suggested use
Low Low Good production test
Low High Drafts, variants, partial shots
High Low Strict human review only
High High Keep traditional production primary

Good early candidates:

  • social B-roll
  • ad hook variants
  • background visuals
  • storyboard previews
  • internal concept exploration
  • rough product scenario tests before a shoot

Use caution with:

  • exact product demos
  • regulated paid ads
  • real customer likenesses
  • recurring character stories
  • complex multi-shot narratives
  • brand hero films
  • anything where a small visual error creates legal or trust risk

A clip can look impressive and still be wrong for production.

The two-week pilot I would run

Keep it narrow:

format: social B-roll clips
clip length: 5–8 seconds
models: 1–2
prompt templates: 2–3
target: 50 generations
success metric: cost per usable clip vs current workflow

Enter fullscreen mode Exit fullscreen mode

Rules:

  1. Log every generation.
  2. Force reviewers to choose rejection reasons.
  3. Track review and editing minutes.
  4. Separate “usable” from “published.”
  5. Compare against a real current benchmark.

At the end, the answer should not be:

AI video is ready.

Enter fullscreen mode Exit fullscreen mode

It should be:

For this format, on this channel, with this review process,
AI video costs $X per usable clip and meets / does not meet our quality bar.

Enter fullscreen mode Exit fullscreen mode

That is a decision you can build on.

Final takeaway

AI video is production-ready when three things are true:

  1. Cost per usable clip beats your current benchmark.
  2. Quality clears the bar for the specific channel and risk level.
  3. The workflow is repeatable without heroic manual effort.

Until then, treat AI video like an experiment with instrumentation.

The model output is only one part of the system. The production system is the logging, review states, human gates, and feedback loop around it.