$npx -y skills add MoizIbnYousaf/marketing-cli --skill firecrawlWeb scraping, search, crawling, and browser automation via the Firecrawl CLI. Use this skill whenever the user wants to search the web, find articles, research a topic, look something up online, scrape a webpage, grab content from a URL, extract data from a website, crawl documen
| 1 | # Firecrawl CLI |
| 2 | |
| 3 | Web scraping, search, and browser automation CLI. Returns clean markdown optimized for LLM context windows. |
| 4 | |
| 5 | Run `firecrawl --help` or `firecrawl <command> --help` for full option details. |
| 6 | |
| 7 | ## Prerequisites |
| 8 | |
| 9 | Must be installed and authenticated. Check with `firecrawl --status`. |
| 10 | |
| 11 | ``` |
| 12 | 🔥 firecrawl cli v1.8.0 |
| 13 | |
| 14 | ● Authenticated via FIRECRAWL_API_KEY |
| 15 | Concurrency: 0/100 jobs (parallel scrape limit) |
| 16 | Credits: 500,000 remaining |
| 17 | ``` |
| 18 | |
| 19 | - **Concurrency**: Max parallel jobs. Run parallel operations up to this limit. |
| 20 | - **Credits**: Remaining API credits. Each scrape/crawl consumes credits. |
| 21 | |
| 22 | If not ready, see [rules/install.md](rules/install.md). For output handling guidelines, see [rules/security.md](rules/security.md). |
| 23 | |
| 24 | ```bash |
| 25 | firecrawl search "query" --scrape --limit 3 |
| 26 | ``` |
| 27 | |
| 28 | ## Workflow |
| 29 | |
| 30 | Follow this escalation pattern: |
| 31 | |
| 32 | 1. **Search** - No specific URL yet. Find pages, answer questions, discover sources. |
| 33 | 2. **Scrape** - Have a URL. Extract its content directly. |
| 34 | 3. **Map + Scrape** - Large site or need a specific subpage. Use `map --search` to find the right URL, then scrape it. |
| 35 | 4. **Crawl** - Need bulk content from an entire site section (e.g., all /docs/). |
| 36 | 5. **Browser** - Scrape failed because content is behind interaction (pagination, modals, form submissions, multi-step navigation). |
| 37 | |
| 38 | | Need | Command | When | |
| 39 | | --------------------------- | ---------- | --------------------------------------------------------- | |
| 40 | | Find pages on a topic | `search` | No specific URL yet | |
| 41 | | Get a page's content | `scrape` | Have a URL, page is static or JS-rendered | |
| 42 | | Find URLs within a site | `map` | Need to locate a specific subpage | |
| 43 | | Bulk extract a site section | `crawl` | Need many pages (e.g., all /docs/) | |
| 44 | | AI-powered data extraction | `agent` | Need structured data from complex sites | |
| 45 | | Interact with a page | `browser` | Content requires clicks, form fills, pagination, or login | |
| 46 | | Download a site to files | `download` | Save an entire site as local files | |
| 47 | |
| 48 | For detailed command reference, use the individual skill for each command (e.g., `firecrawl-search`, `firecrawl-browser`) or run `firecrawl <command> --help`. |
| 49 | |
| 50 | **Scrape vs browser:** |
| 51 | |
| 52 | - Use `scrape` first. It handles static pages and JS-rendered SPAs. |
| 53 | - Use `browser` when you need to interact with a page, such as clicking buttons, filling out forms, navigating through a complex site, infinite scroll, or when scrape fails to grab all the content you need. |
| 54 | - Never use browser for web searches - use `search` instead. |
| 55 | |
| 56 | **Avoid redundant fetches:** |
| 57 | |
| 58 | - `search --scrape` already fetches full page content. Don't re-scrape those URLs. |
| 59 | - Check `.firecrawl/` for existing data before fetching again. |
| 60 | |
| 61 | ## When NOT to use firecrawl |
| 62 | |
| 63 | Firecrawl is the default for *public, text-based web content*. Route elsewhere when the source is auth-walled, audio/video, or when you already have the text and just need it shorter: |
| 64 | |
| 65 | | Situation | Use instead | Why | |
| 66 | | --- | --- | --- | |
| 67 | | X / Twitter post, thread, article, or `/bookmarks` | `mktg-x` skill | Twitter serves a degraded logged-out page to unauthenticated clients. `mktg-x` uses stored `MKTG_X_AUTH_TOKEN` to fetch the real content. Firecrawl will return a stub. | |
| 68 | | YouTube / podcast / TikTok / any audio or video URL | `mktg transcribe <url>` | Firecrawl returns the page chrome (title, description), not the spoken content. `mktg transcribe` runs the yt-dlp → ffmpeg → whisper.cpp pipeline and returns the full transcript. | |
| 69 | | Fetched page is too long to ideate on | Chain into `summarize` after the firecrawl call | Firecrawl is the *fetcher*, summarize is the *compressor*. `firecrawl scrape <url> -o page.md && cat page.md \| summarize --tldr` is the canonical pattern — don't re-fetch or ask firecrawl to summarize. | |
| 70 | |
| 71 | Escalation rule of thumb: *if a human would need to log in, press play, or skim-and-condense to get value fr |