{"id":40447,"date":"2026-09-15T07:00:00","date_gmt":"2026-09-15T14:00:00","guid":{"rendered":"https:\/\/cloudinary.com\/blog\/?p=40447"},"modified":"2026-09-17T11:54:19","modified_gmt":"2026-09-17T18:54:19","slug":"ai-video-moderation-google-cloudinary","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","title":{"rendered":"Why AI-Powered Moderation is a Must for Video Libraries"},"content":{"rendered":"\n<p id=\"h-\">Before a video reaches an audience, it needs to be reviewed. Hate speech, violence, explicit content, and misleading metadata all need to be caught before publishing. For small libraries, manual review works. For libraries with hundreds or thousands of videos, it doesn&#8217;t.<\/p>\n\n\n\n<p>Human reviewers tire, vary in judgment, and can&#8217;t keep pace with upload volume. Publishing delays stack up. Costs increase. Harmful content slips through. AI moderation tools solve this by scanning every uploaded video automatically, flagging violations in minutes, and escalating only edge cases to human reviewers.<\/p>\n\n\n\n<p>In this guide, you&#8217;ll learn how AI video moderation works, then set up Cloudinary Google AI Video Moderation add-on to automatically scan uploaded videos, categorize results by confidence level, and take action on flagged content.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1789495563\/blog-Why_AI-Powered_Moderation_is_a_Must_for_Video_Libraries-1.png\" alt=\"Diagram showing the AI moderation pipeline\"\/><figcaption class=\"wp-element-caption\">Diagram showing the AI moderation pipeline<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What This Guide Covers<\/h2>\n\n\n\n<p>By the end, you&#8217;ll know how to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable Cloudinary Google AI Video Moderation add-on.<\/li>\n\n\n\n<li>Upload videos with moderation enabled so every upload is scanned automatically.<\/li>\n\n\n\n<li>Read moderation results including per-frame confidence scores.<\/li>\n\n\n\n<li>Filter approved and rejected videos through the API and the Media Library.<\/li>\n\n\n\n<li>Set up webhook notifications to act on moderation results in real time.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How AI Video Moderation Works<\/h2>\n\n\n\n<p>AI video moderation combines several technologies to analyze video content at scale: computer vision for frame-by-frame image analysis, natural language processing for audio transcription and text detection, and machine learning models trained to classify content against policy thresholds.<\/p>\n\n\n\n<p>The workflow follows a consistent pattern:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Video ingestion.<\/strong> The video is uploaded into the moderation system.<\/li>\n\n\n\n<li><strong>Frame analysis.<\/strong> Computer vision examines each frame for inappropriate imagery (nudity, violence, self-harm, graphic content).<\/li>\n\n\n\n<li><strong>Audio and text analysis.<\/strong> The audio track is transcribed and scanned for hate speech, harassment, or explicit language. On-screen text is analyzed separately.<\/li>\n\n\n\n<li><strong>Metadata review.<\/strong> Titles, tags, and descriptions are checked for compliance and misleading language.<\/li>\n\n\n\n<li><strong>Classification.<\/strong> The system compares findings against policy thresholds and assigns a status: approved, flagged for review, or rejected.<\/li>\n\n\n\n<li><strong>Action.<\/strong> Based on the classification, the video is published, routed to a human reviewer, or blocked.<\/li>\n<\/ol>\n\n\n\n<p>This pattern applies across industries: social media platforms detecting harmful content before it reaches audiences, educational platforms keeping course materials safe, streaming services enforcing content guidelines, and online marketplaces screening product videos.<\/p>\n\n\n\n<p>Building a custom moderation system from scratch requires significant resources. Cloudinary offers a ready-to-use integration that adds AI video moderation to your upload workflow without training custom models.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Before You Start<\/h2>\n\n\n\n<p>To follow along, you need:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A free <a href=\"https:\/\/cloudinary.com\/users\/register\/free\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary account<\/a>.<\/li>\n\n\n\n<li>Your cloud name, API key, and API secret from the Cloudinary console (<a href=\"https:\/\/cloudinary.com\/documentation\/developer_onboarding_faq_find_credentials\" target=\"_blank\" rel=\"noreferrer noopener\">how<\/a><a href=\"https:\/\/cloudinary.com\/documentation\/developer_onboarding_faq_find_credentials\" target=\"_blank\" rel=\"noreferrer noopener\"> to find them<\/a>).<\/li>\n\n\n\n<li>Node.js installed on your computer.<\/li>\n\n\n\n<li>A test video file to upload.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Enable the Google AI Video Moderation Add-on<\/h2>\n\n\n\n<p>Log in to your Cloudinary account and navigate to the <strong>Add-ons<\/strong> section. Find <strong>Google AI Video Moderation<\/strong>, select it, and choose a plan. The free plan works for this tutorial.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1789495576\/blog-blog-Why_AI-Powered_Moderation_is_a_Must_for_Video_Libraries-2.png\" alt=\"Cloudinary Add-ons page\"\/><figcaption class=\"wp-element-caption\">Cloudinary Add-ons page showing the Google AI Video Moderation add-on<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Set Up the Project<\/h2>\n\n\n\n<p>Create a project directory and install the Cloudinary Node.js SDK:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">mkdir video-moderation\n\ncd video-moderation\n\nnpm init -y\n\nnpm install cloudinary dotenv<\/code><\/span><\/pre>\n\n\n<p>Create a <code>.env<\/code> file with your Cloudinary credentials:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs shcb-wrap-lines\">CLOUDINARY_CLOUD_NAME=YOUR_CLOUD_NAME\n\nCLOUDINARY_API_KEY=YOUR_API_KEY\n\nCLOUDINARY_API_SECRET=YOUR_API_SECRET<\/code><\/span><\/pre>\n\n\n<p>Replace the placeholders with your actual values from <strong>Settings &gt; API Keys<\/strong> in the Cloudinary console.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1789495576\/blog-blog-Why_AI-Powered_Moderation_is_a_Must_for_Video_Libraries-3.png\" alt=\"Cloudinary settings page\"\/><figcaption class=\"wp-element-caption\">Cloudinary settings page showing the API Keys section<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Upload a Video With Moderation Enabled<\/h2>\n\n\n\n<p>Create a file called <code>moderation.js<\/code>. Configure the Cloudinary SDK and upload a video with the moderation parameter set to <code>google_video_moderation<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\"><span class=\"hljs-comment\">\/\/ moderation.js<\/span>\n\n<span class=\"hljs-keyword\">import<\/span> <span class=\"hljs-string\">'dotenv\/config'<\/span>;\n\n<span class=\"hljs-keyword\">import<\/span> { v2 <span class=\"hljs-keyword\">as<\/span> cloudinary } <span class=\"hljs-keyword\">from<\/span> <span class=\"hljs-string\">'cloudinary'<\/span>;\n\ncloudinary.config({\n\n\u00a0 <span class=\"hljs-attr\">cloud_name<\/span>: process.env.CLOUDINARY_CLOUD_NAME,\n\n\u00a0 <span class=\"hljs-attr\">api_key<\/span>: process.env.CLOUDINARY_API_KEY,\n\n\u00a0 <span class=\"hljs-attr\">api_secret<\/span>: process.env.CLOUDINARY_API_SECRET,\n\n});\n\ncloudinary.uploader.upload(<span class=\"hljs-string\">'sample.mp4'<\/span>, {\n\n\u00a0 <span class=\"hljs-attr\">resource_type<\/span>: <span class=\"hljs-string\">'video'<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">moderation<\/span>: <span class=\"hljs-string\">'google_video_moderation'<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">notification_url<\/span>: <span class=\"hljs-string\">'https:\/\/mysite.example.com\/my_notification_endpoint'<\/span>,\n\n})\n\n.then(<span class=\"hljs-function\"><span class=\"hljs-params\">result<\/span> =&gt;<\/span> <span class=\"hljs-built_in\">console<\/span>.log(result))\n\n.catch(<span class=\"hljs-function\"><span class=\"hljs-params\">error<\/span> =&gt;<\/span> <span class=\"hljs-built_in\">console<\/span>.error(error));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The moderation: <code>google_video_moderation<\/code> parameter tells Cloudinary to pass the video to the Google Cloud Video Intelligence API after upload. Google analyzes the video frame by frame and checks for inappropriate content.<\/p>\n\n\n\n<p>The <code>notification_url<\/code> parameter sets up a webhook. When moderation completes (which can take a few minutes depending on video length), Cloudinary sends the results to your endpoint.<\/p>\n\n\n\n<p>Run the script:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml shcb-wrap-lines\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">code<\/span>&gt;<\/span>node moderation.js<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">code<\/span>&gt;<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The upload response confirms the moderation is in progress:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n\n\u00a0 <span class=\"hljs-attr\">\"public_id\"<\/span>: <span class=\"hljs-string\">\"sample\"<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">\"resource_type\"<\/span>: <span class=\"hljs-string\">\"video\"<\/span>,\n\n\u00a0 <span class=\"hljs-attr\">\"moderation\"<\/span>: &#91;\n\n\u00a0 \u00a0 {\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"kind\"<\/span>: <span class=\"hljs-string\">\"google_video_moderation\"<\/span>,\n\n\u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"status\"<\/span>: <span class=\"hljs-string\">\"pending\"<\/span>\n\n\u00a0 \u00a0 }\n\n\u00a0 ]\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The status: &#8220;pending&#8221; means the video is uploaded and queued for analysis. The actual moderation results arrive asynchronously through the webhook.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Handle the Moderation Results<\/h2>\n\n\n\n<p>When moderation completes, Cloudinary sends a webhook notification with the detailed results. Each frame in the video gets a confidence score: very_unlikely, unlikely, possible, likely, or very_likely.<\/p>\n\n\n\n<p>By default, if any frame is rated likely or higher for inappropriate content, the video is rejected.&nbsp;<\/p>\n\n\n\n<p>Here&#8217;s what a rejection looks like:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json shcb-wrap-lines\">{\n\n\u00a0 <span class=\"hljs-attr\">\"moderation_response\"<\/span>: {\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">\"moderation_confidence\"<\/span>: <span class=\"hljs-string\">\"POSSIBLE\"<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">\"frames\"<\/span>: &#91;\n\n\u00a0 \u00a0 \u00a0 {\n\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"pornography_likelihood\"<\/span>: <span class=\"hljs-string\">\"POSSIBLE\"<\/span>,\n\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"time_offset\"<\/span>: <span class=\"hljs-number\">0.510936<\/span>\n\n\u00a0 \u00a0 \u00a0 },\n\n\u00a0 \u00a0 \u00a0 {\n\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"pornography_likelihood\"<\/span>: <span class=\"hljs-string\">\"LIKELY\"<\/span>,\n\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"time_offset\"<\/span>: <span class=\"hljs-number\">2.832345<\/span>\n\n\u00a0 \u00a0 \u00a0 },\n\n\u00a0 \u00a0 \u00a0 {\n\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"pornography_likelihood\"<\/span>: <span class=\"hljs-string\">\"VERY_LIKELY\"<\/span>,\n\n\u00a0 \u00a0 \u00a0 \u00a0 <span class=\"hljs-attr\">\"time_offset\"<\/span>: <span class=\"hljs-number\">14.014693<\/span>\n\n\u00a0 \u00a0 \u00a0 }\n\n\u00a0 \u00a0 ],\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">\"moderation_status\"<\/span>: <span class=\"hljs-string\">\"rejected\"<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">\"moderation_kind\"<\/span>: <span class=\"hljs-string\">\"google_video_moderation\"<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">\"moderation_updated_at\"<\/span>: <span class=\"hljs-string\">\"2025-08-13T12:37:30Z\"<\/span>,\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">\"asset_id\"<\/span>: <span class=\"hljs-string\">\"466ee700176d83ccf05cad3c33f590c7\"<\/span>\n\n\u00a0 }\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The frames array shows exactly which moments in the video triggered the rejection and at what confidence level. The <code>time_offset<\/code> values (in seconds) tell you where the flagged content appears.<\/p>\n\n\n\n<p>This per-frame detail is useful for human reviewers. Instead of watching the entire video, they can jump directly to the flagged timestamps and make a final decision.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Take Action on Moderated Videos<\/h2>\n\n\n\n<p>Cloudinary assigns every moderated video a status of approved or rejected. You can query these results through the API or the Media Library UI.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Query Through the API<\/h3>\n\n\n\n<p>Use the <code>resources_by_moderation<\/code> method to fetch videos by status. For example, to list all rejected videos:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-wrap-lines\">cloudinary.api\n\n\u00a0 .resources_by_moderation(<span class=\"hljs-string\">'google_video_moderation'<\/span>, <span class=\"hljs-string\">'rejected'<\/span>, {\n\n\u00a0 \u00a0 <span class=\"hljs-attr\">resource_type<\/span>: <span class=\"hljs-string\">'video'<\/span>,\n\n\u00a0 })\n\n\u00a0 .then(<span class=\"hljs-function\"><span class=\"hljs-params\">result<\/span> =&gt;<\/span> <span class=\"hljs-built_in\">console<\/span>.log(result));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This returns a JSON response with each video&#8217;s <code>public_id<\/code>, moderation status, and delivery URL. You can use this to build automated workflows: archive rejected content, notify content teams, or route flagged videos to a review queue.<\/p>\n\n\n\n<p>To list approved videos, change &#8220;rejected&#8221; to &#8220;approved&#8221;.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Browse in the Media Library<\/h3>\n\n\n\n<p>For a visual workflow, navigate to the <strong>Media Library<\/strong> in your Cloudinary console. Click <strong>Moderation<\/strong> in the left navigation, select <strong>Google Video<\/strong>, and filter by status (approved or rejected).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/cloudinary-marketing-res.cloudinary.com\/image\/upload\/v1789495577\/blog-blog-Why_AI-Powered_Moderation_is_a_Must_for_Video_Libraries-4.png\" alt=\"Moderation tab\"\/><figcaption class=\"wp-element-caption\">Click the Moderation tab to view assets by rejected or approved<\/figcaption><\/figure>\n\n\n\n<p>This gives content teams a visual interface to review moderation decisions without writing code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verify the Complete Flow<\/h3>\n\n\n\n<p>Before going live, confirm:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uploading a video with moderation: <code>google_video_moderation<\/code> returns a pending status<\/li>\n\n\n\n<li>Your webhook endpoint receives the moderation results when processing completes.<\/li>\n\n\n\n<li>Rejected videos appear in the Media Library under <strong>Moderation > Google Video > Rejected<\/strong>.<\/li>\n\n\n\n<li>The <code>resources_by_moderation<\/code> API returns the correct videos for each status.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Where to Go From Here<\/h2>\n\n\n\n<p>You set up AI-powered video moderation using the Cloudinary Google AI Video Moderation add-on. Every video uploaded with the moderation parameter is automatically scanned, classified, and routed based on confidence scores. Human reviewers handle only the edge cases.<\/p>\n\n\n\n<p>Here are a few ways to extend this setup:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Add moderation to upload presets.<\/strong> Configure an <a href=\"https:\/\/cloudinary.com\/documentation\/upload_presets\" target=\"_blank\" rel=\"noreferrer noopener\">upload preset<\/a> with moderation: <code>google_video_moderation<\/code> so every video uploaded through that preset is scanned automatically. No per-upload configuration needed.<\/li>\n\n\n\n<li><strong>Build an approval workflow.<\/strong> Combine AI moderation with <a href=\"https:\/\/cloudinary.com\/documentation\/dam_admin_creative_approval_flows\" target=\"_blank\" rel=\"noreferrer noopener\">Creative Approval flows<\/a> to route approved videos through editorial review before publishing.<\/li>\n\n\n\n<li><strong>Automate with MediaFlows.<\/strong> Use MediaFlows to trigger actions based on moderation results: move approved videos to a &#8220;ready to publish&#8221; folder, archive rejected content, or notify teams via email.<\/li>\n\n\n\n<li><strong>Moderate images, too.<\/strong> Cloudinary also offers image moderation add-ons that apply the same AI analysis to uploaded images.<\/li>\n\n\n\n<li><strong>Adjust confidence thresholds.<\/strong> If the default likely threshold is too strict or too lenient for your use case, you can adjust the sensitivity in your moderation configuration.<\/li>\n<\/ul>\n\n\n\n<p>Sign up for a <a target=\"_blank\" href=\"https:\/\/cloudinary.com\/users\/register\/free\" rel=\"noreferrer noopener\">free Cloudinary account<\/a> to try it yourself.<\/p>\n\n\n\n<p id=\"h-resources\"><strong>Resources:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/google_ai_video_moderation_addon#banner\" target=\"_blank\" rel=\"noreferrer noopener\">Google AI Video Moderation add-on documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/notifications\" target=\"_blank\" rel=\"noreferrer noopener\">Cloudinary webhook notifications<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/mediaflows_ai_content_moderation_tutorial#banner\" target=\"_blank\" rel=\"noreferrer noopener\">Video moderation overview<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/upload_presets\" target=\"_blank\" rel=\"noreferrer noopener\">Upload presets documentation<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/cloudinary.com\/documentation\/dam_admin_creative_approval_flows\" target=\"_blank\" rel=\"noreferrer noopener\">Creative Approval documentation<\/a><\/li>\n<\/ul>\n\n\n\n<style>\n.faqs {\n    padding: 30px 60px;\n    margin-top: 40px;\n    background: var(--color-background-offset);\n    border-radius: 20px;\n}\n\n#frequently_asked_questions {\n    margin-bottom: 20px;\n}\n\n.question {\n    margin-bottom: 12px;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.12);\n}\n\n.question summary {\n    position: relative;\n    padding: 18px 40px 18px 0;\n    cursor: pointer;\n    font-weight: 700;\n    list-style: none;\n}\n\n.question summary::-webkit-details-marker {\n    display: none;\n}\n\n.question summary::after {\n    content: \"+\";\n    position: absolute;\n    top: 50%;\n    right: 0;\n    transform: translateY(-50%);\n    font-size: 24px;\n    font-weight: 400;\n    line-height: 1;\n}\n\n.question[open] summary::after {\n    content: \"\u2212\";\n}\n\n.answer {\n    padding: 0 40px 20px 0;\n}\n<\/style>\n\n<div class=\"faqs\">\n\n<h2 id=\"frequently_asked_questions\">Frequently Asked Questions<\/h2>\n\n<details class=\"question\">\n    <summary>What is AI video moderation and how does it work?<\/summary>\n    <div class=\"answer\">AI video moderation uses computer vision, audio transcription, and machine learning to automatically scan video content for policy violations before it&#8217;s published. The system analyzes frames for inappropriate imagery, transcribes and screens audio for hate speech or harassment, checks on-screen text and metadata, then classifies the video as approved, flagged for review, or rejected based on confidence scores.<\/div>\n<\/details>\n\n<details class=\"question\">\n    <summary>How does Cloudinary&#8217;s Google AI Video Moderation add-on work?<\/summary>\n    <div class=\"answer\">Cloudinary&#8217;s Google AI Video Moderation add-on passes uploaded videos to the Google Cloud Video Intelligence API, which analyses each video frame by frame and assigns a confidence score \u2014 from <code>very_unlikely<\/code> to <code>very_likely<\/code> \u2014 for inappropriate content. If any frame meets or exceeds the <code>likely<\/code> threshold, the video is automatically rejected. Full setup and parameter details are in <a href=\"https:\/\/cloudinary.com\/documentation\/google_ai_video_moderation_addon\" target=\"_blank\" rel=\"noopener\">Cloudinary&#8217;s Google AI Video Moderation add-on documentation<\/a>.<\/div>\n<\/details>\n\n<details class=\"question\">\n    <summary>How do I get moderation results after uploading a video?<\/summary>\n    <div class=\"answer\">Moderation runs asynchronously, so results arrive through a webhook rather than in the initial upload response. Set a <code>notification_url<\/code> on your upload call, and Cloudinary sends a signed POST request to that endpoint once analysis completes, including per-frame confidence scores and timestamps. See <a href=\"https:\/\/cloudinary.com\/documentation\/notifications\" target=\"_blank\" rel=\"noopener\">Cloudinary&#8217;s webhook notifications documentation<\/a> for setup and signature verification details.<\/div>\n<\/details>\n\n<details class=\"question\">\n    <summary>How do I find and review rejected or flagged videos?<\/summary>\n    <div class=\"answer\">You can query moderated videos programmatically with the <code>resources_by_moderation<\/code> Admin API method, filtering by status (<code>approved<\/code> or <code>rejected<\/code>), or browse them visually in the Cloudinary Media Library under Moderation &gt; Google Video. The per-frame timestamps in the moderation payload let reviewers jump straight to the flagged moment instead of watching the full video. See the <a href=\"https:\/\/cloudinary.com\/documentation\/moderate_assets\" target=\"_blank\" rel=\"noopener\">moderation of media assets overview<\/a> for the full API reference.<\/div>\n<\/details>\n\n<details class=\"question\">\n    <summary>Does Cloudinary offer AI moderation for images as well as video?<\/summary>\n    <div class=\"answer\">Yes. Cloudinary offers several image moderation add-ons \u2014 including Amazon Rekognition and WebPurify \u2014 that apply the same kind of automated content analysis to uploaded images, alongside Google AI Video Moderation for video. You can browse all available options on <a href=\"https:\/\/cloudinary.com\/documentation\/video_addons\" target=\"_blank\" rel=\"noopener\">Cloudinary&#8217;s add-ons page<\/a> or explore moderation, transformation, and delivery features on the <a href=\"https:\/\/cloudinary.com\" target=\"_blank\" rel=\"noopener\">Cloudinary website<\/a>.<\/div>\n<\/details>\n\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Before a video reaches an audience, it needs to be reviewed. Hate speech, violence, explicit content, and misleading metadata all need to be caught before publishing. For small libraries, manual review works. For libraries with hundreds or thousands of videos, it doesn&#8217;t. Human reviewers tire, vary in judgment, and can&#8217;t keep pace with upload volume. [&hellip;]<\/p>\n","protected":false},"author":87,"featured_media":40449,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[203,303,305],"class_list":["post-40447","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-moderation","tag-video","tag-video-api"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Why AI-Powered Moderation is a Must for Video Libraries<\/title>\n<meta name=\"description\" content=\"Manual video moderation can&#039;t keep up at scale. Use Cloudinary Google AI Video Moderation to automatically scan uploads and flag harmful content.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why AI-Powered Moderation is a Must for Video Libraries\" \/>\n<meta property=\"og:description\" content=\"Manual video moderation can&#039;t keep up at scale. Use Cloudinary Google AI Video Moderation to automatically scan uploads and flag harmful content.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-15T14:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-17T18:54:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"melindapham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary\"},\"author\":{\"name\":\"melindapham\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/person\\\/0d5ad601e4c3b5be89245dfb14be42d9\"},\"headline\":\"Why AI-Powered Moderation is a Must for Video Libraries\",\"datePublished\":\"2026-09-15T14:00:00+00:00\",\"dateModified\":\"2026-09-17T18:54:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary\"},\"wordCount\":1514,\"publisher\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1789495951\\\/Web_Assets\\\/blog\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA\",\"keywords\":[\"Moderation\",\"Video\",\"Video API\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary\",\"name\":\"Why AI-Powered Moderation is a Must for Video Libraries\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1789495951\\\/Web_Assets\\\/blog\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA\",\"datePublished\":\"2026-09-15T14:00:00+00:00\",\"dateModified\":\"2026-09-17T18:54:19+00:00\",\"description\":\"Manual video moderation can't keep up at scale. Use Cloudinary Google AI Video Moderation to automatically scan uploads and flag harmful content.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#primaryimage\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1789495951\\\/Web_Assets\\\/blog\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1789495951\\\/Web_Assets\\\/blog\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\\\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/ai-video-moderation-google-cloudinary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why AI-Powered Moderation is a Must for Video Libraries\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1649718331\\\/Web_Assets\\\/blog\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\\\/\\\/res.cloudinary.com\\\/cloudinary-marketing\\\/images\\\/f_auto,q_auto\\\/v1649718331\\\/Web_Assets\\\/blog\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\\\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/cloudinary.com\\\/blog\\\/#\\\/schema\\\/person\\\/0d5ad601e4c3b5be89245dfb14be42d9\",\"name\":\"melindapham\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g\",\"caption\":\"melindapham\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Why AI-Powered Moderation is a Must for Video Libraries","description":"Manual video moderation can't keep up at scale. Use Cloudinary Google AI Video Moderation to automatically scan uploads and flag harmful content.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","og_locale":"en_US","og_type":"article","og_title":"Why AI-Powered Moderation is a Must for Video Libraries","og_description":"Manual video moderation can't keep up at scale. Use Cloudinary Google AI Video Moderation to automatically scan uploads and flag harmful content.","og_url":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","og_site_name":"Cloudinary Blog","article_published_time":"2026-09-15T14:00:00+00:00","article_modified_time":"2026-09-17T18:54:19+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA","type":"image\/jpeg"}],"author":"melindapham","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary"},"author":{"name":"melindapham","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9"},"headline":"Why AI-Powered Moderation is a Must for Video Libraries","datePublished":"2026-09-15T14:00:00+00:00","dateModified":"2026-09-17T18:54:19+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary"},"wordCount":1514,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA","keywords":["Moderation","Video","Video API"],"inLanguage":"en-US","copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","url":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","name":"Why AI-Powered Moderation is a Must for Video Libraries","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA","datePublished":"2026-09-15T14:00:00+00:00","dateModified":"2026-09-17T18:54:19+00:00","description":"Manual video moderation can't keep up at scale. Use Cloudinary Google AI Video Moderation to automatically scan uploads and flag harmful content.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Why AI-Powered Moderation is a Must for Video Libraries"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/person\/0d5ad601e4c3b5be89245dfb14be42d9","name":"melindapham","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e6f989fa97fe94be61596259d8629c3df65aec4c7da5c0000f90d810f313d4f4?s=96&d=mm&r=g","caption":"melindapham"}}]}},"parsely":{"version":"1.1.0","canonical_url":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","smart_links":{"inbound":0,"outbound":0},"traffic_boost_suggestions_count":0,"meta":{"@context":"https:\/\/schema.org","@type":"NewsArticle","headline":"Why AI-Powered Moderation is a Must for Video Libraries","url":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary","mainEntityOfPage":{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA&w=150&h=150&crop=1","image":{"@type":"ImageObject","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA"},"articleSection":"Uncategorized","author":[{"@type":"Person","name":"melindapham"}],"creator":["melindapham"],"publisher":{"@type":"Organization","name":"Cloudinary Blog","logo":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA"},"keywords":["moderation","video","video api"],"dateCreated":"2026-09-15T14:00:00Z","datePublished":"2026-09-15T14:00:00Z","dateModified":"2026-09-17T18:54:19Z"},"rendered":"<meta name=\"parsely-title\" content=\"Why AI-Powered Moderation is a Must for Video Libraries\" \/>\n<meta name=\"parsely-link\" content=\"https:\/\/cloudinary.com\/blog\/ai-video-moderation-google-cloudinary\" \/>\n<meta name=\"parsely-type\" content=\"post\" \/>\n<meta name=\"parsely-image-url\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA&w=150&amp;h=150&amp;crop=1\" \/>\n<meta name=\"parsely-pub-date\" content=\"2026-09-15T14:00:00Z\" \/>\n<meta name=\"parsely-section\" content=\"Uncategorized\" \/>\n<meta name=\"parsely-tags\" content=\"moderation,video,video api\" \/>\n<meta name=\"parsely-author\" content=\"melindapham\" \/>","tracker_url":"https:\/\/cdn.parsely.com\/keys\/cloudinary.com\/p.js"},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1789495951\/Web_Assets\/blog\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6\/Blog_Why_AI-Powered_Moderation_Is_a_Must_for_Video_Libraries_40449478c6.jpg?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/40447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/87"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=40447"}],"version-history":[{"count":3,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/40447\/revisions"}],"predecessor-version":[{"id":40483,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/40447\/revisions\/40483"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/40449"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=40447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=40447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=40447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}