DEV Community

Breno Alvim
Breno Alvim

Posted on

Unblock: a Claude Code skill that keeps trying when a web lookup fails

A web search fails. You retry it. It fails again, same way. That loop wastes turns and gets nothing done, so I built a skill that skips the retry and moves on instead.

Unblock is a Claude Code skill for exactly that moment: a search, scrape, or crawl gets blocked, rate limited, hit with a CAPTCHA, or just returns nothing. Instead of trying the same tool again, it moves to the next one in a fixed order, through 13 free tools, until one gets through.

The order matters

The chain runs most general and robust first, then narrows:

  1. agent-reach — multi-platform router (Xiaohongshu, X, Bilibili, Reddit, GitHub, YouTube, LinkedIn, RSS, general web)
  2. last30days — recent discussion from Reddit, X, YouTube, TikTok, HN, GitHub
  3. crawler — Jina Reader, then Scrapling stealth browser, turns a URL into clean markdown
  4. web-scraping — checks the site first, then picks traffic interception, sitemap, API, or DOM scraping
  5. web-scraping-automation — Playwright/requests plus generic REST and GraphQL calls
  6. playwright-web-scraper — multi-page structured extraction, rate-limited, respects robots.txt
  7. web-scraper — multi-strategy extractor for tables, lists, prices, contacts
  8. site-crawler — straightforward multi-page crawl
  9. scraping-skills — bundle of academic and ethical scraping techniques
  10. scrapy-web-scraping — Scrapy framework for large multi-page crawls
  11. news-extractor — extraction tuned for news and articles across 12 sites
  12. Scrapling (Python library, last resort) — write and run a short stealth-fetch script
  13. claude-in-chrome — live browser automation for sites needing login, interaction, or real rendering

A block or an empty result sends it to the next tool. It never retries the same one twice. When the chain finishes, it reports which tool worked, or that all 13 failed.

What's left out, on purpose

Anything that needs an API key, a paid tier, or an account: firecrawl-scrape, x402-based tools, proxy-vendor skills. The whole chain stays free, no signup anywhere in it.

When to skip it

A plain factual question that a normal web search already answers doesn't need this. Save it for sites that fight back: paywalls, bot walls, JS-heavy pages, social platforms.

Try it

No install:

"Read https://github.com/obrenoalvim/unblock and follow the Unblock skill."

As a plugin, available in every session:

/plugin marketplace add obrenoalvim/unblock
/plugin install unblock@unblock
Enter fullscreen mode Exit fullscreen mode

Then ask for it, or let it trigger on its own next time a search, scrape, or crawl blocks.

Each tool in the chain needs its own install to run that step. Skip an install and the chain moves past it.

Repo: https://github.com/obrenoalvim/unblock (MIT)

What's the web lookup that blocks you most often?

Ps: I'm building BloodLink, a free platform connecting blood donors to donation campaigns.

Top comments (1)

Collapse
 
skillselion profile image
Skillselion

Two things I would want before running this unattended.

First, "Each tool in the chain needs its own install to run that step. Skip an install and the chain moves past it" means the effective chain length is the number installed, not 13. On a fresh machine with three of them present, the final report reads as though 13 tools failed while ten steps were never attempted. Reporting tried and skipped separately would fix that, otherwise the chain's own diagnostics mislead you in exactly the case you built it for.

Second, the chain treats blocked and genuinely empty the same way. A URL with no content will burn every installed step and then report a wall that does not exist. A cheap discriminator up front, HTTP status plus body length before any stealth fetch, saves the whole walk on what I would guess is the most common case.

The ordering rationale is the part I would keep as is. Most general and robust first, then narrowing, is the right axis, because a chain sorted by capability spends its early attempts on tools that were never going to apply.

Routing is the load bearing part here, so one number from someone else's measurement this week: a census of Claude Code artefacts on GitHub, "Claude Code subagents fail 2.8x more often than skills", found 21.9% of subagent files fail to register at all against 7.9% for skills, because the subagent reference marks name and description required while the skills reference makes both optional. Broken frontmatter is the single biggest cause across all kinds at 38,183 files; the missing-description bucket alone is 1,799. dev.to/kyisaiah47/claude-code-suba...

You already report which tool won on a given run. Persisting that per domain across runs is the bit that would let the chain reorder itself, and after a few weeks that is a real signal rather than a guess.