Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add medy-gribkov/arcana --skill scraping-automationgit clone --depth 1 https://github.com/medy-gribkov/arcanaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/medy-gribkov/arcana/scraping-automation)<a href="https://agentmods.dev/skills/medy-gribkov/arcana/scraping-automation"><img src="https://agentmods.dev/badge/skills/medy-gribkov/arcana/scraping-automation/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/medy-gribkov/arcana/scraping-automation"><img src="https://agentmods.dev/badge/skills/medy-gribkov/arcana/scraping-automation.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00029 | $0.01840 |
| Opus 5 | $0.00015 | $0.00920 |
| Sonnet 5 | $0.00006 | $0.00368 |
| Haiku 4.5 | $0.00003 | $0.00184 |
Grade A, and why
scraping-automation scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 282 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Scraping Automation Skill
Build production-grade web scrapers with anti-detection, resilient extraction, and respectful crawling patterns.
Browser Context and Stealth Mode
BAD: Default browser fingerprint exposes automation.
// Detectable as bot, no stealth configuration
const browser = await playwright.chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
GOOD: Stealth mode with randomized fingerprints.
import { chromium } from 'playwright-extra';
import stealth from 'puppeteer-extra-plugin-stealth';
chromium.use(stealth());
const browser = await chromium.launch({
headless: true,
args: [
'--disable-blink-features=AutomationControlled',
'--disable-dev-shm-usage',
'--no-sandbox'
]
});
const context = await browser.newContext({
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
viewport: { width: 1920, height: 1080 },
locale: 'en-US',
timezoneId: 'America/New_York',
permissions: ['geolocation'],
geolocation: { latitude: 40.7128, longitude: -74.0060 },
colorScheme: 'light'
});
const page = await context.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle' });
Proxy Rotation and IP Management
BAD: Single IP for high-volume scraping triggers rate limits.
# No proxy rotation, easy to block
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
for url in urls:
await page.goto(url) # Same IP for all requests
GOOD: Rotating proxies with session management.
import random
from playwright.async_api import async_playwright
proxies = [
{'server': 'http://proxy1.example.com:8080', 'username': 'user1', 'password': 'pass1'},
{'server': 'http://proxy2.example.com:8080', 'username': 'user2', 'password': 'pass2'},
{'server': 'http://proxy3.example.com:8080', 'username': 'user3', 'password': 'pass3'}
]
async def scrape_with_rotation(urls):
async with async_playwright() as p:
for url in urls:
proxy = random.choice(proxies)
browser = await p.chromium.launch(proxy=proxy)
context = await browser.new_context(
user_agent=random.choice(USER_AGENTS),
viewport={'width': random.randint(1366, 1920), 'height': random.randint(768, 1080)}
)
page = await context.new_page()
try:
await page.goto(url, timeout=30000)
data = await extract_data(page)
yield data
finally:
await browser.close()
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 282 lines · 29 tokens per session scan A 83b13b1f20bb
scraping-automation is a skill published in the GitHub repository medy-gribkov/arcana (1 stars, last pushed 2mo ago), licensed Apache-2.0. It adds 29 tokens to every session and 1,840 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
webapp-testing
Write and run comprehensive web app tests — unit, integration, E2E with Playwright/Cypress, and visual regression.
stealth-browser-mcp
Use this skill when operating stealth-browser-mcp from an AI agent or MCP client for browser automation, page inspection, element interaction, screenshots, file uploads, CDP commands, network debugging, cookies/storage, stealth setup, or reliable multi-step browser workflows. It provides the correct tool order, state…
gemini-deep-research
Run Gemini Deep Research via browser automation. Persistent Chrome on CDP port 9222. Use when user asks to research a topic with.
agent-reach
A set of tools that lets an AI agent search and read information from websites, social networks, developer platforms, career sites, videos, podcasts, and RSS feeds.
manage-apps-and-sounds-headless
Control the pushover.net web dashboard headlessly for things the HTTP API cannot do - log in, list applications, CREATE or DELETE Pushover applications (returning the new app's API token), and ADD or REMOVE custom notification sounds (with a sourcing+loudness pipeline for free MP3 jingles). Drives system Google Chrome…
html-craft
Create and verify single-file interactive HTML pages in the sandbox: build or edit the file, then prove the result with headless-Chromium screenshots, in-page DOM/geometry assertions, and JS-error capture (Playwright). No GPU, no service, no network. Use when the user wants an HTML page, animation, demo, dashboard, or…