generic

Extracts article text and metadata from web pages or enumerates article links from list pages.

1|Updated Aug 14, 2026
One-click install
npx skills add https://github.com/zhiyuan-zhang0206/Ava --skill generic-zhiyuan-zhang0206
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: generic
Source: https://github.com/zhiyuan-zhang0206/Ava/tree/main/ava_builtins/skills/web-sources/generic
Command: npx skills add https://github.com/zhiyuan-zhang0206/Ava --skill generic-zhiyuan-zhang0206

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires trafilatura, loguru, and includes references (resource) components.

What problem does it solve? Many valuable sources—official news sites, forum portals, blog index pages—offer neither a platform API nor an RSS feed, and often block bare HTTP clients or hide content behind anti-bot and JavaScript walls. This Skill provides a universal fallback adapter that fetches such pages, extracts the main article text and metadata, and enumerates article links from index pages. ## Core Features & Use Cases - Two-rung fetch ladder: Fetches pages with curl plus a real browser User-Agent and extracts main content with trafilatura; when an anti-bot or JS-render wall is detected, it escalates to Jina Reader (r.jina.ai) for server-side headless rendering. - Link enumeration with regex filtering: The enum command harvests article links from a list page, filtered by a caller-supplied --link-pattern regex matched against absolute URLs. - One-stop sync with mirror deduplication: The sync command enumerates a list page, fetches each new article, stores results in a stable per-URL mirror directory, and skips already-fetched items so re-runs are idempotent. - Use Case: Track a newspaper's digital edition that has no RSS feed—run sync with a link pattern like content_\d+\.htm to pull the latest articles into structured S1 JSON with title, author, date, and markdown body. ## Quick Start Ask the agent to fetch the article at a given URL using the generic web-sources adapter, or to sync the latest articles from a list page URL with a link pattern regex that matches its article links.

Frequently Asked Questions about generic

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

FAQPage Schema
How do I scrape articles from a website that has no RSS feed?▼

Use the sync command with the list page URL and a --link-pattern regex that matches article URLs, for example 'mod=view&aid=\d+' for a Discuz portal. The tool harvests matching links, fetches each article, and returns structured JSON with title, body, and metadata.

How do I extract the main text from a web page while removing navigation and ads?▼

Run the fetch command with the article URL. It uses trafilatura for main-content extraction, stripping boilerplate like navigation, ads, and footers, and returns the body as markdown along with title, author, date, and site metadata.

What happens when a site blocks scraping with Cloudflare or requires JavaScript?▼

The fetch ladder automatically escalates to Jina Reader (r.jina.ai), a server-side headless browser that renders past anti-bot and JS walls. Setting the JINA_API_KEY environment variable enables proxy rotation and higher rate limits for harder hosts.

Can this tool scrape pages that require a login?▼

No. Jina rendering can bypass Cloudflare challenges and JS-render walls but cannot bypass login state. Login-gated content should be handled through a logged-in browser session such as chrome MCP or a dedicated platform adapter.

Why does fetch fail with 'no article body extracted' on some pages?▼

That error means the page is a list or index page with no main article content, not an extraction failure. Use the enum command with a --link-pattern regex on that page to harvest article links instead of fetching it directly.

Does the sync command re-download articles on every run?▼

No. Each article is stored in a stable mirror directory derived from its URL, and sync skips any URL whose post.json already exists. Re-running the same list page is idempotent, and --limit caps only newly fetched articles.