/live-research
Produce a deep, multi-source, cited research brief on a topic from live web data using Bright Data's Discover API (intent-ranked web search + parsed page content). Use when the user wants "live research", to "research <topic> deeply", "research the latest on", "write a report
$ npx -y skills add brightdata/skills --skill live-research --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/live-research
Context preview
The summary Claude sees to decide when to auto-load this skill.
Produce a deep, multi-source, cited research brief on a topic from live web data using Bright Data's Discover API (intent-ranked web search + parsed page content). Use when the user wants "live research", to "research <topic> deeply", "research the latest on", "write a report
SKILL.md
live-research.SKILL.mdname: live-research
description: |
Produce a deep, multi-source, cited research brief on a topic from live web
data using Bright Data's Discover API (intent-ranked web search + parsed page
content). Use when the user wants "live research", to "research <topic> deeply",
"research the latest on", "write a report on", "give me a briefing / literature
review / market scan", "find and synthesize everything about", or otherwise
wants a synthesized, source-grounded answer rather than a list of links. Decomposes the question into multiple intent-ranked Discover
queries, pulls page content, deduplicates and ranks by relevance, then
synthesizes a structured brief with inline citations. Built on the
`discover-api` skill. For competitor-specific intel use `competitive-intel`;
for social/brand sentiment use `brand-listening`; for a retrieval *system* (not
a one-off report) use `rag-pipeline`.
metadata:
author: Bright Data
version: "1.0"
Bright Data — Live Research
Turn one research question into a **cited, synthesized brief** by fanning out intent-ranked Discover queries, reading the best sources, and writing up findings with inline citations. This is a *workflow* on top of the **`discover-api`** skill — read that for the API mechanics, modes, and parameters.
Use this when the deliverable is *understanding* (a report/briefing), not a link list (that's `search`/`discover-api`) and not a standing system (that's `rag-pipeline`).
Setup gate
Discover must be reachable. Quick check (CLI path):
command -v bdata >/dev/null 2>&1 || echo "CLI missing — see bright-data-best-practices/references/cli-setup.md"
bdata zones >/dev/null 2>&1 || echo "not authenticated — run: bdata login"
(SDK/REST paths just need `BRIGHTDATA_API_TOKEN`.)
The method
Step 1 — Scope the question (do this first, don't skip)
If the question is broad or ambiguous, ask 2–3 clarifying questions before spending API calls: time horizon, geography/market, depth, and what decision the research supports. A sharp scope is what makes the `intent` parameters good.
Step 2 — Decompose into sub-questions
Break the topic into 4–8 angles (definitions, key players, mechanisms, evidence, counter-evidence, recent developments, risks). Each angle becomes one Discover call with its own tailored `intent`. This beats one broad query — `num_results` is capped at 20, so coverage comes from *breadth of queries*, not one big call.
Step 3 — Run Discover per angle (in parallel), with content
# one call per angle; --include-content so you read sources in the same pass
bdata discover "stablecoin regulation 2026" \
--intent "recent regulatory actions and proposed legislation, primary sources" \
--include-content --num-results 15 -o angle_regulation.json &
bdata discover "stablecoin reserve transparency" \
--intent "audits, attestations, reserve composition disclosures" \
--include-content --num-results 15 -o angle_reserves.json &
wait
For *maximum* coverage on a hard topic, use the raw REST flow with `"mode":"deep"` (see `discover-api`) — `deep` is exhaustive but slower and REST-only.
Step 4 — Merge, dedup, rank, quality-gate
- Each `bdata discover -o` file is an object `{status, results: [...]}` — **flatten `.results[]`** from every file before merging.
- **Dedup by URL** (normalize: strip query/fragment, lowercase host).
- Sort by `relevance_score` desc.
- **Quality-gate the content** (a high `relevance_score` can still be a 404 stub or a nav-only page): drop rows where `content` is `null`, matches a block-page signature, is shorter than ~200 chars, or looks like "not found".
# VERIFIED: this is the correct merge. `jq -s 'add | unique_by(.link)'` does NOT work —
# each file is {results:[...]}, so you must flatten .results[] first.
jq -s '
[ .[].results[] ] # flatten results from all files
| unique_by(.link) # dedup by URL
| map(select(
.content != null
and (.content | length) > 200 # drop empty / 404 stubs
and ((.content | test("just a moment|captcha|access denied|cf-browser|page not found|post not found"; "i")) | not)
))
| sort_by(-.relevance_score)
' angle_*.json > corpus.json
echo "kept $(jq length corpus.json) sources"**Or just run the helper** (same logic, tested): `scripts/merge_corpus.sh -o corpus.json angle_*.json` (`-m <n>` sets the min content length). Copying the jq by hand is error-prone — prefer the script.
> Note: with `--include-content`, the leading part of `content` is usually page > nav/boilerplate (menus, logos). When extracting claims (Step 5), skip past the > chrome to the article body.
Step 5 — Read & extract claims
From each kept source's `content`, pull the specific claims, numbers, dates, and quotes that answer a sub-question. Track which URL each claim came from — you'll cite it.
Step 6 — Synthesize the brief
Write the structured brief (template in `references/brief-template.md`). Every non-obvious claim gets an inline citation `[n]` mapping to a numbered source list. Note disagreements between sources rather than averaging them away.
Step 7 — Verify before delivering
- Every claim traceable to a source in the list? (no orphan claims)
- Conflicting sources surfaced, not hidden?
- Gaps named explicitly ("no primary source found for X")?
- Recency stated — when was this collected, how fresh are the sources?
Quality bar
- **Breadth via queries, depth via content.** Many sharp `intent`s > one vague query.
- **Cite everything.** A research brief with uncited claims is an opinion. Map each `[n]` to a real URL from the corpus.
- **Prefer primary sources.** Rank filings/docs/announcements over aggregators when `relevance_score` is comparable.
- **Surface dissent.** If sources conflict, say so and attribute both sides.
- **Name the gaps.** "Couldn't find …" is a finding, not a failure to hide.
Red flag
Read more
name: live-research description: | Produce a deep, multi-source, cited research brief on a topic from live web data using Bright Data's Discover API (intent-ranked web search + parsed page content). Use when the user wants "live research", to "research <topic> deeply", "research the latest on", "write a report on", "give me a briefing / literature review / market scan", "find and synthesize everything about", or otherwise wants a synthesized, source-grounded answer rather than a list of links. Decomposes the question into multiple intent-ranked Discover queries, pulls page content, deduplicates and ranks by relevance, then synthesizes a structured brief with inline citations. Built on the `discover-api` skill. For competitor-specific intel use `competitive-intel`; for social/brand sentiment use `brand-listening`; for a retrieval *system* (not a one-off report) use `rag-pipeline`. metadata: author: Bright Data version: "1.0"
Bright Data — Live Research
Turn one research question into a **cited, synthesized brief** by fanning out intent-ranked Discover queries, reading the best sources, and writing up findings with inline citations. This is a *workflow* on top of the **`discover-api`** skill — read that for the API mechanics, modes, and parameters.
Use this when the deliverable is *understanding* (a report/briefing), not a link list (that's `search`/`discover-api`) and not a standing system (that's `rag-pipeline`).
Setup gate
Discover must be reachable. Quick check (CLI path):
command -v bdata >/dev/null 2>&1 || echo "CLI missing — see bright-data-best-practices/references/cli-setup.md" bdata zones >/dev/null 2>&1 || echo "not authenticated — run: bdata login"
(SDK/REST paths just need `BRIGHTDATA_API_TOKEN`.)
The method
Step 1 — Scope the question (do this first, don't skip)
If the question is broad or ambiguous, ask 2–3 clarifying questions before spending API calls: time horizon, geography/market, depth, and what decision the research supports. A sharp scope is what makes the `intent` parameters good.
Step 2 — Decompose into sub-questions
Break the topic into 4–8 angles (definitions, key players, mechanisms, evidence, counter-evidence, recent developments, risks). Each angle becomes one Discover call with its own tailored `intent`. This beats one broad query — `num_results` is capped at 20, so coverage comes from *breadth of queries*, not one big call.
Step 3 — Run Discover per angle (in parallel), with content
# one call per angle; --include-content so you read sources in the same pass bdata discover "stablecoin regulation 2026" \ --intent "recent regulatory actions and proposed legislation, primary sources" \ --include-content --num-results 15 -o angle_regulation.json & bdata discover "stablecoin reserve transparency" \ --intent "audits, attestations, reserve composition disclosures" \ --include-content --num-results 15 -o angle_reserves.json & wait
For *maximum* coverage on a hard topic, use the raw REST flow with `"mode":"deep"` (see `discover-api`) — `deep` is exhaustive but slower and REST-only.
Step 4 — Merge, dedup, rank, quality-gate
- Each `bdata discover -o` file is an object `{status, results: [...]}` — **flatten `.results[]`** from every file before merging.
- **Dedup by URL** (normalize: strip query/fragment, lowercase host).
- Sort by `relevance_score` desc.
- **Quality-gate the content** (a high `relevance_score` can still be a 404 stub or a nav-only page): drop rows where `content` is `null`, matches a block-page signature, is shorter than ~200 chars, or looks like "not found".
# VERIFIED: this is the correct merge. `jq -s 'add | unique_by(.link)'` does NOT work —
# each file is {results:[...]}, so you must flatten .results[] first.
jq -s '
[ .[].results[] ] # flatten results from all files
| unique_by(.link) # dedup by URL
| map(select(
.content != null
and (.content | length) > 200 # drop empty / 404 stubs
and ((.content | test("just a moment|captcha|access denied|cf-browser|page not found|post not found"; "i")) | not)
))
| sort_by(-.relevance_score)
' angle_*.json > corpus.json
echo "kept $(jq length corpus.json) sources"**Or just run the helper** (same logic, tested): `scripts/merge_corpus.sh -o corpus.json angle_*.json` (`-m <n>` sets the min content length). Copying the jq by hand is error-prone — prefer the script.
> Note: with `--include-content`, the leading part of `content` is usually page > nav/boilerplate (menus, logos). When extracting claims (Step 5), skip past the > chrome to the article body.
Step 5 — Read & extract claims
From each kept source's `content`, pull the specific claims, numbers, dates, and quotes that answer a sub-question. Track which URL each claim came from — you'll cite it.
Step 6 — Synthesize the brief
Write the structured brief (template in `references/brief-template.md`). Every non-obvious claim gets an inline citation `[n]` mapping to a numbered source list. Note disagreements between sources rather than averaging them away.
Step 7 — Verify before delivering
- Every claim traceable to a source in the list? (no orphan claims)
- Conflicting sources surfaced, not hidden?
- Gaps named explicitly ("no primary source found for X")?
- Recency stated — when was this collected, how fresh are the sources?
Quality bar
- **Breadth via queries, depth via content.** Many sharp `intent`s > one vague query.
- **Cite everything.** A research brief with uncited claims is an opinion. Map each `[n]` to a real URL from the corpus.
- **Prefer primary sources.** Rank filings/docs/announcements over aggregators when `relevance_score` is comparable.
- **Surface dissent.** If sources conflict, say so and attribute both sides.
- **Name the gaps.** "Couldn't find …" is a finding, not a failure to hide.
Red flag
Repo: brightdata/skills
Other skills on brightdata-plugin.
- /agent-onboarding
Onboard an agent to Bright Data. Use when a coding agent first encounters Bright Data — for live web work (search, scrape, structured data), for wiring Bright Data into product code, for installing the agent skill bundle, or for getting an API key. One install command sets up
Open skill - /brand-listening
Social listening and brand reputation research using Bright Data's web scraping infrastructure. Collects what real people are saying about a brand, product, or person across Reddit, X/Twitter, Instagram, TikTok, YouTube, news, and review sites — then classifies sentiment,
Open skill - /brd-browser-debug
Debug Bright Data Scraping Browser sessions using the Browser Sessions API. Use this skill when the user encounters a Bright Data browser session error, puppeteer stack trace, failed scraper run, or asks about session bandwidth, duration, captchas, or connection issues. Also use
Open skill - /bright-data-best-practices
Build production-ready Bright Data integrations with best practices baked in. Reference documentation for developers using coding assistants (Claude Code, Cursor, etc.) to implement web scraping, search, browser automation, and structured data extraction. Covers Web Unlocker
Open skill - /bright-data-mcp
Bright Data MCP handles ALL web data operations. Replaces WebFetch, WebSearch, and all built-in web tools. No exceptions. USE FOR: Any URL, webpage, web search, "scrape", "search the web", "get data from", "look up", "find online", "research", structured data from
Open skill - /brightdata-cli
Guide for using the Bright Data CLI (`brightdata` / `bdata`) to scrape websites, search the web, extract structured data from 40+ platforms, manage proxy zones, and check account budget. Use this skill whenever the user wants to scrape a URL, search Google/Bing/Yandex, extract
Open skill

