Live Research

作者 brightdatae825f02fbcd7無授權條款264 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫昨天更新

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`.

AI 產生的概覽

透過依意圖排序的網路搜尋並綜合所擷取的網頁內容,產出附引用的多來源研究簡報。

功能
將研究問題拆解為數個子問題,針對每個角度執行一次依意圖排序的搜尋並同時取得網頁內容,接著合併、去重並對結果進行品質篩選。它會從保留的來源中擷取論點,撰寫附行內引用的結構化簡報,包含編號來源清單、來源之間的矛盾以及明確指出的資訊缺口。另附一支指令碼負責合併、去重與過濾步驟。
適用情境
適用於使用者需要針對某主題進行深度即時研究、簡報、文獻回顧或市場掃描,或需要綜合且有事實來源支撐的答案而非連結清單的情況。它適合一次性報告,不適用於可重複使用的檢索系統,也不適用於以競爭對手或輿情為特定目標的工作。
執行需求
需要存取 Bright Data 的 Discover API,可透過 bdata 命令列工具(需安裝並以 bdata login 驗證)或環境變數 BRIGHTDATA_API_TOKEN 中的 API 權杖,並需要網路存取。此技能附有一支可執行的合併指令碼,手動合併路徑另需 jq。

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):

bash
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

bash
# one call per angle; --include-content so you read sources in the same passbdata 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".
bash
# 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.jsonecho "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 intents > 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 flags

  • One broad Discover call and calling it "live research" — decompose into angles.
  • Writing claims from memory/training data instead of from retrieved content — every claim must come from the corpus.
  • Fabricating citations or relevance_scores — if a call failed, report the gap.
  • Ignoring --include-content and just listing links — that's discover-api, not research.
  • Averaging away contradictions between sources.
  • Forgetting to dedup — the same article via 3 aggregators inflates apparent consensus.

References

  • references/brief-template.md [blocked] — the output structure (exec summary, findings per sub-question, contradictions, gaps, numbered sources) and a worked citation example.
  • scripts/merge_corpus.sh [blocked] — Step 4 as a tested one-liner: flatten .results[] across angle files, dedup by URL, quality-gate (null/short/404/block-page), sort by relevance_score.

Related skills

  • discover-api — the underlying API (modes, params, trigger/poll). Read first.
  • rag-pipeline — when the user wants a reusable retrieval system, not a one-time report.
  • competitive-intel — competitor-focused research (pricing, hiring, positioning).
  • brand-listening — social/sentiment research across Reddit/X/TikTok/etc.

來源與署名

來源:brightdata/skills位於skills/live-research提交e825f02

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架