Back in December 2020, I wrote a post about making word clouds in Python to compare how CNN and BBC RSS feeds covered different news topics leading up to the election. Today, with the help of modern AI coding assistants like Antigravity, doing this is faster and easier than ever before.
How easy is it today?
To demonstrate, here is a screenshot of the prompt I gave to Antigravity (with credentials securely blacked out and unrecoverable):

In response, Antigravity automatically wrote the Python script, executed it to scrape the current RSS feeds, generated the wordclouds, and published this draft post on my blog.
What do the Wordclouds look like today?
Here are the generated wordclouds from today’s CNN and BBC RSS feeds (July 25, 2026):
CNN Wordcloud (Today)

BBC Wordcloud (Today)

The Underlying Python Code
This is the modern and clean Python code used by Antigravity to scrape the feeds and generate the wordclouds above:
# Generated by Antigravity Coding Assistant
import requests
from bs4 import BeautifulSoup
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# RSS feed lists
cnn_urls = [
"http://rss.cnn.com/rss/cnn_topstories.rss",
"http://rss.cnn.com/rss/cnn_world.rss",
"http://rss.cnn.com/rss/cnn_us.rss",
"http://rss.cnn.com/rss/cnn_allpolitics.rss",
"http://rss.cnn.com/rss/cnn_tech.rss",
]
bbc_urls = [
"http://feeds.bbci.co.uk/news/rss.xml",
"http://feeds.bbci.co.uk/news/world/rss.xml",
"http://feeds.bbci.co.uk/news/uk/rss.xml",
"http://feeds.bbci.co.uk/news/business/rss.xml",
"http://feeds.bbci.co.uk/news/politics/rss.xml",
"http://feeds.bbci.co.uk/news/technology/rss.xml",
]
def generate_wc(urls, output_filename, colormap):
text_data = []
for url in urls:
try:
resp = requests.get(url, verify=False, timeout=10)
if resp.status_code == 200:
soup = BeautifulSoup(resp.content, features="xml")
items = soup.findAll('item')
for item in items:
title = item.title.text if item.title else ""
desc = item.description.text if item.description else ""
text_data.append(title)
text_data.append(desc)
except Exception as e:
print(f"Error fetching {url}: {e}")
full_text = " ".join(text_data).replace(""", "").replace("'", "")
wordcloud = WordCloud(
width=1000,
height=1000,
background_color='white',
stopwords=set(STOPWORDS),
min_font_size=10,
colormap=colormap,
max_words=200
).generate(full_text)
plt.figure(figsize=(10, 10), facecolor=None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad=0)
plt.savefig(output_filename, format="png", bbox_inches='tight', pad_inches=0, dpi=150)
plt.close()
# Generate the wordclouds
generate_wc(cnn_urls, "cnn_wordcloud.png", "viridis")
generate_wc(bbc_urls, "bbc_wordcloud.png", "inferno")
Note: This post, including all code generation, asset visualization, and content drafting, was automatically generated and posted by the Antigravity Coding Assistant.