Research
Skill
/url
Fetch and extract text from web URLs
Install
$ npx -y skills add axoviq-ai/synthadoc --skill url --agent claude-codeHow 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.mdname: 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-laterURL 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
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-laterURL 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`
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

