Most news apps and search engines already present headlines well, so simply listing them is becoming less valuable. The real value has shifted to connecting the dots: grouping related news stories, identifying patterns across sources, and explaining what actually matters and why.

In this post, we’ll build a simple pipeline that turns raw Bing News results into a structured daily briefing which does exactly that using:

  • SerpApi's Bing News API for real-time news data
  • Claude for summarization and insight generation

Setting Up

LLMs work best when you give them clean, formatted context instead of raw scraped HTML, so we'll do exactly that.

Get results using SerpApi (Bing News API) → Normalize → Send to Claude with a relevant prompt → Get structured briefing

For this tutorial, we're going to use SerpApi's new Python library to get results from search.

  1. Install SerpApi's new Python serpapi library, the python-dotenv library (for using environment variables) and anthropic library (for Claude) in your environment:
pip install serpapi python-dotenv anthropic
serpapi is our new Python library. You can use this library to scrape search results from any of SerpApi's APIs.

More About Our Python Libraries

We have two separate Python libraries serpapi and google-search-results, and both work perfectly fine. We are in the process of deprecating google-search-results, so I recommend using serpapi as that is our latest python library.

You may encounter issues if you have both libraries installed at the same time. If you have the old library installed and want to proceed with using our new library, please follow these steps:

  1. Uninstall google-search-results module from your environment.
  2. Make sure that neither serpapi nor google-search-results are installed at that stage.
  3. Install serpapi module, for example with the following command if you're using pip: pip install serpapi
  1. To begin scraping data, create a free account on serpapi.com. You'll receive 250 free search credits each month to explore the API. Get your SerpApi API key from this page.
  2. [Optional but Recommended] Set your API keys in an environment variable, instead of directly pasting them in the code. Refer here to understand more about using environment variables.
SERPAPI_API_KEY=<YOUR PRIVATE SERPAPI API KEY>
CLAUDE_API_KEY=<YOUR PRIVATE CLAUDE API KEY>

Get your SerpApi API key here: https://serpapi.com/manage-api-key
Get your Claude API key here: https://platform.claude.com/settings/keys

💡
You'll need to create an account with Claude in case you don't have one yet. You can do that here: https://claude.ai/login
  1. Import classes needed for this project at the beginning of your code file and set up some constants we'll use later on:
import os
import serpapi
import json
import anthropic
from dotenv import load_dotenv
load_dotenv()

SERPAPI_API_KEY = os.environ["SERPAPI_API_KEY"]
CLAUDE_API_KEY = os.environ["CLAUDE_API_KEY"]

Fetch News with Bing News API

We’ll write a function to use SerpApi’s Bing News API (bing_news engine) and get all the news results.

def fetch_news(query):
    client = serpapi.Client(api_key=SERPAPI_API_KEY)
    results = client.search({
        "engine": "bing_news",
        "q": query,
        "device": "desktop",
        "mkt": "en-au"
    })
    return results.get("organic_results", [])

We can call this function with any query such as "Self driving software" or "AI" and scrape results from Bing News.

You can test the Bing News API out in our playground with parameters of your choice:

SerpApi Playground - SerpApi
Test SerpApi’s Google Search, Google Maps, YouTube, Bing, Walmart, eBay, Baidu, Yandex and more APIs for free in the interactive playground!

Prompting Claude

Good prompts can make all the difference when building a AI briefing based on the results.

A bad prompt would look like:

“Summarize these articles”

Better prompts often define structure, force grouping, and require reasoning.

def build_prompt(articles):
    return f"""
You are a technical news analyst.

Task: Convert raw news articles into a structured daily briefing.

Requirements:
- Group related articles into 3-5 themes
- Each theme must have:
  - A short title
  - A 2-3 sentence summary
  - A "Why it matters" explanation
- Be concise and non-generic
- Avoid repeating the same point across themes

Articles:
{articles}
"""

Generate the Briefing (Claude API)

Using Claude's API, we can turn the data we got from SerpApi into a briefing. Here is some simple code to use Anthropic API -

def generate_briefing(prompt):
    client = anthropic.Anthropic(api_key=CLAUDE_API_KEY)
    response = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1500,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text

Putting It Together

Now that we have all the pieces we'll use, let's write the code to call the different functions and get our news briefing:

def run():
    query = "AI"
    articles = fetch_news(query)
    prompt = build_prompt(articles)
    briefing = generate_briefing(prompt)
    print(briefing)

if __name__ == "__main__":
    run()

Now, we're ready to run this file. We can do so by typing python <filename> in the terminal.

Automated Delivery

A briefing is only useful if it reaches you regularly automatically. Add a delivery layer like automated daily email or a slack webhook.

Automated Daily Email

  • Simple automation run daily via cron or other scheduling methods
  • Email formatted briefing to yourself or a team

Slack Webhook

  • Post structured sections into a channel
  • Good for teams or shared awareness feeds
  • Enables discussion around themes

Read this blog post for more info on setting up a Slack webhook (The use case in the post is different, but the process remains the same). It also covers how to schedule a job every day using the Python schedule library:

