{"id":51368040,"url":"https://github.com/epicsagas/obscura-plugin","last_synced_at":"2026-07-03T03:04:40.024Z","repository":{"id":358789731,"uuid":"1238447194","full_name":"epicsagas/obscura-plugin","owner":"epicsagas","description":"MCP server for Obscura headless browser — CLI wrapper for AI agent integration with web scraping, JavaScript rendering, and browser automation","archived":false,"fork":false,"pushed_at":"2026-05-19T05:51:18.000Z","size":94,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T05:57:45.963Z","etag":null,"topics":["ai-agent","browser-automation","cli","headless-browser","mcp","mcp-server","rust","web-scraping"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/epicsagas.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-14T06:07:32.000Z","updated_at":"2026-05-19T05:51:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/epicsagas/obscura-plugin","commit_stats":null,"previous_names":["epicsagas/obscura-plugin"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/epicsagas/obscura-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicsagas%2Fobscura-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicsagas%2Fobscura-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicsagas%2Fobscura-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicsagas%2Fobscura-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epicsagas","download_url":"https://codeload.github.com/epicsagas/obscura-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicsagas%2Fobscura-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35070343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-03T02:00:05.635Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","browser-automation","cli","headless-browser","mcp","mcp-server","rust","web-scraping"],"created_at":"2026-07-03T03:04:39.335Z","updated_at":"2026-07-03T03:04:40.016Z","avatar_url":"https://github.com/epicsagas.png","language":"Rust","funding_links":["https://buymeacoffee.com/epicsaga"],"categories":[],"sub_categories":[],"readme":"# obscura-plugin\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/epicsagas/obscura-plugin/stargazers\"\u003e\u003cimg alt=\"Stars\" src=\"https://img.shields.io/github/stars/epicsagas/obscura-plugin?style=for-the-badge\u0026labelColor=0d1117\u0026color=ffd700\u0026logo=github\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/epicsagas/obscura-plugin/network/members\"\u003e\u003cimg alt=\"Forks\" src=\"https://img.shields.io/github/forks/epicsagas/obscura-plugin?style=for-the-badge\u0026labelColor=0d1117\u0026color=2ecc71\u0026logo=github\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/epicsagas/obscura-plugin/issues\"\u003e\u003cimg alt=\"Issues\" src=\"https://img.shields.io/github/issues/epicsagas/obscura-plugin?style=for-the-badge\u0026labelColor=0d1117\u0026color=ff6b6b\u0026logo=github\u0026logoColor=white\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/epicsagas/obscura-plugin/commits/main\"\u003e\u003cimg alt=\"Last commit\" src=\"https://img.shields.io/github/last-commit/epicsagas/obscura-plugin?style=for-the-badge\u0026labelColor=0d1117\u0026color=58a6ff\u0026logo=git\u0026logoColor=white\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-Apache--2.0-3fb950?style=for-the-badge\u0026labelColor=0d1117\" /\u003e\u003c/a\u003e\n  \u003cimg alt=\"Rust\" src=\"https://img.shields.io/badge/rust-d73a49?style=for-the-badge\u0026labelColor=0d1117\u0026logo=rust\u0026logoColor=white\" /\u003e\n  \u003ca href=\"https://buymeacoffee.com/epicsaga\"\u003e\u003cimg alt=\"Buy Me a Coffee\" src=\"https://img.shields.io/badge/buy_me_a_coffee-FFDD00?style=for-the-badge\u0026labelColor=0d1117\u0026logo=buymeacoffee\u0026logoColor=black\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nSkill-driven plugin for [Obscura](https://github.com/h4ckf0r0day/obscura) headless browser — gives AI coding agents direct access to web scraping and browser automation via slash commands.\n\n\u003e **Two approaches in Obscura:**\n\u003e - `obscura-plugin` (this plugin) — skill-driven with read-only commands (`obscura_fetch`, `obscura_scrape`, etc.), designed for autonomous agent pipelines\n\n## Install\n\n### Claude Code (zero-touch)\n\n`obscura-plugin` ships a `.claude-plugin/` manifest. Register the marketplace source once, then install:\n\n```bash\nclaude plugin marketplace add epicsagas/plugins\nclaude plugin install obscura-plugin\n```\n\nThe `SessionStart` hook downloads `obscura` and `obscura-worker` automatically on first load. No manual steps needed.\n\n### Codex CLI\n\n```bash\ncodex plugin marketplace add epicsagas/plugins\ncodex plugin install obscura-plugin\n```\n\nSkills and agents are available immediately — no further steps needed.\n\n### Antigravity\n\n```bash\nagy plugin install https://github.com/epicsagas/obscura-plugin\n```\n\n---\n\n\u003e `obscura-plugin install` automatically downloads the `obscura` and `obscura-worker` binaries from [Obscura releases](https://github.com/h4ckf0r0day/obscura/releases). Linux requires glibc 2.35+ (Ubuntu 22.04+).\n\n### macOS / Linux\n\n```bash\n# pre-built binary, no Rust required\ncurl --proto '=https' --tlsv1.2 -LsSf \\\n  https://github.com/epicsagas/obscura-plugin/releases/latest/download/obscura-plugin-installer.sh | sh\n```\n\n### Windows\n\n```powershell\n# pre-built binary, no Rust required\nirm https://github.com/epicsagas/obscura-plugin/releases/latest/download/obscura-plugin-installer.ps1 | iex\n```\n\n### Homebrew (macOS / Linux)\n\n```bash\nbrew install epicsagas/tap/obscura-plugin\n```\n\n### Via Rust toolchain\n\n```bash\n# pre-built binary via Rust toolchain (fast)\ncargo binstall obscura-plugin\n\n# build from source (requires Rust toolchain)\ncargo install obscura-plugin\n```\n\n\u003e `obscura-plugin --version` to verify. Update with `brew upgrade obscura-plugin` or re-run the installer script.\n\n### Register with your AI tools\n\nAfter installing the binary, run `obscura-plugin install` to connect it to your tools:\n\n```bash\nobscura-plugin install              # interactive — pick which tools\nobscura-plugin install cursor       # Cursor\nobscura-plugin install opencode     # OpenCode\nobscura-plugin install cline        # Cline\nobscura-plugin install all          # all at once\n```\n\n```bash\nobscura-plugin uninstall cursor     # remove from a specific tool\nobscura-plugin list                 # show supported tools and status\n```\n\n### What gets installed\n\n| Tool | Skills | Method |\n|------|--------|--------|\n| Claude Code | plugin auto-discovers | `.claude-plugin/` manifest |\n| Codex CLI | plugin auto-discovers | `.codex-plugin/` manifest |\n| Antigravity | plugin auto-discovers | root `plugin.json` |\n| Cursor | `~/.cursor/rules/` | `obscura-plugin install` |\n| OpenCode | `~/.opencode/skills/` | `obscura-plugin install` |\n| Cline | `~/.cline/skills/` | `obscura-plugin install` |\n\n## Skills\n\nRegistered skills are available as slash commands inside your agent:\n\n```\n/obscura-fetch \u003curl\u003e [--dump html|text|links|markdown] [--eval \u003cjs\u003e] [--selector \u003ccss\u003e] [--stealth]\n/obscura-scrape \u003curl1\u003e \u003curl2\u003e ... [--eval \u003cjs\u003e] [--concurrency \u003cN\u003e] [--format json|text]\n/obscura-pipeline \u003cindex-url\u003e   # discover links → scrape in one pipeline\n/obscura-crawl \u003cseed-url\u003e       # recursive crawl with depth control, pagination, sitemap discovery\n```\n\n### Skill parameters\n\n**`obscura-fetch`**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `url` | string | URL to fetch *(required)* |\n| `dump` | string | `html` · `text` · `links` · `markdown` (default: `html`) |\n| `eval` | string | JavaScript expression to evaluate |\n| `wait_until` | string | `load` · `domcontentloaded` · `networkidle0` (default: `load`) |\n| `selector` | string | CSS selector to wait for before returning |\n| `stealth` | boolean | Enable anti-detection + tracker blocking¹ |\n| `user_agent` | string | Custom User-Agent string |\n| `quiet` | boolean | Suppress banner (default: `true`) |\n\n**`obscura-scrape`**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `urls` | string[] | URLs to scrape *(required)* |\n| `eval` | string | JavaScript expression applied to each page |\n| `concurrency` | number | Parallel workers (default: `10`) |\n| `format` | string | `json` · `text` (default: `json`) |\n| `proxy` | string | HTTP/SOCKS5 proxy URL for all workers |\n\n**`obscura-pipeline`**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `url` | string | Index page URL *(required)* |\n| `selector` | string | CSS selector for link extraction |\n| `concurrency` | number | Parallel workers for scraping |\n| `stealth` | boolean | Anti-detection mode¹ |\n\n\u003e ¹ **Stealth mode** requires Obscura built with `--features stealth`. The default release binary includes stealth.\n\n**`obscura-crawl`**\n\n| Parameter | Type | Description |\n|-----------|------|-------------|\n| `url` | string | Seed URL to start crawling from *(required)* |\n| `max_depth` | number | Maximum crawl depth (default: `3`) |\n| `same_domain` | boolean | Only follow links on the same domain (default: `true`) |\n| `url_filter` | string | Regex/glob pattern to filter URLs by path |\n\n## The `obscura-browser` agent\n\nA self-directed web data collection specialist. Invoke it for tasks like:\n\n\u003e \"Collect all product titles and prices from these 30 URLs\"\n\u003e \"Fetch the docs at example.com/api and summarize the endpoints\"\n\u003e \"Scrape the HN front page and return structured JSON\"\n\u003e \"Crawl example.com/blog up to depth 2 and extract all post titles\"\n\nThe agent knows Obscura's limits — it stops and escalates to Playwright when login or interaction is required. Supports agentic crawling with depth control, pagination detection, sitemap discovery, and adaptive extraction.\n\n## Project structure\n\n```\nobscura-plugin/\n  skills/                        # shared skills\n    obscura-fetch/SKILL.md\n    obscura-scrape/SKILL.md\n    obscura-pipeline/SKILL.md\n    obscura-crawl/SKILL.md\n  agents/                        # shared agent (markdown)\n    obscura-browser.md\n  scripts/\n    install.js                   # binary bootstrap (SessionStart hook)\n\n  .claude-plugin/                # Claude Code plugin\n    plugin.json, hooks.json, marketplace.json\n  .codex-plugin/                 # Codex CLI plugin\n    plugin.json, hooks.json\n    agents/obscura-browser.toml  # Codex-specific TOML agent\n  plugin.json                    # Antigravity (agy) plugin marker\n  hooks.json                     # Antigravity hooks\n\n  src/                           # Rust installer (cursor, opencode, cline)\n  tests/\n  Cargo.toml\n```\n\n## Build from source\n\n```bash\ncargo build --release\n./target/release/obscura-plugin --help\n```\n\n## License\n\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepicsagas%2Fobscura-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepicsagas%2Fobscura-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepicsagas%2Fobscura-plugin/lists"}