[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-firecrawl-firecrawl-research-index":3,"mdc--6f42ly-key":36,"related-org-firecrawl-firecrawl-research-index":646,"related-repo-firecrawl-firecrawl-research-index":805},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":34,"mdContent":35},"firecrawl-research-index","find research papers with semantic search","Find the papers that answer a research query with Firecrawl Research, using semantic search, semantic and structural expansion, and in-body verification. Always use this skill for any literature-finding \u002F paper-retrieval task — single-paper lookups or full multi-paper sets.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"firecrawl","Firecrawl","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ffirecrawl.png",[12,16,19,20,23],{"name":13,"slug":14,"type":15},"Research","research","tag",{"name":17,"slug":18,"type":15},"Web Scraping","web-scraping",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Search","search",{"name":24,"slug":25,"type":15},"Firecrawl Research","firecrawl-research",54,"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fskills","2026-06-17T08:17:26.76664",null,15,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":29},[],"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Ffirecrawl-research-index","---\nname: firecrawl-research-index\ndescription: Find the papers that answer a research query with Firecrawl Research, using semantic search, semantic and structural expansion, and in-body verification. Always use this skill for any literature-finding \u002F paper-retrieval task — single-paper lookups or full multi-paper sets.\n---\n\n# Firecrawl Research Index\n\nFind the research papers that answer a research query. Some questions have a single answer; many have several — and when in doubt, lean toward returning the fuller relevant set (most relevant first) rather than narrowing to one. A reader is better served seeing the neighboring methods and papers than having them silently dropped.\n\nThere is **no fixed recipe**. Read the query, decide what kind it is, and choose the approach below. Some queries need a single search; others need heavy sturctural\u002Fsemantic expansion. Don't run machinery a query doesn't call for.\n\n## The tools, and what each is uniquely good at\n\n- MCP: **`firecrawl_research_search_papers(query, k?)`**\n  CLI: **`firecrawl research search-papers \u003Cquery> [--k \u003Cnumber>]`**\n  Semantic (HyDE) search over **abstracts**. The natural first move for almost any query.\n  If results look thin or all-alike, re-run with a different framing (sibling domain, rival method, dataset\u002Fbenchmark name) rather than giving up.\n\n- MCP: **`firecrawl_research_related_papers(seed_ids, intent, mode?, k?)`**\n  CLI: **`firecrawl research related-papers \u003CseedIds...> --intent \u003Cintent> [--mode \u003Csimilar|citers|references>] [--k \u003Cnumber>]`**\n  Semantic and structural expansion, ranked to your `intent`.\n  This reaches papers semantic search *cannot*, and it's how you turn one good hit into the rest of a set.\n  `mode=similar` → niche siblings; `citers` → who uses\u002Fbuilds on the seeds; `references` → what they build on \u002F compare against.\n\n- MCP: **`firecrawl_research_inspect_paper(id)`**\n  CLI: **`firecrawl research inspect-paper \u003Cid>`**\n  Canonical metadata for **one** paper: title, abstract, authors, categories, source ids, and dates.\n  Use it after `search_papers` or `related_papers` when you need the complete citation\u002Fmetadata for a candidate, or when you have an id from elsewhere and need to confirm what paper it resolves to.\n  This does **not** read the paper body; use `read_paper` for specific full-text questions.\n\n- MCP: **`firecrawl_research_read_paper(id, question)`**\n  CLI: **`firecrawl research read-paper \u003Cid> --question \u003Cquestion>`**\n  In-body passages of **one** paper, to verify a load-bearing constraint (a method actually used, a score actually reported, an affiliation, what a paper compares to).\n  Use it to settle a specific doubt, not on everything.\n\n- MCP: **`firecrawl_search(query)` \u002F `firecrawl_scrape(url)`**\n  CLI: **`firecrawl search \u003Cquery>` \u002F `firecrawl scrape \u003Curl>`**\n  General **web** search and page fetch, for facts that don't live in paper abstracts: benchmark **leaderboards**, rankings, \"who scores best \u002F is largest \u002F is most used.\"\n  Find the ranking on the web, then map the top entries back to papers with `search_papers`.\n  Reach for these only when the corpus can't answer the question on its own.\n\n## Match the approach to the query\n\n- **Single *named* paper** (\"the Qwen3 report\") → one `search_papers`, done. This is the only case that truly wants exactly one paper.\n- **Paper by description \u002F by method or technique** (\"the paper that introduced X\", \"training-free N-gram detection of AI text\") → find the best match, then assume there's a *family*: expand with `related_papers` and **include the closely-related methods\u002Fpapers too**. Even when one paper is the exact literal match, surface and keep its neighbors — don't narrow to the single best hit and reason the rest out. Only treat it as one-answer if the query names a specific paper.\n- **Enumeration \u002F method-family** (\"papers that do X\", \"alternatives to Adam\", \"benchmarks for Y\") → the answer is a *set*, and this is where `related_papers` earns its keep: expand several strong anchors with `mode=similar`, re-seed from new strong hits. One search is never enough here.\n- **Exhibiting** (\"papers that *use* \u002F exhibit property P\") → the relevant papers apply P but their abstracts may not describe it. Go from P's defining paper outward via `citers`\u002F`references`, and use `read_paper` to confirm a candidate actually uses P.\n- **Superlative \u002F leaderboard** (\"best on benchmark X\", \"largest\", \"most popular\") → the ranking lives on **leaderboards \u002F the web**, not in any single abstract. Use `firecrawl_search` \u002F `firecrawl_scrape` to find the benchmark's leaderboard or rankings, read off the top models\u002Fpapers, then `search_papers` each to get its paper. As a fallback, search the benchmark and `read_paper` candidates for reported numbers. The hardest kind — cast wide.\n- **Org \u002F author filtered** (\"from \\\u003Corg\\>\", \"by \\\u003Cauthor\\>\") → topical match isn't enough; verify the affiliation\u002Fauthorship (metadata or `read_paper`) before keeping a paper.\n- **Compare-against** (\"what does paper X benchmark against \u002F build on\") → the answer is *inside* paper X: `read_paper(X, ...)` or `related_papers([X], ..., mode=\"references\")`.\n\n## Principles\n\n- **When in doubt, include.** For any topic \u002F method \u002F comparison question, return the relevant *family*, not just the single best match — err toward keeping a plausibly-relevant paper rather than dropping it. The neighboring methods are part of a good answer; don't reason close work out just because one paper is the most exact match.\n- **Follow the literature, and keep what you find.** The seminal source, the competing methods, the close neighbors are usually a hop away — use `related_papers`, and *include* them, not just the first hit. Stopping at one good result is the most common way to leave the reader with half an answer.\n- **Verify to exclude, not to gatekeep.** Use `read_paper` to rule a paper *out* when a hard constraint clearly fails (wrong org\u002Fauthor, doesn't actually report the score). When a paper is plausibly relevant, lean toward keeping it rather than demanding proof.\n- **Only drop the clearly off-topic.** Don't pad with papers you're confident are unrelated — but that's a high bar; most plausibly-relevant work should make the cut.\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,49,55,68,75,335,341,563,569],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Firecrawl Research Index",{"type":42,"tag":50,"props":51,"children":52},"p",{},[53],{"type":47,"value":54},"Find the research papers that answer a research query. Some questions have a single answer; many have several — and when in doubt, lean toward returning the fuller relevant set (most relevant first) rather than narrowing to one. A reader is better served seeing the neighboring methods and papers than having them silently dropped.",{"type":42,"tag":50,"props":56,"children":57},{},[58,60,66],{"type":47,"value":59},"There is ",{"type":42,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":47,"value":65},"no fixed recipe",{"type":47,"value":67},". Read the query, decide what kind it is, and choose the approach below. Some queries need a single search; others need heavy sturctural\u002Fsemantic expansion. Don't run machinery a query doesn't call for.",{"type":42,"tag":69,"props":70,"children":72},"h2",{"id":71},"the-tools-and-what-each-is-uniquely-good-at",[73],{"type":47,"value":74},"The tools, and what each is uniquely good at",{"type":42,"tag":76,"props":77,"children":78},"ul",{},[79,115,180,243,274],{"type":42,"tag":80,"props":81,"children":82},"li",{},[83,85,95,97,106,108,113],{"type":47,"value":84},"MCP: ",{"type":42,"tag":61,"props":86,"children":87},{},[88],{"type":42,"tag":89,"props":90,"children":92},"code",{"className":91},[],[93],{"type":47,"value":94},"firecrawl_research_search_papers(query, k?)",{"type":47,"value":96},"\nCLI: ",{"type":42,"tag":61,"props":98,"children":99},{},[100],{"type":42,"tag":89,"props":101,"children":103},{"className":102},[],[104],{"type":47,"value":105},"firecrawl research search-papers \u003Cquery> [--k \u003Cnumber>]",{"type":47,"value":107},"\nSemantic (HyDE) search over ",{"type":42,"tag":61,"props":109,"children":110},{},[111],{"type":47,"value":112},"abstracts",{"type":47,"value":114},". The natural first move for almost any query.\nIf results look thin or all-alike, re-run with a different framing (sibling domain, rival method, dataset\u002Fbenchmark name) rather than giving up.",{"type":42,"tag":80,"props":116,"children":117},{},[118,119,128,129,138,140,146,148,154,156,162,164,170,172,178],{"type":47,"value":84},{"type":42,"tag":61,"props":120,"children":121},{},[122],{"type":42,"tag":89,"props":123,"children":125},{"className":124},[],[126],{"type":47,"value":127},"firecrawl_research_related_papers(seed_ids, intent, mode?, k?)",{"type":47,"value":96},{"type":42,"tag":61,"props":130,"children":131},{},[132],{"type":42,"tag":89,"props":133,"children":135},{"className":134},[],[136],{"type":47,"value":137},"firecrawl research related-papers \u003CseedIds...> --intent \u003Cintent> [--mode \u003Csimilar|citers|references>] [--k \u003Cnumber>]",{"type":47,"value":139},"\nSemantic and structural expansion, ranked to your ",{"type":42,"tag":89,"props":141,"children":143},{"className":142},[],[144],{"type":47,"value":145},"intent",{"type":47,"value":147},".\nThis reaches papers semantic search ",{"type":42,"tag":149,"props":150,"children":151},"em",{},[152],{"type":47,"value":153},"cannot",{"type":47,"value":155},", and it's how you turn one good hit into the rest of a set.\n",{"type":42,"tag":89,"props":157,"children":159},{"className":158},[],[160],{"type":47,"value":161},"mode=similar",{"type":47,"value":163}," → niche siblings; ",{"type":42,"tag":89,"props":165,"children":167},{"className":166},[],[168],{"type":47,"value":169},"citers",{"type":47,"value":171}," → who uses\u002Fbuilds on the seeds; ",{"type":42,"tag":89,"props":173,"children":175},{"className":174},[],[176],{"type":47,"value":177},"references",{"type":47,"value":179}," → what they build on \u002F compare against.",{"type":42,"tag":80,"props":181,"children":182},{},[183,184,193,194,203,205,210,212,218,220,226,228,233,235,241],{"type":47,"value":84},{"type":42,"tag":61,"props":185,"children":186},{},[187],{"type":42,"tag":89,"props":188,"children":190},{"className":189},[],[191],{"type":47,"value":192},"firecrawl_research_inspect_paper(id)",{"type":47,"value":96},{"type":42,"tag":61,"props":195,"children":196},{},[197],{"type":42,"tag":89,"props":198,"children":200},{"className":199},[],[201],{"type":47,"value":202},"firecrawl research inspect-paper \u003Cid>",{"type":47,"value":204},"\nCanonical metadata for ",{"type":42,"tag":61,"props":206,"children":207},{},[208],{"type":47,"value":209},"one",{"type":47,"value":211}," paper: title, abstract, authors, categories, source ids, and dates.\nUse it after ",{"type":42,"tag":89,"props":213,"children":215},{"className":214},[],[216],{"type":47,"value":217},"search_papers",{"type":47,"value":219}," or ",{"type":42,"tag":89,"props":221,"children":223},{"className":222},[],[224],{"type":47,"value":225},"related_papers",{"type":47,"value":227}," when you need the complete citation\u002Fmetadata for a candidate, or when you have an id from elsewhere and need to confirm what paper it resolves to.\nThis does ",{"type":42,"tag":61,"props":229,"children":230},{},[231],{"type":47,"value":232},"not",{"type":47,"value":234}," read the paper body; use ",{"type":42,"tag":89,"props":236,"children":238},{"className":237},[],[239],{"type":47,"value":240},"read_paper",{"type":47,"value":242}," for specific full-text questions.",{"type":42,"tag":80,"props":244,"children":245},{},[246,247,256,257,266,268,272],{"type":47,"value":84},{"type":42,"tag":61,"props":248,"children":249},{},[250],{"type":42,"tag":89,"props":251,"children":253},{"className":252},[],[254],{"type":47,"value":255},"firecrawl_research_read_paper(id, question)",{"type":47,"value":96},{"type":42,"tag":61,"props":258,"children":259},{},[260],{"type":42,"tag":89,"props":261,"children":263},{"className":262},[],[264],{"type":47,"value":265},"firecrawl research read-paper \u003Cid> --question \u003Cquestion>",{"type":47,"value":267},"\nIn-body passages of ",{"type":42,"tag":61,"props":269,"children":270},{},[271],{"type":47,"value":209},{"type":47,"value":273}," paper, to verify a load-bearing constraint (a method actually used, a score actually reported, an affiliation, what a paper compares to).\nUse it to settle a specific doubt, not on everything.",{"type":42,"tag":80,"props":275,"children":276},{},[277,278,295,296,312,314,319,321,326,328,333],{"type":47,"value":84},{"type":42,"tag":61,"props":279,"children":280},{},[281,287,289],{"type":42,"tag":89,"props":282,"children":284},{"className":283},[],[285],{"type":47,"value":286},"firecrawl_search(query)",{"type":47,"value":288}," \u002F ",{"type":42,"tag":89,"props":290,"children":292},{"className":291},[],[293],{"type":47,"value":294},"firecrawl_scrape(url)",{"type":47,"value":96},{"type":42,"tag":61,"props":297,"children":298},{},[299,305,306],{"type":42,"tag":89,"props":300,"children":302},{"className":301},[],[303],{"type":47,"value":304},"firecrawl search \u003Cquery>",{"type":47,"value":288},{"type":42,"tag":89,"props":307,"children":309},{"className":308},[],[310],{"type":47,"value":311},"firecrawl scrape \u003Curl>",{"type":47,"value":313},"\nGeneral ",{"type":42,"tag":61,"props":315,"children":316},{},[317],{"type":47,"value":318},"web",{"type":47,"value":320}," search and page fetch, for facts that don't live in paper abstracts: benchmark ",{"type":42,"tag":61,"props":322,"children":323},{},[324],{"type":47,"value":325},"leaderboards",{"type":47,"value":327},", rankings, \"who scores best \u002F is largest \u002F is most used.\"\nFind the ranking on the web, then map the top entries back to papers with ",{"type":42,"tag":89,"props":329,"children":331},{"className":330},[],[332],{"type":47,"value":217},{"type":47,"value":334},".\nReach for these only when the corpus can't answer the question on its own.",{"type":42,"tag":69,"props":336,"children":338},{"id":337},"match-the-approach-to-the-query",[339],{"type":47,"value":340},"Match the approach to the query",{"type":42,"tag":76,"props":342,"children":343},{},[344,368,399,430,468,514,531],{"type":42,"tag":80,"props":345,"children":346},{},[347,359,361,366],{"type":42,"tag":61,"props":348,"children":349},{},[350,352,357],{"type":47,"value":351},"Single ",{"type":42,"tag":149,"props":353,"children":354},{},[355],{"type":47,"value":356},"named",{"type":47,"value":358}," paper",{"type":47,"value":360}," (\"the Qwen3 report\") → one ",{"type":42,"tag":89,"props":362,"children":364},{"className":363},[],[365],{"type":47,"value":217},{"type":47,"value":367},", done. This is the only case that truly wants exactly one paper.",{"type":42,"tag":80,"props":369,"children":370},{},[371,376,378,383,385,390,392,397],{"type":42,"tag":61,"props":372,"children":373},{},[374],{"type":47,"value":375},"Paper by description \u002F by method or technique",{"type":47,"value":377}," (\"the paper that introduced X\", \"training-free N-gram detection of AI text\") → find the best match, then assume there's a ",{"type":42,"tag":149,"props":379,"children":380},{},[381],{"type":47,"value":382},"family",{"type":47,"value":384},": expand with ",{"type":42,"tag":89,"props":386,"children":388},{"className":387},[],[389],{"type":47,"value":225},{"type":47,"value":391}," and ",{"type":42,"tag":61,"props":393,"children":394},{},[395],{"type":47,"value":396},"include the closely-related methods\u002Fpapers too",{"type":47,"value":398},". Even when one paper is the exact literal match, surface and keep its neighbors — don't narrow to the single best hit and reason the rest out. Only treat it as one-answer if the query names a specific paper.",{"type":42,"tag":80,"props":400,"children":401},{},[402,407,409,414,416,421,423,428],{"type":42,"tag":61,"props":403,"children":404},{},[405],{"type":47,"value":406},"Enumeration \u002F method-family",{"type":47,"value":408}," (\"papers that do X\", \"alternatives to Adam\", \"benchmarks for Y\") → the answer is a ",{"type":42,"tag":149,"props":410,"children":411},{},[412],{"type":47,"value":413},"set",{"type":47,"value":415},", and this is where ",{"type":42,"tag":89,"props":417,"children":419},{"className":418},[],[420],{"type":47,"value":225},{"type":47,"value":422}," earns its keep: expand several strong anchors with ",{"type":42,"tag":89,"props":424,"children":426},{"className":425},[],[427],{"type":47,"value":161},{"type":47,"value":429},", re-seed from new strong hits. One search is never enough here.",{"type":42,"tag":80,"props":431,"children":432},{},[433,438,440,445,447,452,454,459,461,466],{"type":42,"tag":61,"props":434,"children":435},{},[436],{"type":47,"value":437},"Exhibiting",{"type":47,"value":439}," (\"papers that ",{"type":42,"tag":149,"props":441,"children":442},{},[443],{"type":47,"value":444},"use",{"type":47,"value":446}," \u002F exhibit property P\") → the relevant papers apply P but their abstracts may not describe it. Go from P's defining paper outward via ",{"type":42,"tag":89,"props":448,"children":450},{"className":449},[],[451],{"type":47,"value":169},{"type":47,"value":453},"\u002F",{"type":42,"tag":89,"props":455,"children":457},{"className":456},[],[458],{"type":47,"value":177},{"type":47,"value":460},", and use ",{"type":42,"tag":89,"props":462,"children":464},{"className":463},[],[465],{"type":47,"value":240},{"type":47,"value":467}," to confirm a candidate actually uses P.",{"type":42,"tag":80,"props":469,"children":470},{},[471,476,478,483,485,491,492,498,500,505,507,512],{"type":42,"tag":61,"props":472,"children":473},{},[474],{"type":47,"value":475},"Superlative \u002F leaderboard",{"type":47,"value":477}," (\"best on benchmark X\", \"largest\", \"most popular\") → the ranking lives on ",{"type":42,"tag":61,"props":479,"children":480},{},[481],{"type":47,"value":482},"leaderboards \u002F the web",{"type":47,"value":484},", not in any single abstract. Use ",{"type":42,"tag":89,"props":486,"children":488},{"className":487},[],[489],{"type":47,"value":490},"firecrawl_search",{"type":47,"value":288},{"type":42,"tag":89,"props":493,"children":495},{"className":494},[],[496],{"type":47,"value":497},"firecrawl_scrape",{"type":47,"value":499}," to find the benchmark's leaderboard or rankings, read off the top models\u002Fpapers, then ",{"type":42,"tag":89,"props":501,"children":503},{"className":502},[],[504],{"type":47,"value":217},{"type":47,"value":506}," each to get its paper. As a fallback, search the benchmark and ",{"type":42,"tag":89,"props":508,"children":510},{"className":509},[],[511],{"type":47,"value":240},{"type":47,"value":513}," candidates for reported numbers. The hardest kind — cast wide.",{"type":42,"tag":80,"props":515,"children":516},{},[517,522,524,529],{"type":42,"tag":61,"props":518,"children":519},{},[520],{"type":47,"value":521},"Org \u002F author filtered",{"type":47,"value":523}," (\"from \u003Corg>\", \"by \u003Cauthor>\") → topical match isn't enough; verify the affiliation\u002Fauthorship (metadata or ",{"type":42,"tag":89,"props":525,"children":527},{"className":526},[],[528],{"type":47,"value":240},{"type":47,"value":530},") before keeping a paper.",{"type":42,"tag":80,"props":532,"children":533},{},[534,539,541,546,548,554,555,561],{"type":42,"tag":61,"props":535,"children":536},{},[537],{"type":47,"value":538},"Compare-against",{"type":47,"value":540}," (\"what does paper X benchmark against \u002F build on\") → the answer is ",{"type":42,"tag":149,"props":542,"children":543},{},[544],{"type":47,"value":545},"inside",{"type":47,"value":547}," paper X: ",{"type":42,"tag":89,"props":549,"children":551},{"className":550},[],[552],{"type":47,"value":553},"read_paper(X, ...)",{"type":47,"value":219},{"type":42,"tag":89,"props":556,"children":558},{"className":557},[],[559],{"type":47,"value":560},"related_papers([X], ..., mode=\"references\")",{"type":47,"value":562},".",{"type":42,"tag":69,"props":564,"children":566},{"id":565},"principles",[567],{"type":47,"value":568},"Principles",{"type":42,"tag":76,"props":570,"children":571},{},[572,588,612,636],{"type":42,"tag":80,"props":573,"children":574},{},[575,580,582,586],{"type":42,"tag":61,"props":576,"children":577},{},[578],{"type":47,"value":579},"When in doubt, include.",{"type":47,"value":581}," For any topic \u002F method \u002F comparison question, return the relevant ",{"type":42,"tag":149,"props":583,"children":584},{},[585],{"type":47,"value":382},{"type":47,"value":587},", not just the single best match — err toward keeping a plausibly-relevant paper rather than dropping it. The neighboring methods are part of a good answer; don't reason close work out just because one paper is the most exact match.",{"type":42,"tag":80,"props":589,"children":590},{},[591,596,598,603,605,610],{"type":42,"tag":61,"props":592,"children":593},{},[594],{"type":47,"value":595},"Follow the literature, and keep what you find.",{"type":47,"value":597}," The seminal source, the competing methods, the close neighbors are usually a hop away — use ",{"type":42,"tag":89,"props":599,"children":601},{"className":600},[],[602],{"type":47,"value":225},{"type":47,"value":604},", and ",{"type":42,"tag":149,"props":606,"children":607},{},[608],{"type":47,"value":609},"include",{"type":47,"value":611}," them, not just the first hit. Stopping at one good result is the most common way to leave the reader with half an answer.",{"type":42,"tag":80,"props":613,"children":614},{},[615,620,622,627,629,634],{"type":42,"tag":61,"props":616,"children":617},{},[618],{"type":47,"value":619},"Verify to exclude, not to gatekeep.",{"type":47,"value":621}," Use ",{"type":42,"tag":89,"props":623,"children":625},{"className":624},[],[626],{"type":47,"value":240},{"type":47,"value":628}," to rule a paper ",{"type":42,"tag":149,"props":630,"children":631},{},[632],{"type":47,"value":633},"out",{"type":47,"value":635}," when a hard constraint clearly fails (wrong org\u002Fauthor, doesn't actually report the score). When a paper is plausibly relevant, lean toward keeping it rather than demanding proof.",{"type":42,"tag":80,"props":637,"children":638},{},[639,644],{"type":42,"tag":61,"props":640,"children":641},{},[642],{"type":47,"value":643},"Only drop the clearly off-topic.",{"type":47,"value":645}," Don't pad with papers you're confident are unrelated — but that's a high bar; most plausibly-relevant work should make the cut.",{"items":647,"total":804},[648,662,674,685,700,713,725,740,752,769,782,794],{"slug":649,"name":649,"fn":650,"description":651,"org":652,"tags":653,"stars":659,"repoUrl":660,"updatedAt":661},"competitor-analysis","analyze competitors across features and pricing","Compare two or more companies, products, or platforms across pricing, features, positioning, and docs. Use this skill whenever the user says \"compare X vs Y\", \"how does X stack up against Y\", \"alternatives to X\", \"competitive landscape of …\", \"X vs Y vs Z\", or asks for a competitor matrix. Uses search to discover competitors when the user only names a category, then scrape for each competitor's homepage, pricing page, and features\u002Fdocs. Returns a normalized comparison matrix as JSON.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[654,657,658],{"name":655,"slug":656,"type":15},"Competitive Intelligence","competitive-intelligence",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},1130,"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Fweb-agent","2026-04-17T05:00:44.623049",{"slug":663,"name":663,"fn":664,"description":665,"org":666,"tags":667,"stars":659,"repoUrl":660,"updatedAt":673},"deep-research","conduct multi-source deep research","Multi-source research with source triangulation and fact-checking. Use for any research task requiring 3+ sources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[668,669,672],{"name":9,"slug":8,"type":15},{"name":670,"slug":671,"type":15},"Knowledge Management","knowledge-management",{"name":13,"slug":14,"type":15},"2026-04-17T05:00:45.852512",{"slug":675,"name":675,"fn":676,"description":677,"org":678,"tags":679,"stars":659,"repoUrl":660,"updatedAt":684},"e-commerce","extract product data from e-commerce sites","Navigate e-commerce sites to extract products, pricing, categories, and inventory. Handles pagination, variants, and JS-heavy storefronts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[680,682,683],{"name":681,"slug":675,"type":15},"E-commerce",{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-05-15T06:15:30.880268",{"slug":686,"name":686,"fn":687,"description":688,"org":689,"tags":690,"stars":659,"repoUrl":660,"updatedAt":699},"financial-research","pull financial data for public companies","Pull company financials, SEC filings, and analyst consensus for a public company. Use this skill whenever the user says \"10-K\", \"10-Q\", \"earnings\", \"revenue of\", \"financials for\", \"analyst rating for\", \"price target for\", or provides a stock ticker. Combines SEC EDGAR for official filings with Yahoo Finance \u002F TipRanks for analyst data. Search + scrape only; no interact needed.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[691,694,695,696],{"name":692,"slug":693,"type":15},"Finance","finance",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":697,"slug":698,"type":15},"SEC Filings","sec-filings","2026-05-15T06:15:33.293957",{"slug":701,"name":701,"fn":702,"description":703,"org":704,"tags":705,"stars":659,"repoUrl":660,"updatedAt":712},"pricing-tracker","track and compare vendor pricing tiers","Extract and normalize pricing tiers from any SaaS, API, cloud, or LLM vendor's pricing page. Use this skill whenever the user says \"pricing for X\", \"how much does X cost\", \"pricing tiers\", \"cost comparison\", provides a URL ending in `\u002Fpricing` or `\u002Fplans`, or asks to monitor pricing over time. Pairs well with `exportSkill` to turn a run into a cron-friendly workflow. Scrape-driven; no interact needed for typical pricing pages.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[706,707,708,709],{"name":655,"slug":656,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":710,"slug":711,"type":15},"SaaS","saas","2026-04-17T05:00:43.349332",{"slug":714,"name":714,"fn":715,"description":716,"org":717,"tags":718,"stars":659,"repoUrl":660,"updatedAt":724},"structured-extraction","extract structured data from websites","Extract structured data matching a JSON schema from websites. Handles complex nested schemas, arrays, pagination, and validation. Always outputs via formatOutput.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[719,722,723],{"name":720,"slug":721,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-05-15T06:15:32.092034",{"slug":726,"name":726,"fn":727,"description":728,"org":729,"tags":730,"stars":737,"repoUrl":738,"updatedAt":739},"firecrawl-company-directories","extract company directories with Firecrawl","Extract structured company lists from directories with Firecrawl. Use for scraping YC, Crunchbase, Product Hunt, G2, startup directories, category directories, or custom company databases into JSON, CSV, CRM-ready lists, or research tables.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[731,734,735,736],{"name":732,"slug":733,"type":15},"Automation","automation",{"name":720,"slug":721,"type":15},{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},99,"https:\u002F\u002Fgithub.com\u002Ffirecrawl\u002Ffirecrawl-workflows","2026-06-30T07:02:21.468",{"slug":741,"name":741,"fn":742,"description":743,"org":744,"tags":745,"stars":737,"repoUrl":738,"updatedAt":739},"firecrawl-competitive-intel","monitor competitor product changes with Firecrawl","Monitor competitor pricing, features, changelogs, dashboards, and product changes with Firecrawl. Use for recurring competitive intelligence, pricing tier extraction, feature change tracking, or structured competitor alerts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[746,747,748,751],{"name":655,"slug":656,"type":15},{"name":9,"slug":8,"type":15},{"name":749,"slug":750,"type":15},"Marketing","marketing",{"name":17,"slug":18,"type":15},{"slug":753,"name":753,"fn":754,"description":755,"org":756,"tags":757,"stars":737,"repoUrl":738,"updatedAt":739},"firecrawl-dashboard-reporting","pull metrics from analytics dashboards","Pull metrics from analytics dashboards and internal web tools with Firecrawl browser. Use when the user needs dashboard reporting, cross-platform metric summaries, authenticated analytics extraction, date-range reports, or structured metrics from web dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[758,761,764,765,768],{"name":759,"slug":760,"type":15},"Analytics","analytics",{"name":762,"slug":763,"type":15},"Dashboards","dashboards",{"name":9,"slug":8,"type":15},{"name":766,"slug":767,"type":15},"Reporting","reporting",{"name":17,"slug":18,"type":15},{"slug":770,"name":770,"fn":771,"description":772,"org":773,"tags":774,"stars":737,"repoUrl":738,"updatedAt":739},"firecrawl-deep-research","conduct deep research with Firecrawl","Produce an intensive, cited analytical report: executive summary, multi-angle\nfindings, contrarian views, open questions, and full sources. Use only when the\nuser needs rigorous synthesis of a complex topic (scientific, technical, policy,\nor market-analytical) that cannot be answered with a short search, and wants\na formal written report, not a recommendation list.\n\nDo not use for product picks, top-N lists, quick lookups, or routine \"find out\nabout X\" tasks. If the request does not clearly need this kind of report, do\nnot use this skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[775,776,777,778,781],{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":13,"slug":14,"type":15},{"name":779,"slug":780,"type":15},"Summarization","summarization",{"name":17,"slug":18,"type":15},{"slug":783,"name":783,"fn":784,"description":785,"org":786,"tags":787,"stars":737,"repoUrl":738,"updatedAt":739},"firecrawl-demo-walkthrough","generate product walkthroughs with Firecrawl","Walk through a product's key flows with Firecrawl browser and produce a structured UX\u002Fproduct walkthrough. Use for signup, onboarding, pricing, docs, dashboard, product demo prep, UX teardown, and first-run experience analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[788,789,790,793],{"name":732,"slug":733,"type":15},{"name":9,"slug":8,"type":15},{"name":791,"slug":792,"type":15},"UX Design","ux-design",{"name":17,"slug":18,"type":15},{"slug":795,"name":795,"fn":796,"description":797,"org":798,"tags":799,"stars":737,"repoUrl":738,"updatedAt":739},"firecrawl-knowledge-base","build knowledge bases from web content","Build a knowledge base from web content with Firecrawl. Use for local reference docs, RAG-ready chunks, fine-tuning datasets, documentation mirrors, topic corpora, or LLM-ready markdown organized from web sources.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[800,801,802,803],{"name":720,"slug":721,"type":15},{"name":9,"slug":8,"type":15},{"name":670,"slug":671,"type":15},{"name":21,"slug":22,"type":15},36,{"items":806,"total":869},[807,822,837,850,861],{"slug":808,"name":808,"fn":809,"description":810,"org":811,"tags":812,"stars":26,"repoUrl":27,"updatedAt":821},"firecrawl-build-interact","integrate Firecrawl interact for browser actions","Integrate Firecrawl `\u002Finteract` into product code for dynamic pages and browser actions after scraping. Use when a feature needs clicks, form fills, pagination, authentication-aware flows, or other multi-step interactions that plain `\u002Fscrape` cannot complete.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[813,816,819,820],{"name":814,"slug":815,"type":15},"API Development","api-development",{"name":817,"slug":818,"type":15},"Browser Automation","browser-automation",{"name":9,"slug":8,"type":15},{"name":17,"slug":18,"type":15},"2026-04-09T04:48:12.802517",{"slug":823,"name":823,"fn":824,"description":825,"org":826,"tags":827,"stars":26,"repoUrl":27,"updatedAt":836},"firecrawl-build-onboarding","configure Firecrawl credentials and SDK","Get Firecrawl credentials and SDK setup into a project. Use when an application needs `FIRECRAWL_API_KEY`, when an agent should add Firecrawl to `.env`, when the user wants to authenticate Firecrawl for app code, or when choosing the first SDK and docs for a new Firecrawl integration. This skill includes its own browser auth flow, so it does not depend on the website onboarding skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[828,829,832,833],{"name":814,"slug":815,"type":15},{"name":830,"slug":831,"type":15},"Authentication","authentication",{"name":9,"slug":8,"type":15},{"name":834,"slug":835,"type":15},"SDK","sdk","2026-04-09T04:48:11.560192",{"slug":838,"name":838,"fn":839,"description":840,"org":841,"tags":842,"stars":26,"repoUrl":27,"updatedAt":849},"firecrawl-build-scrape","integrate Firecrawl scrape for page extraction","Integrate Firecrawl `\u002Fscrape` into product code for single-page extraction. Use when an app already has a URL and needs markdown, HTML, links, screenshots, metadata, or structured page output. Prefer this skill over broader crawl patterns when the feature is page-level.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[843,844,845,848],{"name":814,"slug":815,"type":15},{"name":9,"slug":8,"type":15},{"name":846,"slug":847,"type":15},"Frontend","frontend",{"name":17,"slug":18,"type":15},"2026-04-09T04:48:09.157956",{"slug":851,"name":851,"fn":852,"description":853,"org":854,"tags":855,"stars":26,"repoUrl":27,"updatedAt":860},"firecrawl-build-search","integrate Firecrawl search for discovery","Integrate Firecrawl `\u002Fsearch` into product code and agent workflows. Use when an app needs discovery before extraction, when the feature starts with a query instead of a URL, or when the system should search the web and optionally hydrate result content.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[856,857,858,859],{"name":814,"slug":815,"type":15},{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},{"name":17,"slug":18,"type":15},"2026-04-09T04:48:10.362305",{"slug":4,"name":4,"fn":5,"description":6,"org":862,"tags":863,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[864,865,866,867,868],{"name":9,"slug":8,"type":15},{"name":24,"slug":25,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":17,"slug":18,"type":15},5]