Build a Slack Bot That Alerts You When a New Company Ranks for Keywords
Let’s build a system that detects new companies ranking for a keyword and sends a Slack alert.

Generated AI Briefing Example Output

Here's an example run. In my SerpApi call, I set the query to "AI" to keep things simple. I used these parameters for Anthropic API:

model="claude-opus-4-7",
max_tokens=1500,
messages=[{"role": "user", "content": prompt}]

Here's the Claude generated briefing:

Daily AI Briefing

1. AI Reshapes the Workforce: Layoffs, Skill Demands, and Survival Rules

Cloudflare announced a 20% workforce cut (1,100 employees) citing agentic AI as a fundamental disruptor of its operations, sending its stock down 18%. Meanwhile, Airbnb CEO Brian Chesky warned that "pure people managers" and change-resistant workers won't survive the AI era, and CBS reports employers are increasingly demanding AI fluency from new hires.

Why it matters: This is one of the first major tech layoffs explicitly attributed to agentic AI rather than macro conditions—signaling a shift from AI-as-productivity-tool to AI-as-headcount-replacement. Workers and managers face mounting pressure to reskill or face displacement.

2. Conflicting Narratives on AI's Human Impact

Nvidia's Jensen Huang publicly framed AI as a net job creator, urging workers not to fear the technology. In contrast, a new study found that just 10 minutes of AI use measurably impaired cognitive performance on arithmetic and reasoning tasks.

Why it matters: The optimistic vendor narrative (Huang) is increasingly at odds with both labor-market evidence (Cloudflare) and emerging cognitive research. Expect this tension to drive policy debates and shape enterprise adoption guardrails.

3. AI Stocks Diverge as Earnings Season Tests the Hype

SoundHound AI beat Q1 expectations with 51.7% revenue growth but still dropped 12.4%, while Cloudflare cratered 18% post-earnings. Analysts are also reframing the Nvidia-vs-Palantir debate for 2026 as both stocks face renewed scrutiny.

Why it matters: Markets are no longer rewarding AI exposure alone—even strong top-line growth isn't enough. Investors are demanding margin discipline and clear AI monetization paths, marking a maturation point for the sector.

4. Military AI Moves From Theoretical to Operational

The UK's Royal Air Force chief confirmed AI-powered uncrewed fighter aircraft are already being integrated into operations, far ahead of prior timelines. Simultaneously, CNN reports the Pentagon faces growing scrutiny over the legal limits of AI in warfare, including its use in Iran-related operations.

Why it matters: Autonomous combat systems have crossed from R&D to deployment faster than legal and ethical frameworks can adapt. The gap between operational reality and governance is becoming a strategic vulnerability for Western militaries.

5. The Consumer AI Landscape Crystallizes

TechRepublic published a side-by-side comparison of the major chatbots—ChatGPT, Gemini, Copilot, Claude, Perplexity, Grok, DeepSeek, and Meta AI—mapping each to specific use cases and integrations.

Why it matters: With eight serious contenders now in the consumer/prosumer market, differentiation is shifting from raw model quality to ecosystem integration and vertical specialization. The "one assistant to rule them all" thesis is dead; multi-tool workflows are the new norm.

Building On Top Of This

Changing The Model

As of May 2026, here are the options Claude provides and what each is best for:

  • Opus (Most Intelligent): Best for complex tasks, deep reasoning, coding, and strategic analysis. It is the most powerful but slower and more expensive.
  • Sonnet (Balanced): It provides the best balance of speed, intelligence, and cost, making it ideal for daily coding, data analysis, and content generation.
  • Haiku (Fastest): Optimized for speed and cost-efficiency. It is perfect for high-volume tasks, quick responses, and simple, repetitive jobs.

You can test the script with different models and figure out the best one for your use case. I used Claude Opus 4.7 for this demo.

Persisting History

Instead of generating standalone briefings, store each run with a timestamp. This turns your system into a time-series of news summaries. Once you have history, you can:

  • Compare today vs yesterday (what’s new, what disappeared)
  • Track theme momentum (what’s increasing or fading)
  • Ask Claude for delta summaries instead of fresh-only summaries

Example prompt changes:

“Compare today’s briefing with yesterday’s. Highlight new, removed, and shifting themes.”

Conclusion

The key takeaway here is that LLMs work best when they’re grounded in high-quality external data. In this project, SerpApi provides structured, real-time Bing News data, while Claude turns that raw information into something readable and useful: a concise daily briefing with themes, summaries, and context.

Instead of asking a model to know everything, we can give it fresh information and let it focus on synthesis and reasoning.

I hope you found this useful. If you have any questions, feel free to reach out at contact@serpapi.com

Connecting Claude AI to the Internet (using Function Calling)
Learn how to connect Claude AI by Anthropic to Internet to get rid of knowledge cutoff and enable access to custom functions using function calling or tool use.
How to Extract Bing News Data with SerpApi and Python
This blog post is a step-by-step tutorial for scraping Bing News using SerpApi and Python.
The Web Search API for AI Apps, Agents, and LLMs in 2026
Build AI apps without scraping headaches. Learn how a Web Search API extends model knowledge, delivers real-time data, and gives you full control and flexibility.