Felo Web Fetch

v1.0.1

Fetch web page content from a URL using Felo Web Extract API. Use when users ask to scrape/capture/fetch webpage content, get article text from URL, convert...

0· 541·5 current·5 all-time
bywangzhiming@wangzhiming1999
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
high confidence
!
Purpose & Capability
Name/description match the implementation: the script posts a URL to Felo's /v2/web/extract endpoint and returns the returned content. However, the registry metadata lists no required environment variables while the runtime script and SKILL.md clearly require FELO_API_KEY (and optionally FELO_API_BASE). The omission in metadata is a coherence issue.
Instruction Scope
SKILL.md and the script instruct the agent to call the remote Felo API with the provided URL and options. The instructions do not ask the agent to read unrelated files, system credentials, or other services. They do, however, advise installing a packaged CLI (felo-ai) that is not included here — a mild documentation inconsistency. Sending arbitrary URLs/content to an external API is expected for this skill but is a privacy consideration.
Install Mechanism
There is no install spec (instruction-only with a bundled Node script). The single script is readable and small; no downloads, archives, or opaque installers are used by the skill itself. This is low install risk.
!
Credentials
The code requires FELO_API_KEY (and optionally FELO_API_BASE) to function — a single API key is proportional to the skill's purpose. The problem is the registry declares no required env vars, which is inconsistent and could mislead users into not providing or checking credentials. The script does not access other secrets or system credentials.
Persistence & Privilege
The skill is not always-enabled, is user-invocable, and does not request to modify other skills or system settings. It does not persist credentials or alter global agent configuration.
What to consider before installing
This skill's code is small and does what its description says (posts URLs to Felo's web-extract API and prints the returned content). However: 1) The skill requires FELO_API_KEY (and can optionally use FELO_API_BASE) at runtime, but the registry metadata does not list these — ask the publisher to correct the declared requirements before installing. 2) Using the skill sends the target URL and its fetched content to an external service (openapi.felo.ai); avoid sending private, authenticated, or sensitive URLs/content unless you trust the Felo service and its API key scope. 3) Confirm the owner/publisher (source is 'unknown') and review the npm/binary packaging if you plan to install a 'felo-ai' CLI (the repo doesn't include a packaged installer). If you need to be cautious, run the included script locally with a limited/test API key or inspect/modify the script to log less, or prefer an alternative with explicit metadata and a known publisher.

Like a lobster shell, security has layers — review code before you run it.

latestvk97804r84z946d775y1pc9rtb182c0em
541downloads
0stars
1versions
Updated 1mo ago
v1.0.1
MIT-0

Felo Web Fetch Skill

When to Use

Trigger this skill when the user wants to:

  • Fetch or scrape content from a webpage URL
  • Get article/main text from a link
  • Convert a webpage to Markdown or plain text
  • Capture readable content from a URL for summarization or processing

Trigger keywords (examples):

  • fetch webpage, scrape URL, fetch page content, web fetch, url to markdown
  • Explicit: /felo-web-fetch, "use felo web fetch"
  • Same intent in other languages (e.g. 网页抓取, 提取网页内容) also triggers this skill

Do NOT use for:

  • Real-time search or Q&A (use felo-search)
  • Generating slides (use felo-slides)
  • Local file content (read files directly)

Setup

1. Get API key

  1. Visit felo.ai
  2. Open Settings -> API Keys
  3. Create and copy your API key

2. Configure environment variable

Linux/macOS:

export FELO_API_KEY="your-api-key-here"

Windows PowerShell:

$env:FELO_API_KEY="your-api-key-here"

How to Execute

Option A: Use the bundled script or packaged CLI

Script (from repo):

node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com/article" [options]

Packaged CLI (after npm install -g felo-ai): same options, with short forms allowed:

felo web-fetch -u "https://example.com" [options]
# Short forms: -u (url), -f (format), -t (timeout, seconds), -j (json)

Options:

OptionDefaultDescription
--url(required)Webpage URL to fetch
--formatmarkdownOutput format: html, text, markdown
--target-selector-CSS selector: fetch only this element (e.g. article.main, #content)
--wait-for-selector-Wait for this selector before fetching (e.g. dynamic content)
--readabilityfalseEnable readability processing (main content only)
--crawl-modefastfast or fine
--timeout60000 (script) / 60 (CLI)Request timeout: script uses milliseconds, CLI uses seconds (e.g. -t 90)
--json / -jfalsePrint full API response as JSON

How to write instructions (target_selector + output_format)

When the user wants a specific part of the page or a specific output format, phrase the command like this:

  • Output format: "Fetch as text" / "Get markdown" / "Return html" → use --format text, --format markdown, or --format html.
  • Target one element: "Only the main article" / "Just the content inside #main" / "Fetch only article.main-content" → use --target-selector "article.main" or the selector they give (e.g. #main, .main-content, article .post).

Examples of user intents and equivalent commands:

User intentCommand
"Fetch this page as plain text"--url "..." --format text
"Get only the main content area"--url "..." --target-selector "main" or article
"Fetch the div with id=content as markdown"--url "..." --target-selector "#content" --format markdown
"Just the article body, as HTML"--url "..." --target-selector "article .body" --format html

Examples:

# Basic: fetch as Markdown
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com"

# Article-style with readability
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com/article" --readability --format markdown

# Raw HTML
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --format html --json

# Only the element matching a CSS selector (e.g. main article)
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --target-selector "article.main" --format markdown

# Specific output format + target selector
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --target-selector "#content" --format text

Option B: Call API with curl

curl -X POST "https://openapi.felo.ai/v2/web/extract" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "output_format": "markdown", "with_readability": true}'

API Reference (summary)

  • Endpoint: POST /v2/web/extract
  • Base URL: https://openapi.felo.ai. Override with FELO_API_BASE env if needed.
  • Auth: Authorization: Bearer YOUR_API_KEY

Request body (JSON)

ParameterTypeRequiredDefaultDescription
urlstringYes-Webpage URL to fetch
crawl_modestringNofastfast or fine
output_formatstringNohtmlhtml, text, markdown
with_readabilitybooleanNo-Use readability (main content)
with_links_summarybooleanNo-Include links summary
with_images_summarybooleanNo-Include images summary
target_selectorstringNo-CSS selector for target element
wait_for_selectorstringNo-Wait for selector before fetch
timeoutintegerNo-Timeout in milliseconds
with_cachebooleanNotrueUse cache

Response

Success (200):

{
  "code": 0,
  "message": "success",
  "data": {
    "content": { ... }
  }
}

Fetched content is in data.content; structure depends on output_format.

Error codes

HTTPCodeDescription
400-Parameter validation failed
401INVALID_API_KEYAPI key invalid or revoked
500/502WEB_EXTRACT_FAILEDFetch failed (server or page error)

Output Format

On success (script without --json):

  • Print the fetched content only (for direct use or piping).

With --json:

  • Print full API response including code, message, data.

Error response to user:

## Web Fetch Failed

- Error: <code or message>
- URL: <requested url>
- Suggestion: <e.g. check URL, retry, or use --timeout>

Important Notes

  • Always check FELO_API_KEY before calling; if missing, return setup instructions.
  • For long articles or slow sites, consider --timeout or timeout in request body.
  • Use output_format: "markdown" and with_readability: true for clean article text.
  • API may cache results; use with_cache: false in body only when fresh content is required (script does not expose this by default).

References

Comments

Loading comments...