data-scraper-agent

Builds scheduled web scraping agents that enrich data with Gemini and store results in Notion.

1|Updated Oct 11, 2025
One-click install
npx skills add https://github.com/ibytechaos/claude --skill data-scraper-agent-ibytechaos
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: data-scraper-agent
Source: https://github.com/ibytechaos/claude/tree/main/plugins/everything-claude-code/skills/data-scraper-agent
Command: npx skills add https://github.com/ibytechaos/claude --skill data-scraper-agent-ibytechaos

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires requests, beautifulsoup4, lxml, python-dotenv, pyyaml, notion-client, playwright.

What problem does it solve? Manually monitoring websites for new jobs, prices, news, or listings is repetitive and easy to forget. This Skill scaffolds a complete automated data collection agent that scrapes public sources on a schedule, enriches each item with an LLM, and stores results in a database — all running free on GitHub Actions. ## Core Features & Use Cases - Three-Layer Architecture: Generates a COLLECT → ENRICH → STORE pipeline with pluggable scraper sources, a Gemini AI client with model fallback, and Notion/Sheets/Supabase storage sync. - Batch AI Enrichment with Learning: Batches items into groups of 5 per API call to stay within free-tier rate limits, and learns from user feedback stored in a JSON file to bias future scoring. - Zero-Cost Scheduling: Ships a GitHub Actions cron workflow that runs the agent on a schedule and commits feedback history back to the repo. - Use Case: Ask it to monitor Hacker News for AI startup funding news — it generates the scraper, Gemini scoring prompts, Notion sync with URL deduplication, and the scheduled workflow. ## Quick Start Ask the assistant to build an agent that monitors a specific website or API for new items and stores scored results in Notion on a daily schedule.

Frequently Asked Questions about data-scraper-agent

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a web scraper that runs on a schedule for free?

Combine a Python scraper using requests and BeautifulSoup with a GitHub Actions cron workflow, which is free for public repositories. The workflow installs dependencies, runs the scraper with secrets from GitHub Secrets, and commits feedback data back to the repo.

How to scrape websites without hitting LLM rate limits?

Batch multiple items into a single API call instead of one call per item — for example, 33 items in batches of 5 need only 7 calls. Add a fallback chain across Gemini models (flash-lite, flash, 2.5-flash) so requests retry on 429 quota errors.

What should I use when requests and BeautifulSoup return empty pages?

Empty responses usually mean the site renders content with JavaScript. Use Playwright to launch a headless Chromium browser, wait for the target selector, and extract the rendered HTML, or look for the site's underlying JSON API instead.

Can I store scraped data in Google Sheets or Supabase instead of Notion?

Yes, the architecture supports Notion, Google Sheets, Supabase, or SQLite via a storage.provider setting in config.yaml. Swap the notion_sync module for a sheets or supabase sync module and update the corresponding environment variables.

Why does my Gemini API response fail to parse as JSON?

Parsing fails when maxOutputTokens is too low and truncates the JSON response, or when the model wraps output in markdown code fences. Set maxOutputTokens to at least 2048 for batch responses and strip leading code fences before calling json.loads.

How do I avoid duplicate entries when syncing scraped data to Notion?

Query the Notion database for all existing URLs before pushing new items, then skip any item whose URL is already stored. Maintain the seen set during the sync loop so duplicates within the same batch are also filtered.