Contextual Page Signals: Scoring Entities Instead of Listing Them
Nine entities come off one local-news page, three of them US politicians. Flat, it reads as a politics page. Scored, the top two are the actress and the sitcom and it is obviously a television story.

Most contextual ad systems hand you a list of the entities they found on a page. Names, no order. That list is close to useless when you have to make a buying decision off it.
Take a real one. A local news page about Candice Bergen returning to Murphy Brown. Nine entities come back: Candice Bergen, Murphy Brown, CBS, Diane English, Dan Quayle, Associated Press, George H.W. Bush, Bill Clinton, Los Angeles.
Read that flat and you'd be forgiven for thinking there's politics on the page. Three US politicians are sitting right there in the list.
Now score them. Candice Bergen comes back at 1.00 and Murphy Brown at 0.95. Dan Quayle lands at 0.50, Bush and Clinton at 0.20 each. Associated Press gets 0.30, which is about right for the wire service whose byline is on the piece.
It's a television story, and you can see that from the numbers without reading a word of the article.
We built this for a contextual video-advertising platform that has to decide, per article, which video renders beside it. Five signals come off every URL: IAB category at tier 1 and tier 2, main entities each with a salience score, article-level sentiment, a brand-safety flag with categories, and keywords.
It's one pass. web_scraper renders the page and pulls the article body out of the nav and the related-story rails. A gemini-2.5-flash call against a fixed JSON schema produces all five signals. E5 embeds the same text so the page stays retrievable by meaning, not just by label.
The salience score is the part people underrate. It sits in the schema next to the name, so the model has to commit to a number for how central each entity is. That number is what turns an entity list into something you can actually buy against.
Where this diagram appears
Run this on your own data
Mixpeek turns video, images, audio, and documents in your object storage into searchable, timestamped results through one API.
Search your own data