Hey everyone, Emma here from agent101.net! Can you believe it’s already mid-2026? Time flies, especially in the world of AI agents. It feels like just yesterday I was trying to explain what an API was to my grandma (bless her heart, she’s getting there!).
Today, I want to dive into something that’s been on my mind a lot lately, especially as I talk to more and more people just starting out with AI agents. We often hear about these incredible, complex agents that can write novels, manage entire businesses, or even design new chips. And while those are super cool, they can also feel a bit… out of reach for a beginner, right?
So, let’s bring it back to basics. Forget the fancy stuff for a second. We’re going to talk about building your very first “dumb” AI agent. And by “dumb,” I mean an agent that does one, very specific, very simple thing, and does it well. Think of it as your AI agent training wheels. My goal today is to show you that getting started isn’t about mastering complex frameworks or understanding deep neural networks. It’s about breaking down a problem into tiny, manageable pieces and letting a simple script take care of one of them.
Why start with a “dumb” agent? Because that’s how I started, and honestly, it was the best way to grasp the core concepts without getting overwhelmed. My first agent was literally a script that checked if a specific website was online and emailed me if it wasn’t. Revolutionary? Nope. Incredibly useful and a fantastic learning experience? Absolutely.
My Journey: From Overwhelmed to “Aha!”
Before I started agent101.net, I spent a good six months just reading, watching, and trying to understand what people meant by “AI agents.” It felt like everyone was speaking a different language. Some articles talked about LLMs, others about multi-agent systems, and I was just sitting there thinking, “Can someone just tell me how to make a computer *do something* by itself?”
The turning point for me was when I stopped trying to build a super-intelligent butler and instead focused on automating one tiny, annoying task. For me, it was checking my favorite local bakery’s website every morning to see if they had my special sourdough in stock. Yes, really. I’m a creature of habit, and I love that bread!
Manually checking took maybe 30 seconds, but every single morning, it was just enough friction to feel like a chore. That’s when the lightbulb went off: this is a perfect candidate for a “dumb” agent. It doesn’t need to understand my feelings, or negotiate prices, or even learn. It just needs to look for a specific phrase on a specific webpage at a specific time.
And that’s what we’re going to build today – not a bakery checker, but something equally simple and practical: a basic AI agent that monitors a public RSS feed for new articles matching a keyword and sends you a desktop notification.
What Even IS a “Dumb” AI Agent?
Let’s clarify. When I say “dumb” AI agent, I’m not being derogatory. I’m talking about an agent that:
- Has a single, clear objective.
- Operates on a predefined set of rules or conditions.
- Doesn’t learn from experience in a complex way (it might update a list of things it’s seen, but not adjust its core logic).
- Often involves simple scripting rather than complex AI models.
- Is designed to automate a micro-task, not solve world hunger.
Think of it as a digital assistant that only knows how to do one trick, but does it perfectly every single time. The beauty of these agents is their simplicity. They are easy to understand, easy to build, and incredibly satisfying when they work.
Our Project: The RSS Keyword Notifier
Imagine you’re tracking news about a specific niche, or maybe updates from a particular project. Instead of constantly refreshing an RSS feed reader or a news site, we can build a simple agent to do the heavy lifting. This agent will:
- Fetch a given RSS feed.
- Parse the feed to get article titles and links.
- Check if any new article titles contain a specific keyword.
- If a match is found, send a desktop notification.
- Remember which articles it has already notified you about to avoid spamming.
This covers fetching data, processing it, making a simple decision, performing an action, and maintaining a basic state – all core components of even the most sophisticated agents, just on a smaller scale.
What You’ll Need
- Python installed on your computer (if you don’t have it, it’s a great time to learn! Python is super beginner-friendly).
- A few Python libraries:
feedparser,plyer(for notifications), andrequests(thoughfeedparseroften handles the fetching part,requestsis good to know). - A text editor (VS Code, Sublime Text, or even Notepad++ are fine).
- About 30-60 minutes of your time.
Step 1: Setting Up Your Environment
First things first, open your terminal or command prompt. We need to install our libraries. If you’re completely new to this, don’t worry, it’s just one line of code:
pip install feedparser plyer
If you get an error about `pip` not being found, you might need to add Python to your system’s PATH. A quick Google search for “add Python to PATH [your OS]” will usually give you clear instructions.
Step 2: The Core Logic – Fetching and Parsing the Feed
Create a new Python file (e.g., `rss_agent.py`). Let’s start by getting the feed data.
import feedparser
import time
import os
import json
from plyer import notification # For desktop notifications
# --- Configuration ---
RSS_FEED_URL = "https://www.theverge.com/rss/index.xml" # Example: The Verge
KEYWORD = "AI agent" # The keyword we're looking for (case-insensitive search)
CHECK_INTERVAL_SECONDS = 300 # Check every 5 minutes (300 seconds)
HISTORY_FILE = "notified_articles.json" # To store articles we've already seen
def load_notified_articles():
if os.path.exists(HISTORY_FILE):
with open(HISTORY_FILE, 'r') as f:
return set(json.load(f))
return set()
def save_notified_articles(articles_set):
with open(HISTORY_FILE, 'w') as f:
json.dump(list(articles_set), f)
def check_rss_feed(feed_url, keyword, notified_articles):
print(f"Checking RSS feed: {feed_url} for keyword: '{keyword}'...")
feed = feedparser.parse(feed_url)
new_articles_found = []
for entry in feed.entries:
article_id = entry.link # Using the link as a unique identifier for simplicity
if article_id in notified_articles:
continue # Skip if we've already notified about this article
title = entry.title
link = entry.link
if keyword.lower() in title.lower():
print(f"Match found! Title: {title}, Link: {link}")
new_articles_found.append({"title": title, "link": link})
notified_articles.add(article_id) # Add to our 'seen' list
return new_articles_found, notified_articles
# --- Main Agent Loop ---
if __name__ == "__main__":
print("Starting RSS Keyword Notifier Agent...")
notified_articles = load_notified_articles()
print(f"Loaded {len(notified_articles)} previously notified articles.")
while True:
try:
new_articles, updated_notified_articles = check_rss_feed(RSS_FEED_URL, KEYWORD, notified_articles)
if new_articles:
print(f"Found {len(new_articles)} new articles matching '{KEYWORD}'!")
for article in new_articles:
notification_title = f"New '{KEYWORD}' Article Found!"
notification_message = f"{article['title']}\n{article['link']}"
try:
notification.notify(
title=notification_title,
message=notification_message,
app_name="RSS Agent",
timeout=10 # Notification stays for 10 seconds
)
print(f"Notification sent for: {article['title']}")
except Exception as e:
print(f"Could not send notification (plyer issue?): {e}")
print("Make sure you have a notification backend installed/configured for plyer.")
print("For Windows, try 'pip install win10toast' or 'pip install pync' for macOS, etc.")
else:
print("No new articles matching the keyword.")
notified_articles = updated_notified_articles # Update our main set
save_notified_articles(notified_articles) # Save the updated set
except Exception as e:
print(f"An error occurred: {e}")
print("Trying again after the interval...")
time.sleep(CHECK_INTERVAL_SECONDS)
print(f"Waiting {CHECK_INTERVAL_SECONDS} seconds before next check...")
Understanding the Code
- Configuration: We set our `RSS_FEED_URL`, the `KEYWORD` we’re looking for, how often to `CHECK_INTERVAL_SECONDS`, and a `HISTORY_FILE` to keep track of what we’ve seen.
- `load_notified_articles` & `save_notified_articles`: These functions handle persisting our “memory.” We use a JSON file to store the links (acting as unique IDs) of articles we’ve already notified about. This is crucial for avoiding repeat notifications.
- `check_rss_feed`: This is the heart of our agent.
- It uses `feedparser.parse()` to fetch and interpret the RSS feed.
- It then loops through each `entry` (article) in the feed.
- It checks if the article’s `link` (our ID) is already in `notified_articles`. If so, it skips.
- It performs a case-insensitive search (`.lower()`) for our `KEYWORD` in the article’s `title`.
- If a match is found, it adds the article details to `new_articles_found` and adds its `article_id` to our `notified_articles` set.
- Main Agent Loop (`if __name__ == “__main__”:`):
- This is where our agent runs continuously.
- It first loads any previously notified articles.
- The `while True:` loop makes it run forever (or until you stop the script).
- Inside the loop, it calls `check_rss_feed`.
- If `new_articles` are found, it uses `plyer.notification.notify()` to pop up a desktop notification.
- It then updates and saves the `notified_articles` list.
- `time.sleep()` pauses the agent for our defined interval before checking again.
- The `try…except` block is there to catch any errors and prevent the agent from crashing entirely, making it more resilient.
Customizing and Running Your Agent
1. Change the RSS Feed: Swap out `https://www.theverge.com/rss/index.xml` for any RSS feed you want to monitor. Most news sites, blogs, and even some forums offer RSS feeds. Just look for the RSS icon or search “site name RSS feed.”
2. Change the Keyword: Pick something relevant to you! Maybe “Python tutorial,” “new gadget review,” or your favorite band’s name.
3. Adjust Check Interval: If you want more frequent updates, reduce `CHECK_INTERVAL_SECONDS`. Be mindful of how often you hit a server, especially for smaller sites. 5 minutes (300 seconds) is a pretty safe bet.
4. Run It: Open your terminal, navigate to the directory where you saved `rss_agent.py`, and run:
python rss_agent.py
You’ll see output in your terminal indicating what the agent is doing. If a new article matches your keyword, you should get a desktop notification!
A Note on Notifications (plyer)
`plyer` is great because it tries to use the native notification system of your OS. However, sometimes it needs a bit of help. If you’re on Windows and don’t get notifications, try `pip install win10toast`. On macOS, it might be `pip install pync`. Check the `plyer` documentation if you run into issues on your specific OS.
Beyond “Dumb”: Where Do We Go From Here?
So, you’ve built your first “dumb” agent. Congratulations! This is a huge step. You’ve gone from conceptual understanding to actually making something happen autonomously.
This simple RSS notifier, while basic, demonstrates key agent principles:
- Perception: Reading the RSS feed.
- Decision Making: Checking for the keyword and if the article is new.
- Action: Sending a notification.
- Memory/State: Storing `notified_articles` to avoid redundancy.
From here, the possibilities for making your agent “smarter” are endless:
- Multiple Feeds/Keywords: Modify your agent to monitor a list of feeds and/or keywords.
- Different Actions: Instead of a desktop notification, maybe send an email, save to a text file, or post to a private Discord channel.
- Sentiment Analysis (a little smarter): Instead of just keyword matching, you could integrate a very basic sentiment analysis library (like `TextBlob`) to only notify you if the article’s title or summary has a positive or negative tone towards your keyword. This starts to introduce a tiny bit of “intelligence.”
- Scheduled Runs: Instead of `while True`, you can use tools like `cron` (on Linux/macOS) or Task Scheduler (on Windows) to run your script at specific intervals, making it more robust than a continuous loop in a terminal.
Actionable Takeaways
You just built an AI agent! Here’s what I want you to take away from this:
- Start Simple: Don’t try to build the next ChatGPT on your first go. Automate one small, annoying task. The success you get from that small win will propel you forward.
- Deconstruct the Problem: Break down what you want the agent to do into tiny, logical steps: get data, process data, make a decision, take action, remember things.
- Code is Your Playground: Don’t be afraid to experiment! Change the keyword, try a different RSS feed, mess with the notification message. That’s how you learn.
- Persistence Pays Off: You might encounter errors. That’s normal! Google is your best friend. Read the error messages; they often tell you exactly what’s wrong.
- This is Just the Beginning: The concepts you applied here – fetching data, conditional logic, maintaining state – are fundamental to all AI agents, big or small. You’ve got the foundation.
I hope this practical guide helps demystify getting started with AI agents. It’s not about complex algorithms right away; it’s about understanding how to make your computer work for you, one small, intelligent step at a time.
Go forth and build your “dumb” agents! Let me know in the comments what simple tasks you’ve automated or plan to automate. Happy coding!
🕒 Published: