<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: FloydBennett</title>
    <description>The latest articles on DEV Community by FloydBennett (@floydbennett).</description>
    <link>https://dev.to/floydbennett</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3978666%2F90c464b7-796d-43d6-b7f2-c763774cb913.webp</url>
      <title>DEV Community: FloydBennett</title>
      <link>https://dev.to/floydbennett</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/floydbennett"/>
    <language>en</language>
    <item>
      <title>I Built an Automated Real Estate Price Monitor with n8n + Octoparse MCP + Claude</title>
      <dc:creator>FloydBennett</dc:creator>
      <pubDate>Thu, 11 Jun 2026 09:15:04 +0000</pubDate>
      <link>https://dev.to/floydbennett/i-built-an-automated-real-estate-price-monitor-with-n8n-octoparse-mcp-claude-5fep</link>
      <guid>https://dev.to/floydbennett/i-built-an-automated-real-estate-price-monitor-with-n8n-octoparse-mcp-claude-5fep</guid>
      <description>&lt;p&gt;I've been casually watching the Seattle housing market for a while. &lt;br&gt;
Every few days I'd open Zillow, filter by location, scroll through &lt;br&gt;
listings, and manually copy prices into a spreadsheet. It was tedious &lt;br&gt;
and I kept missing good deals.&lt;/p&gt;

&lt;p&gt;One afternoon I thought — why not just automate this? A few hours &lt;br&gt;
later I had a workflow that runs every morning at 8am, scrapes 800+ &lt;br&gt;
listings, saves everything to Google Sheets, and emails me a summary. &lt;br&gt;
I haven't opened Zillow manually since.&lt;/p&gt;

&lt;p&gt;Here's exactly how I built it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — I built a fully automated real estate price monitoring system for Seattle using n8n, Octoparse MCP, Claude AI, Google Sheets, and Gmail. It runs every morning at 8am, scrapes 800+ Zillow listings, saves them to a spreadsheet, and emails me a daily report — zero manual work required. Here's the exact step-by-step.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Tracking real estate prices manually is painful. You open Zillow, filter by location, scroll through hundreds of listings, copy data into a spreadsheet, and repeat the next day. By the time you notice a price drop, someone else has already made an offer.&lt;/p&gt;

&lt;p&gt;I wanted a system that does all of this automatically — scrape the data, store it, and send me a daily digest. No clicking. No copy-pasting. Just results in my inbox every morning.&lt;/p&gt;

&lt;p&gt;Here's what I built.&lt;/p&gt;


&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;Every morning at 8am, this automated workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Triggers&lt;/strong&gt; on a schedule (n8n Schedule Trigger)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scrapes&lt;/strong&gt; 800+ Seattle home listings from Zillow via Octoparse MCP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Saves&lt;/strong&gt; all data (address, price, beds, baths, sqft, status) to Google Sheets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emails&lt;/strong&gt; a daily summary report via Gmail&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The entire pipeline runs without any human input. Once set up, it just works.&lt;/p&gt;


&lt;h2&gt;
  
  
  Tools Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;n8n&lt;/strong&gt; — workflow automation (free, self-hosted or cloud)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Octoparse MCP&lt;/strong&gt; — AI-powered web scraping via Model Context Protocol&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude&lt;/strong&gt; (via Anthropic API) — the AI agent that orchestrates the scraping&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Sheets&lt;/strong&gt; — data storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gmail&lt;/strong&gt; — daily report delivery&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Step 1 — Connect Octoparse MCP to Claude
&lt;/h2&gt;

&lt;p&gt;The first step is authorizing Claude to use Octoparse MCP. This gives Claude the ability to search Octoparse templates, launch scraping tasks, and export data — all through natural language.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F963a1cwk87sec51pabwp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F963a1cwk87sec51pabwp.png" alt=" " width="773" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once authorized, Claude has access to Octoparse's full template library and can run cloud scraping tasks on demand.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 2 — Test the Scraping in Claude
&lt;/h2&gt;

&lt;p&gt;Before building the automation, I tested the scraping directly in Claude to make sure it worked. I asked Claude to search for Zillow templates on Octoparse:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhxocq8en5pinglnlnaqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhxocq8en5pinglnlnaqc.png" alt=" " width="800" height="739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I asked Claude to scrape Seattle real estate listings from Zillow:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I'm building a real estate price monitoring system. Can you scrape home listings from Zillow using Octoparse? I'd like to track properties for sale in Seattle — please set the location to 'Seattle' and the type to 'buy'. I need up to 200 results including price, address, number of bedrooms, bathrooms, square footage, and listing status."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofumm8no8x9enm0156dk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofumm8no8x9enm0156dk.png" alt=" " width="799" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The task ran and collected &lt;strong&gt;818 total listings&lt;/strong&gt;. I asked Claude to export the first 20 results as a table:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lm5xror4xuawhkmyizh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2lm5xror4xuawhkmyizh.png" alt=" " width="800" height="42"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvirz8itdxpsz2fbef91k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvirz8itdxpsz2fbef91k.png" alt=" " width="800" height="568"&gt;&lt;/a&gt;&lt;br&gt;
The data was clean, structured, and ready to automate.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 3 — Set Up n8n
&lt;/h2&gt;

&lt;p&gt;Now it was time to build the automation in n8n. I opened n8n and created a new workflow named &lt;strong&gt;"Seattle Real Estate Price Monitor"&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qf9lm2eelg3yfdq09qx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4qf9lm2eelg3yfdq09qx.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr905wq5r3f8kxhy0pb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr905wq5r3f8kxhy0pb7.png" alt=" " width="799" height="389"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 4 — Add a Schedule Trigger
&lt;/h2&gt;

&lt;p&gt;The first node is a Schedule Trigger — this fires the workflow automatically every day at 8am.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"Add first step"&lt;/strong&gt; → &lt;strong&gt;"On a schedule"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configure the trigger:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Trigger Interval&lt;/strong&gt; → Days&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Days Between Triggers&lt;/strong&gt; → 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trigger at Hour&lt;/strong&gt; → 8am&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trigger at Minute&lt;/strong&gt; → 0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then click &lt;strong&gt;"Test this trigger"&lt;/strong&gt; to verify it fires correctly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw58bxlufyrbaxobghnz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffw58bxlufyrbaxobghnz.png" alt=" " width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft4z9sae7o5qxu0ny5the.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft4z9sae7o5qxu0ny5the.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 5 — Add an AI Agent Node
&lt;/h2&gt;

&lt;p&gt;Click the &lt;strong&gt;"+"&lt;/strong&gt; next to the Schedule Trigger → search &lt;strong&gt;"AI Agent"&lt;/strong&gt; → select it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwiy7dzq7vuix0qdrwer.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuwiy7dzq7vuix0qdrwer.png" alt=" " width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the AI Agent configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change &lt;strong&gt;Source for Prompt&lt;/strong&gt; to &lt;strong&gt;"Define below"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste this fixed instruction into the &lt;strong&gt;Prompt&lt;/strong&gt; field:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scrape the latest homes for sale in Seattle from Zillow using
Octoparse. Use the Zillow Listing Scraper by keyword template, set
location to 'Seattle' and type to 'buy'. Get up to 50 results and
return the data including price, address, bedrooms, bathrooms, square
footage and status.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6 — Configure the Chat Model
&lt;/h2&gt;

&lt;p&gt;Scroll to the bottom of the AI Agent node. You'll see three sub-nodes: &lt;strong&gt;Chat Model&lt;/strong&gt;, &lt;strong&gt;Memory&lt;/strong&gt;, and &lt;strong&gt;Tool&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"+"&lt;/strong&gt; under Chat Model → select &lt;strong&gt;"Anthropic Chat Model"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set up your Anthropic API credential:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://console.anthropic.com" rel="noopener noreferrer"&gt;console.anthropic.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;API Keys&lt;/strong&gt; → &lt;strong&gt;Create Key&lt;/strong&gt; → name it "n8n"&lt;/li&gt;
&lt;li&gt;Copy the key and paste it into n8n&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwjprxcuxboj5z29edul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbwjprxcuxboj5z29edul.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you prefer a free alternative, you can use Groq (console.groq.com) — create a free API key, select "OpenAI Chat Model" in n8n, set the Base URL to &lt;code&gt;https://api.groq.com/openai/v1&lt;/code&gt;, and choose model &lt;code&gt;llama-3.3-70b-versatile&lt;/code&gt;. Make sure to disable the "Use Responses API" toggle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Heads up:&lt;/strong&gt; I originally tried using the Anthropic API directly &lt;br&gt;
but hit a rate limit issue on my first test run. Switched to Groq &lt;br&gt;
as a fallback and it worked perfectly — and it's completely free. &lt;br&gt;
If you're just testing, start with Groq.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Step 7 — Connect Octoparse MCP as a Tool
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;"+"&lt;/strong&gt; under &lt;strong&gt;Tool&lt;/strong&gt; → the MCP servers panel appears.&lt;/p&gt;

&lt;p&gt;Octoparse isn't in the default list — that's fine. Click &lt;strong&gt;"MCP Client Tool"&lt;/strong&gt; at the top.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmrutp40onwtst6nuvul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmrutp40onwtst6nuvul.png" alt=" " width="799" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure the MCP Client:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint&lt;/strong&gt; → &lt;code&gt;https://mcp.octoparse.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server Transport&lt;/strong&gt; → HTTP Streamable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt; → Header Auth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;"Set up credential"&lt;/strong&gt; and fill in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt; → &lt;code&gt;Authorization&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Value&lt;/strong&gt; → &lt;code&gt;Bearer YOUR_OCTOPARSE_API_KEY&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Get your Octoparse API key at &lt;a href="https://www.octoparse.com/console/account-center/api-keys" rel="noopener noreferrer"&gt;octoparse.com/console/account-center/api-keys&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhm3oxx6i1wpqc9jyake.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhm3oxx6i1wpqc9jyake.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"Execute step"&lt;/strong&gt; to test the connection. If successful, you'll see the Octoparse tool list:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzywyb5ik5zozwqc5hh3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzywyb5ik5zozwqc5hh3.png" alt=" " width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP connection successful!&lt;/strong&gt; The AI Agent now has full access to Octoparse's scraping capabilities.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 8 — Add Google Sheets to Store the Data
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;"+"&lt;/strong&gt; on the right side of the AI Agent node → &lt;strong&gt;"Action in an app"&lt;/strong&gt; → search &lt;strong&gt;"Google Sheets"&lt;/strong&gt; → select &lt;strong&gt;"Append row in sheet"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvk9hfxmvbraf4uuci1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvk9hfxmvbraf4uuci1d.png" alt=" " width="799" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"Sign in with Google"&lt;/strong&gt; to authorize. Once connected, you'll see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41pgfq2dwyk93gemacuh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41pgfq2dwyk93gemacuh.png" alt=" " width="799" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now create a Google Sheet:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://sheets.google.com" rel="noopener noreferrer"&gt;sheets.google.com&lt;/a&gt; and create a new spreadsheet&lt;/li&gt;
&lt;li&gt;Name it &lt;strong&gt;"Seattle Real Estate Price Monitor"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add these column headers in row 1: &lt;code&gt;Date | Address | Price | Beds | Baths | SqFt | Status&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4shvxo9niyilqir0d0v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4shvxo9niyilqir0d0v.png" alt=" " width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Back in n8n, select your spreadsheet in the &lt;strong&gt;Document&lt;/strong&gt; dropdown and &lt;strong&gt;Sheet1&lt;/strong&gt; in the Sheet dropdown.&lt;/p&gt;

&lt;p&gt;Map the fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date&lt;/strong&gt; → &lt;code&gt;{{ $now.toISO() }}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Address / Price / Beds / Baths / SqFt / Status&lt;/strong&gt; → &lt;code&gt;{{ $json.output }}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Step 9 — Add Gmail to Send the Daily Report
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;"+"&lt;/strong&gt; on the right of the Google Sheets node → search &lt;strong&gt;"Gmail"&lt;/strong&gt; → select &lt;strong&gt;"Send a message"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;"Sign in with Google"&lt;/strong&gt; to authorize Gmail.&lt;/p&gt;

&lt;p&gt;Fill in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;To&lt;/strong&gt; → your email address&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subject&lt;/strong&gt; → &lt;code&gt;Daily Seattle Real Estate Price Report - {{ $now.format('yyyy-MM-dd') }}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email Type&lt;/strong&gt; → HTML&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message&lt;/strong&gt; → &lt;code&gt;{{ $json.output }}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dj2duj1saftcjpc9mt3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6dj2duj1saftcjpc9mt3.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 10 — The Complete Workflow
&lt;/h2&gt;

&lt;p&gt;Here's the full workflow with all nodes connected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Schedule Trigger → AI Agent → Append row in sheet → Send a message
                      ↓
          Anthropic Chat Model + MCP Client (Octoparse)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvo3bhv7s2dghc5tc2bti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvo3bhv7s2dghc5tc2bti.png" alt=" " width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 11 — Execute and Verify
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;"Execute workflow"&lt;/strong&gt; to run a full test.&lt;/p&gt;

&lt;p&gt;The AI Agent calls Octoparse MCP, which scrapes Zillow, finds the right template, and returns results. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;818 listings collected.&lt;/strong&gt; The Google Sheets file updated automatically:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F295dsjrcid84mk0nl3l2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F295dsjrcid84mk0nl3l2.png" alt=" " width="799" height="307"&gt;&lt;/a&gt;&lt;br&gt;
And the Gmail report arrived in my inbox:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fosqbji9ky664x1k6txfr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fosqbji9ky664x1k6txfr.png" alt=" " width="800" height="459"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Workflow executed successfully.&lt;/strong&gt; &lt;/p&gt;




&lt;p&gt;One thing I didn't expect — the Zillow scrape takes about 4-5 minutes &lt;br&gt;
to collect 800+ listings. The first time I ran it I thought something &lt;br&gt;
had broken, but Claude was just patiently polling for results. Worth &lt;br&gt;
knowing before your first test run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;818 Seattle home listings&lt;/strong&gt; scraped from Zillow in a single run&lt;/li&gt;
&lt;li&gt;Data saved to Google Sheets with timestamp, address, price, beds, baths, sqft, and status&lt;/li&gt;
&lt;li&gt;Daily email report delivered automatically every morning at 8am&lt;/li&gt;
&lt;li&gt;Zero manual work after initial setup&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Octoparse MCP?
&lt;/h2&gt;

&lt;p&gt;Traditional web scraping requires writing custom code for each website, maintaining scrapers when sites change, and managing proxies and rate limits. Octoparse MCP eliminates all of that.&lt;/p&gt;

&lt;p&gt;You describe what you want in plain English. Claude finds the right template, configures it with your parameters, runs the task, and returns structured data. It's the difference between writing a web scraper and asking someone to do it for you.&lt;/p&gt;

&lt;p&gt;Combined with n8n for scheduling and Google Sheets for storage, this becomes a complete data pipeline — built in an afternoon, runs forever.&lt;/p&gt;




&lt;h2&gt;
  
  
  Adapting This for Other Use Cases
&lt;/h2&gt;

&lt;p&gt;The same pattern works for any recurring data monitoring task:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Job listings&lt;/strong&gt; — track new openings at target companies daily&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product prices&lt;/strong&gt; — monitor competitor pricing on Amazon or e-commerce sites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;News monitoring&lt;/strong&gt; — scrape industry news and send daily digests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead generation&lt;/strong&gt; — collect business listings from Google Maps on a schedule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Change the Octoparse template and the prompt in the AI Agent node — everything else stays the same.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Octoparse MCP:&lt;/strong&gt; &lt;a href="https://www.octoparse.com/mcp" rel="noopener noreferrer"&gt;octoparse.com/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;n8n:&lt;/strong&gt; &lt;a href="https://n8n.io" rel="noopener noreferrer"&gt;n8n.io&lt;/a&gt; (free tier available)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Octoparse template library:&lt;/strong&gt; &lt;a href="https://www.octoparse.com/template" rel="noopener noreferrer"&gt;octoparse.com/template&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Built for the &lt;a href="https://dev.to/octoparse"&gt;Octoparse MCP Challenge&lt;/a&gt; · Track 1: Build a Workflow with Octoparse MCP&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Powered by &lt;a href="https://www.octoparse.com/mcp" rel="noopener noreferrer"&gt;Octoparse MCP&lt;/a&gt; + &lt;a href="https://n8n.io" rel="noopener noreferrer"&gt;n8n&lt;/a&gt; + &lt;a href="https://claude.ai" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>octoparse</category>
      <category>n8n</category>
      <category>automation</category>
      <category>claude</category>
    </item>
    <item>
      <title>I Built an AI-Powered World Cup News Digest Page in Under a Minute — Using Octoparse MCP + Claude</title>
      <dc:creator>FloydBennett</dc:creator>
      <pubDate>Thu, 11 Jun 2026 08:44:01 +0000</pubDate>
      <link>https://dev.to/floydbennett/i-built-an-ai-powered-world-cup-news-digest-page-in-under-a-minute-using-octoparse-mcp-claude-1a1a</link>
      <guid>https://dev.to/floydbennett/i-built-an-ai-powered-world-cup-news-digest-page-in-under-a-minute-using-octoparse-mcp-claude-1a1a</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm21mmtz5ncidbvaw8ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcm21mmtz5ncidbvaw8ai.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — I built an Octoparse Agent Skill that scrapes news, summarizes it with Claude, and outputs a single deployable HTML page with live scores, market odds, fan sentiment, and more. The World Cup 2026 demo took under a minute to generate. Here's exactly how it works.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Problem with News Aggregators
&lt;/h2&gt;

&lt;p&gt;Most news tools give you a list of links. You still have to click every article, read through the noise, and figure out what actually matters.&lt;/p&gt;

&lt;p&gt;I wanted something different: &lt;strong&gt;tell Claude a topic, get back a finished product&lt;/strong&gt; — a page I could open in my browser, share with friends, or deploy to a URL in two minutes.&lt;/p&gt;

&lt;p&gt;That's what this Octoparse Agent Skill does.&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Produces
&lt;/h2&gt;

&lt;p&gt;Here's the World Cup 2026 Matchday 01 example — generated on June 11, 2026, the opening day of the tournament:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwe8sz1vivawjbwltwv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwe8sz1vivawjbwltwv3.png" alt="World Cup 2026 AI Digest — Hero section showing WORLD CUP 2026 in large cyberpunk typography with live badge and AI-generated headline" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The page contains seven modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-Generated Headline&lt;/strong&gt; — Claude distills all scraped articles into one punchy 2–3 line statement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live Scoreboard&lt;/strong&gt; — real-time match scores, kickoff times, today's fixtures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Group Standings&lt;/strong&gt; — all 12 World Cup groups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prediction Wall&lt;/strong&gt; — market odds scraped via Octoparse MCP, visualized as probability bars&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fan Sentiment Radar&lt;/strong&gt; — Reddit + YouTube comment sentiment for all 4 teams playing today&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;News Feed&lt;/strong&gt; — 18 articles grouped by theme, each with a "Why it matters" AI insight&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alert Section&lt;/strong&gt; — high-priority controversy and political stories flagged in red&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Field Map&lt;/strong&gt; — 48-team grid with today's active squads highlighted&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share Modal&lt;/strong&gt; — cyberpunk-styled card with one-click sharing to X/WhatsApp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is in a &lt;strong&gt;single self-contained HTML file&lt;/strong&gt; (~420KB) with fonts embedded. No backend, no server, no dependencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Live Demo
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://ohayo716.github.io/octoparse-news-digest/worldcup-digest.html" rel="noopener noreferrer"&gt;ohayo716.github.io/octoparse-news-digest/worldcup-digest.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works — The Full Pipeline
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User types topic (or drags SKILL.md and says "surprise me")
      ↓
Claude reads SKILL.md instructions
      ↓
Octoparse MCP finds matching scraping template
      ↓
Octoparse scrapes news + odds + sentiment data
      ↓
Claude summarizes articles + generates AI headline
      ↓
Live score API fetches real-time match data
      ↓
Single HTML file generated and delivered
      ↓
User opens in browser or deploys to GitHub Pages
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The entire pipeline runs inside a Claude conversation. The user never touches code.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Skill File — SKILL.md
&lt;/h2&gt;

&lt;p&gt;The core of this project is a single &lt;code&gt;SKILL.md&lt;/code&gt; file. This is an &lt;strong&gt;Octoparse Agent Skill&lt;/strong&gt; — a markdown file that gives Claude structured instructions for using Octoparse MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 0 — Drag and Drop Trigger
&lt;/h3&gt;

&lt;p&gt;When a user drags &lt;code&gt;SKILL.md&lt;/code&gt; into Claude Desktop, the skill fires immediately:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I'll build you an AI news digest page right now. What topic should I cover? Or say 'surprise me' and I'll pick today's biggest story."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No configuration needed. No setup. Just drag and go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Topic Detection
&lt;/h3&gt;

&lt;p&gt;The skill auto-detects context. During the World Cup, it automatically recognizes the tournament as the dominant topic. The user can override with any keyword — "AI regulation", "fintech", "Tesla", anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — One Optional Question
&lt;/h3&gt;

&lt;p&gt;Before scraping, the skill asks once whether the user has a free API key for live data. If yes, it embeds it directly in the HTML output. If no, the page works perfectly without it. &lt;strong&gt;No file editing required.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3–4 — Octoparse MCP Scraping
&lt;/h3&gt;

&lt;p&gt;The skill searches Octoparse for matching templates:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Google News [topic]       → broadest coverage
2. [Site name] articles      → if user named a source  
3. Odds/betting scrapers     → for prediction wall
4. Reddit/YouTube scrapers   → for sentiment analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5 — Claude Summarization + AI Headline
&lt;/h3&gt;

&lt;p&gt;For each article, Claude generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What happened&lt;/strong&gt; (1 sentence)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt; (1 sentence, specific and insightful)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then produces the &lt;strong&gt;AI Headline&lt;/strong&gt; — distilled from everything scraped:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"THE AZTECA ROARS. THE WORLD STOPS. FOOTBALL IS BACK."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 6 — HTML Generation
&lt;/h3&gt;

&lt;p&gt;Claude outputs a single self-contained HTML file. Fonts are embedded as base64 so the file works completely offline once generated.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Design Language
&lt;/h2&gt;

&lt;p&gt;The aesthetic is &lt;strong&gt;cyberpunk terminal&lt;/strong&gt; — deep dark backgrounds, fluorescent green accents, scanline overlay, monospace fonts. It signals immediately: &lt;em&gt;this was generated by a machine, and that's the point&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47iqpalvjbt2fso31vnx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47iqpalvjbt2fso31vnx.png" alt="Scoreboard showing Mexico vs South Africa with live kickoff badge and Prediction Wall below with market odds probability bars" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three fonts, each with a specific role:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Font&lt;/th&gt;
&lt;th&gt;Used for&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BigShoulders Bold&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hero titles, score digits&lt;/td&gt;
&lt;td&gt;Maximum visual impact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Silkscreen&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Section numbers &lt;code&gt;01 02 03&lt;/code&gt; and labels only&lt;/td&gt;
&lt;td&gt;Pixel aesthetic, navigation feel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GeistMono&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;All body text, news titles, metadata&lt;/td&gt;
&lt;td&gt;Clean, readable at any size&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The section dividers use Silkscreen pixel font — everything else uses GeistMono. Pixel aesthetic present without sacrificing readability.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prediction Wall — Market Odds via Octoparse
&lt;/h2&gt;

&lt;p&gt;The Prediction Wall shows market odds for today's matches, scraped via Octoparse MCP from public betting aggregators and visualized as probability bars.&lt;/p&gt;

&lt;p&gt;Instead of users voting on predictions, &lt;strong&gt;the market does the predicting&lt;/strong&gt;. Odds are the most accurate real-time signal of what experts think will happen — and Octoparse can scrape them automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fan Sentiment Radar — Reddit + YouTube via Octoparse
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcu9w4bhj1vlqsocp1a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcu9w4bhj1vlqsocp1a9.png" alt="Fan Sentiment Radar showing 4 teams with sentiment bars and keyword tags scraped from Reddit and YouTube" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The sentiment module scrapes Reddit threads and YouTube comments for all four teams playing today, then Claude analyzes the text for positive/neutral/negative sentiment and extracts the most-discussed keywords.&lt;/p&gt;

&lt;p&gt;Each team gets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Three sentiment bars (positive / neutral / negative %)&lt;/li&gt;
&lt;li&gt;8 hot keywords from fan discussions&lt;/li&gt;
&lt;li&gt;Post count and source attribution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turns raw social data into something instantly readable.&lt;/p&gt;




&lt;h2&gt;
  
  
  News Feed — AI Summarized
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc151ukc5vqvzn79dch0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc151ukc5vqvzn79dch0j.png" alt="News Feed showing cyberpunk-styled cards with source, headline, WHY IT MATTERS block, and read full article link" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every article card follows the same structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[SOURCE · TIME AGO]              [TAG]
[News headline — GeistMono, readable]
┌─ // WHY IT MATTERS ──────────────┐
│  [1-sentence AI insight]         │
└──────────────────────────────────┘
&amp;gt; READ FULL ARTICLE →  [real URL]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Articles are grouped into themes: On the Pitch, Off the Pitch, Alert (controversy).&lt;/p&gt;




&lt;h2&gt;
  
  
  Visual Field Map
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwyqv1v5oyn4wj9cmnk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwyqv1v5oyn4wj9cmnk6.png" alt="Tournament Field showing 48-team grid with MEX, RSA, KOR, CZE highlighted in fluorescent green as today's playing squads" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A 48-team grid where today's active squads pulse in fluorescent green. One glance tells you who's playing today out of all 48 nations.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Share Modal
&lt;/h2&gt;

&lt;p&gt;Clicking &lt;strong&gt;"⚡ SHARE SIGNAL"&lt;/strong&gt; opens a cyberpunk-styled modal with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data-flow animation (green light streaming down the right edge)&lt;/li&gt;
&lt;li&gt;Scanline overlay effect&lt;/li&gt;
&lt;li&gt;AI headline displayed prominently&lt;/li&gt;
&lt;li&gt;Today's match and stats&lt;/li&gt;
&lt;li&gt;One-click sharing to X (Twitter) or WhatsApp&lt;/li&gt;
&lt;li&gt;Copy-to-clipboard for any platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The card is designed to look stunning as a screenshot — the kind of thing someone would actually post.&lt;/p&gt;




&lt;h2&gt;
  
  
  System Log Footer
&lt;/h2&gt;

&lt;p&gt;Every generated page ends with a system log showing the full pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2026-06-11 00:00:01  [OK]  Octoparse MCP connected · templates loaded
2026-06-11 00:00:04  [OK]  Scrape executed · 18 articles · 6 sources
2026-06-11 00:00:08  [OK]  Claude summarization complete · 3 themes identified
2026-06-11 00:00:09  [OK]  AI headline generated · distilled from 18 articles
2026-06-11 00:00:11  [OK]  HTML rendered · single file · fonts embedded · ready
2026-06-11 00:00:12  [OK]  Deploy → GitHub Pages · done
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Transparency as design — the user sees exactly what Octoparse and Claude did.&lt;/p&gt;




&lt;h2&gt;
  
  
  Deploy to GitHub Pages (2 minutes)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a new GitHub repository&lt;/li&gt;
&lt;li&gt;Upload &lt;code&gt;worldcup-digest.html&lt;/code&gt;, rename it &lt;code&gt;index.html&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings → Pages → Source: main branch&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Live at &lt;code&gt;https://[username].github.io/[repo-name]/&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once deployed, live APIs work correctly (local file CORS restrictions don't apply).&lt;/p&gt;




&lt;h2&gt;
  
  
  Use It for Any Topic
&lt;/h2&gt;

&lt;p&gt;The World Cup is just the demo. The skill works for any topic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Make me a news digest about AI regulation"
→ Scrapes Reuters, TechCrunch, The Verge
→ Groups by: EU AI Act / US Congress / Corporate compliance
→ Same cyberpunk digest page, different data

"Build a fintech briefing for this week"  
→ Scrapes Bloomberg, FT, CoinDesk
→ Groups by: Funding / Regulation / Market moves

"Surprise me"
→ Claude detects today's biggest story automatically
→ Builds the digest without any further questions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Get the Skill
&lt;/h2&gt;

&lt;p&gt;Everything is open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📁 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ohayo716/octoparse-news-digest" rel="noopener noreferrer"&gt;github.com/ohayo716/octoparse-news-digest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://ohayo716.github.io/octoparse-news-digest/worldcup-digest.html" rel="noopener noreferrer"&gt;ohayo716.github.io/octoparse-news-digest/worldcup-digest.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;To use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;SKILL.md&lt;/code&gt; from the repo&lt;/li&gt;
&lt;li&gt;Connect Octoparse MCP to Claude Desktop (&lt;a href="https://www.octoparse.com/mcp" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Drag &lt;code&gt;SKILL.md&lt;/code&gt; into a Claude conversation&lt;/li&gt;
&lt;li&gt;Say your topic — or &lt;strong&gt;"surprise me"&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Match event timeline&lt;/strong&gt; — goals, red cards, VAR decisions as a visual timeline&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-language output&lt;/strong&gt; — French and Chinese versions of the digest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;n8n automation&lt;/strong&gt; — scheduled daily runs, auto-deploy to GitHub Pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;More topics&lt;/strong&gt; — AI news, fintech, startup funding rounds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build something with this skill, drop a link in the comments — I'd love to see it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built for the &lt;a href="https://dev.to/octoparse"&gt;Octoparse MCP Challenge&lt;/a&gt; · Track 2: Build an Octoparse Skill&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Powered by &lt;a href="https://www.octoparse.com/mcp" rel="noopener noreferrer"&gt;Octoparse MCP&lt;/a&gt; + &lt;a href="https://claude.ai" rel="noopener noreferrer"&gt;Claude&lt;/a&gt; + &lt;a href="https://football-data.org" rel="noopener noreferrer"&gt;football-data.org&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>octoparse</category>
      <category>claude</category>
      <category>ai</category>
      <category>worldcup2026</category>
    </item>
  </channel>
</rss>
