Felo Web Extract

v1.0.0

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

0· 387·4 current·4 all-time
bywangzhiming@wangzhiming1999

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for wangzhiming1999/felo-web-extract.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Felo Web Extract" (wangzhiming1999/felo-web-extract) from ClawHub.
Skill page: https://clawhub.ai/wangzhiming1999/felo-web-extract
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Canonical install target

openclaw skills install wangzhiming1999/felo-web-extract

ClawHub CLI

Package manager switcher

npx clawhub@latest install felo-web-extract
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
Name, description, README, SKILL.md, and the included Node script all consistently implement a web-extraction client for the Felo API. However the skill's registry metadata claims 'Required env vars: none' while the runtime explicitly requires FELO_API_KEY (and optionally FELO_API_BASE). That metadata omission is an incoherence.
Instruction Scope
Runtime instructions and the script only perform an HTTP POST to the Felo API, accept user-supplied URL and selector options, and print returned content. The skill does not read arbitrary local files, other credentials, or call unexpected external endpoints beyond the documented openapi.felo.ai endpoint (FELO_API_BASE override is documented).
Install Mechanism
There is no install spec (instruction-only style) and the included script is plain JavaScript (no obfuscation). No downloads from untrusted URLs or archive extraction are present. The script will run locally if executed, but nothing in the repository attempts to install additional packages automatically.
!
Credentials
The runtime requires an API key (FELO_API_KEY) to authenticate with the Felo service, which is proportionate to the skill's purpose. The concern is that this required credential is not declared in the registry metadata (manifest lists 'none'), creating a mismatch: users or systems that rely on the manifest might not realize an API key is necessary or might supply it incorrectly. No other unrelated secrets are requested.
Persistence & Privilege
The skill is not set to 'always' and does not request persistent system-wide privileges. It does not modify other skills or system configs. Autonomous invocation is allowed by default (platform normal) but not combined with other privilege escalations.
What to consider before installing
This skill appears to do what it says (POST to openapi.felo.ai to extract page content), but the manifest failed to declare the required FELO_API_KEY. Before installing or running: (1) confirm you are comfortable supplying your Felo API key (ensure the key's scope/permissions are appropriate); (2) verify the provider (openapi.felo.ai / felo.ai) and that the key will only be sent to that endpoint; (3) be aware the included Node script will make network requests using whatever FELO_API_KEY is present in the environment — avoid exposing broader credentials; (4) because the skill source/homepage is listed as unknown, prefer obtaining the tool directly from a trusted Felo release or the vendor if available. If you need higher assurance, request that the skill manifest be updated to declare FELO_API_KEY explicitly and provide publisher/homepage provenance.

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

latestvk97bvcsje3mxnvjrw44xykrvtd82czs0
387downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

Felo Web Extract Skill

When to Use

Trigger this skill when the user wants to:

  • Extract 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):

  • extract webpage, scrape URL, fetch page content, web extract, url to markdown
  • Explicit: /felo-web-extract, "use felo web extract"
  • 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-extract/scripts/run_web_extract.mjs --url "https://example.com/article" [options]

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

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

Options:

OptionDefaultDescription
--url(required)Webpage URL to extract
--formatmarkdownOutput format: html, text, markdown
--target-selector-CSS selector: extract only this element (e.g. article.main, #content)
--wait-for-selector-Wait for this selector before extracting (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: "Extract 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" / "Extract 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
"Extract this page as plain text"--url "..." --format text
"Get only the main content area"--url "..." --target-selector "main" or article
"Extract 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: extract as Markdown
node felo-web-extract/scripts/run_web_extract.mjs --url "https://example.com"

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

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

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

# Specific output format + target selector
node felo-web-extract/scripts/run_web_extract.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 extract
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 extract
timeoutintegerNo-Timeout in milliseconds
with_cachebooleanNotrueUse cache

Response

Success (200):

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

Extracted 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_FAILEDExtract failed (server or page error)

Output Format

On success (script without --json):

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

With --json:

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

Error response to user:

## Web Extract 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...