Skip to content
Research
Skill

/url

Fetch and extract text from web URLs

BOOST
From plugin
synthadoc
1.6k10 skills1 hook
Install
$ npx -y skills add axoviq-ai/synthadoc --skill url --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/url

Context preview

The summary Claude sees to decide when to auto-load this skill.

Fetch and extract text from web URLs

SKILL.md

url.SKILL.md
name: url
version: "1.0"
description: Fetch and extract text from web URLs
entry:
  script: scripts/main.py
  class: UrlSkill
triggers:
  extensions:
    - "https://"
    - "http://"
  intents:
    - "fetch url"
    - "web page"
    - "website"
requires:
  - httpx
  - beautifulsoup4
author: axoviq.com
license: AGPL-3.0-or-later

URL Skill

Fetches a web URL using `httpx`, strips navigation/script/style tags with `BeautifulSoup`, and returns clean body text. PDF URLs are extracted with `pypdf` (primary) and `pdfminer.six` (fallback).

Setup

pip install httpx beautifulsoup4

# Optional — needed only if you ingest PDF URLs:
pip install pypdf pdfminer.six

Standalone usage

import asyncio
from synthadoc.skills.url.scripts.main import UrlSkill

skill = UrlSkill()

async def main():
    result = await skill.extract("https://example.com/article")
    print(result.text)          # clean body text
    print(result.metadata)      # {"url": "https://..."}

asyncio.run(main())

`DomainBlockedException` is raised when the site returns HTTP 401, 403, or 429. Catch it to log and skip the domain:

from synthadoc.skills.base import DomainBlockedException

try:
    result = await skill.extract(url)
except DomainBlockedException as e:
    print(f"Blocked: {e.domain} (HTTP {e.status_code})")

When this skill is used

  • Source starts with `https://` or `http://`
  • User intent contains: `fetch url`, `web page`, `website`
Read more
Ships withsynthadoc

Document version: v1.4.2 Engineered for solo users and enterprises alike, providing a domain-specific knowledge base that scales seamlessly while maintaining accuracy through autonomous self-optimization.

Get the whole plugin
Stats
1,590
Stars
159
Forks
Active
Maintenance
Python
Language
AGPL-3.0
License
20h ago
Last commit
6mo ago
Created
5h ago
Added

Repo: axoviq-ai/synthadoc

Other skills on synthadoc.