free-web-stack

Configures free web search and SPA rendering using ddgs, Playwright, and a local MCP server.

Updated Aug 21, 2026
One-click install
npx skills add https://github.com/TylerSimons1127/vibe --skill free-web-stack-tylersimons1127
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: free-web-stack
Source: https://github.com/TylerSimons1127/vibe/tree/main/skills/devops/free-web-stack
Command: npx skills add https://github.com/TylerSimons1127/vibe --skill free-web-stack-tylersimons1127

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires ddgs, playwright, mcp, trafilatura.

What problem does it solve? Firecrawl-backed web extraction stops working when paid credits run out, and JavaScript single-page applications (React/Vue/Next) return only an empty HTML shell to static fetchers like curl or trafilatura. This Skill restores free web search and extraction by wiring up local tools already installed in the Hermes environment. ## Core Features & Use Cases - Local SPA Extractor (webget.py): Renders URLs with Playwright/chromium in the Hermes venv and returns title plus body text, falling back to trafilatura for static pages. - Local MCP Server (fetch_mcp_server.py): Exposes two tools, fetch_url for rendering SPAs and search_ddgs for free DuckDuckGo search, registered via hermes mcp add. - Use Case: A React-based site like a GitHub Pages app returns ~500 bytes of shell HTML via trafilatura. Run webget.py with the Hermes venv Python to get the fully rendered page text without any paid API credits. ## Quick Start Ask the agent to extract the content of a JavaScript-heavy URL using the local webget.py script with the Hermes venv Python and verify the rendered text output.

Frequently Asked Questions about free-web-stack

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

FAQPage Schema
How do I extract content from JavaScript SPA pages for free?▼

Use a rendering engine like Playwright with chromium instead of static fetchers. SPAs built with React, Vue, or Next return only a small HTML shell to curl or trafilatura, so the page must be rendered in a browser to extract real text content.

What free alternatives exist when Firecrawl credits run out?▼

Combine ddgs for free DuckDuckGo search with a local Playwright-based extractor for page rendering. You can also register a local MCP server exposing fetch_url and search_ddgs tools, or get free Brave Search and Jina API keys for additional coverage.

Why does trafilatura return empty content for React or Next.js sites?▼

Trafilatura only parses static HTML, and JavaScript SPAs serve a roughly 500-byte shell that renders content client-side. Only a browser rendering engine like Playwright with chromium can execute the JavaScript and extract the actual page text.

How do I register a local MCP server with Hermes Agent?▼

Run hermes mcp add with the venv Python command and the server script path as args, using native OS paths rather than MSYS $HOME paths. Then enable it with hermes config set and restart Hermes, since MCP servers are discovered only at startup.

Why does hermes config set fail when passing MCP server args?▼

The config set command stores args as a string, which triggers a pydantic list_type validation error. Always register MCP servers through hermes mcp add so the args value is stored as a proper list.