Comscore POC - Content Taxonomy
Advertisers want to ensure their ads are present in video content that is relevant to their message. There are intelligent video services that 3rd party vendors provide to classify videos using the industry IAB standard.
What is IAB? The IAB develops technical standards and best practices for targeted advertising. The IAB also works to educate agencies, brands, and businesses on the importance of digital advertising consent while standardizing how companies run advertisements to comply with GDPR consent guidelines.
To meet our goal, we created a workflow that includes two extractors. The first extractor calls Comscore's Media API to classify videos. The second extractor takes the results from the first extractor and maps the IAB Taxonomy provided by Comscore to WarnerMedia's taxonomy.
Let's dive a bit deeper into the workflow and how to execute it on ContentAI.
- workflow
- start ContentAI job
- get data from ContentAI's data lake
- comscore output
- comscore_taxonomy output
workflow

start job
contentai run https://content-prod.s3.amazonaws.com/videos/comscore/The_Flight_Attendant_Ep_01_-_In_Case_Of_Emergency_101_Eng_Video_Rev72005679.mp4 \
-w 'digraph { comscore -> comscore_taxonomy }'
get data
contentai data -c https://content-prod.s3.amazonaws.com/videos/comscore/The_Flight_Attendant_Ep_01_-_In_Case_Of_Emergency_101_Eng_Video_Rev72005679.mp4
output comscore
{
"source_url": "https://content-prod.s3.amazonaws.com/videos/comscore/The_Flight_Attendant_Ep_01_-_In_Case_Of_Emergency_101_Eng_Video_Rev72005679.mp4?AWS...Expires=1621538576",
"segments": [
"iab2_00052",
"iab2_00053",
"iab2_00090",
"iab2_00118",
"iab2_00286",
"iab2_00287",
"iab2_00297",
"iab2_00653",
"iab2_00655",
"iab2_00657",
"iab2_00664",
"iab2_00672",
"230005",
"230002",
"230006",
"230103",
"230133",
"230163",
"230167",
"230135",
"230165",
"230014",
"230164",
"230111",
"230141",
"230171",
"230019",
"230160",
"210002",
"tv_g26"
]
}
output comscore_taxonomy
[
{
"id": "iab2_00052",
"name": "Contextual::IAB 2.0::Business and Finance"
},
{
"id": "iab2_00053",
"name": "Contextual::IAB 2.0::Business and Finance::Business"
},
{
"id": "iab2_00090",
"name": "Contextual::IAB 2.0::Business and Finance::Industries"
},
{
"id": "iab2_00118",
"name": "Contextual::IAB 2.0::Business and Finance::Industries::Aviation Industry"
},
{
"id": "iab2_00286",
"name": "Contextual::IAB 2.0::Medical Health"
},
{
"id": "iab2_00287",
"name": "Contextual::IAB 2.0::Medical Health::Diseases and Conditions"
},
{
"id": "iab2_00297",
"name": "Contextual::IAB 2.0::Medical Health::Diseases and Conditions::Infectious Diseases"
},
{
"id": "iab2_00653",
"name": "Contextual::IAB 2.0::Travel"
},
{
"id": "iab2_00655",
"name": "Contextual::IAB 2.0::Travel::Travel Locations"
},
{
"id": "iab2_00657",
"name": "Contextual::IAB 2.0::Travel::Travel Locations::Asia Travel"
},
{
"id": "iab2_00664",
"name": "Contextual::IAB 2.0::Travel::Travel Type"
},
{
"id": "iab2_00672",
"name": "Contextual::IAB 2.0::Travel::Travel Type::Air Travel"
},
{
"id": "230005",
"name": "Brand Protection::Non Standard::Exclude::Accidents"
},
{
"id": "230002",
"name": "Brand Protection::Non Standard::Exclude::Offensive"
},
{
"id": "230006",
"name": "Brand Protection::Non Standard::Exclude::Heath Issues"
},
{
"id": "230103",
"name": "Brand Protection::Brand Suitability::High Risk::Crime & Violence"
},
{
"id": "230133",
"name": "Brand Protection::Brand Suitability::Medium Risk::Crime & Violence"
},
{
"id": "230163",
"name": "Brand Protection::Brand Suitability::Low Risk::Crime & Violence"
},
{
"id": "230167",
"name": "Brand Protection::Brand Suitability::Low Risk::Alcohol"
},
{
"id": "230135",
"name": "Brand Protection::Brand Suitability::Medium Risk::Adult Sexual Explicit Content"
},
{
"id": "230165",
"name": "Brand Protection::Brand Suitability::Low Risk::Adult Sexual Explicit Content"
},
{
"id": "230014",
"name": "Brand Protection::Non Standard::Exclude::NSFW"
},
{
"id": "230164",
"name": "Brand Protection::Brand Suitability::Low Risk::Death or Injury "
},
{
"id": "230111",
"name": "Brand Protection::Brand Suitability::High Risk::Obscenity and Profanity"
},
{
"id": "230141",
"name": "Brand Protection::Brand Suitability::Medium Risk::Obscenity and Profanity"
},
{
"id": "230171",
"name": "Brand Protection::Brand Suitability::Low Risk::Obscenity and Profanity"
},
{
"id": "230019",
"name": "Brand Protection::Brand Suitability::Medium Risk::Epidemic"
},
{
"id": "230160",
"name": "Brand Protection::Brand Suitability::Low Risk::Epidemic"
},
{
"id": "210002",
"name": ""
},
{
"id": "tv_g26",
"name": "TV::Genre::Travel"
}
]
Summary
We discussed the ability for us to add extractors to the platform to help our advertising partners find the most appropriate assets for them to target for advertising purposes.
Acknowledgements
I would like to thank Lori Richardson and Christopher Finan from Data & Monetization Platforms, Robert Jones Data Products & Platforms, and Leo Chiang from WarnerMedia Data Analytics & Decision.
What's next?
Compare results
We can easily add new contextual ad platform partners to the platform using our GitHub template for creating extractors and compare results. For instance, we can create a workflow like this to analyze results from multiple partners, aggregate the results, and export data to an external system. You can store your secrets in GitHub, and we can inject them as part of our templated CI/CD process

Populate Freewheel
- We will push the IAB tags to Freewheel to ensure their ads are in the most appropriate content.