net-deep-research
Perform deep multi-source internet research for complex web truth-finding tasks. Prefer explicit /net-deep-research invocation. Without the command, activate only for deep online v…
h4444433333
@h4444433333
Install
$ openclaw skills install @h4444433333/net-deep-researchNet Deep Research
Bundle version: 1.1.4
This skill uses the remote backend API at https://www.shoggoth.vip.
Capability Summary
- accesses the public web for research
- calls an external backend API
- performs URL safety checks before fetching
- sends a minimal structured research record after external-source runs
- can send explicit high-sensitivity diagnostics or explicit user votes only when separately requested
User Notice
- During the default feedback workflow, this skill may transmit cited source metadata, structured evidence links, query classification, and usefulness signals to an external backend for source auditing and quality analysis.
- Raw query text, full answer text, offnet answer audits, and trust/untrust votes are not part of the default public flow; they are sent only when the user explicitly requests a high-sensitivity diagnostic or an explicit vote action.
Trigger
This skill prefers the explicit /net-deep-research command.
If the user message starts with /net-deep-research:
- remove the matched command prefix
- trim whitespace
- if the remainder contains
--report, enable Report Mode and remove the flag - treat the remainder as the actual research question
If the user does not use /net-deep-research, activate this skill only when the request clearly needs deep online truth-finding rather than ordinary web lookup. Typical cases:
- asks for deep web search across multiple sources rather than a quick current fact
- asks to verify whether online information is true, false, misleading, or poorly sourced
- asks to distinguish verified facts from rumor, inference, marketing claims, or stale summaries
- asks for cross-source verification on policy, technical compatibility, product status, or public claims where a shallow answer would be unsafe
Do not activate this skill for:
- ordinary web browsing or simple latest-info lookups
- one-source factual checks that do not require cross-verification
- routine questions that can be answered well without deep multi-source web research
Runtime
Start by checking GET https://www.shoggoth.vip/health — this check is mandatory, never skip it.
200 OK->Runtime Online- unreachable or timeout (> 8s) -> retry once, then
Runtime Fallback
Fallback principle: backend failure must not block user answer; fallback silently.
In Runtime Fallback, keep the same research discipline but skip all backend API calls.
Research Workflow
When this skill is triggered, do not answer immediately.
Run this workflow:
- normalize the query into stable structured fields
- restate the question in one sentence
- decompose into multiple angles or subquestions
- choose one primary research track and supporting tracks only when needed
- discover sources through backend-assisted search when online, plus native web search as independent coverage
- security-check all candidate URLs before fetching when online
- research in multiple rounds and compare sources across angles
- resolve conflicts or state them plainly
- write the answer from a structured evidence map
- submission is the MANDATORY closing step: whenever at least one external URL was fetched,
POST /v1/research-feedbackMUST be sent before ending the run. Includeclaims,claim_evidence_edges, and always include the keysclaim_slot_evidences,typed_conflicts,candidate_causal_edges,causal_gaps— pass the Pre-Submission Checklist below first; an empty array is allowed only when the checklist genuinely found nothing for that field
Keep the workflow principle short and stable:
- multi-round
- multi-angle
- conflict-aware
Negative evidence is mandatory, not optional:
- every fetched source must appear in
sources; if it was fetched but not adopted as evidence, it must carry a non-nulldiscard_reason - if sources conflict on a claim, the feedback must include at least one
claim_evidence_edgewithstance=opposepointing at the conflicting source - if sources disagree on the same fact/metric,
typed_conflictsis mandatory and must includeconflicting_valuesandresolution(orresolution: nullwhen unresolved) - in multi-round search, dedicate at least one round to counter-evidence queries (argue against your current conclusion) before writing the final answer
Pre-Submission Checklist
Run this checklist before every POST /v1/research-feedback. Fix the payload until every applicable check passes — never skip the submission instead of fixing it.
- At least one external URL was fetched -> submission is mandatory; ending the run without it is a protocol violation
- Every fetched source appears in
sources; each fetched-but-not-adopted source carries a non-nulldiscard_reason - Any source contradicted a claim -> at least one
claim_evidence_edgewithstance=opposeAND a matchingtyped_conflictsentry exist - The answer contains any causal statement ("X causes / leads to / results in Y") ->
candidate_causal_edgesis non-empty (field shape inreferences/feedback-contract.md) - A correlation is observed but its mechanism is unknown -> add a
causal_gapsentry - Payload limits: at most 8
candidate_causal_edgesand at most 4causal_gapsitems — keep only the strongest entries, exceeding either limit rejects the whole payload - Any claim or edge touches a measurable number -> its
numeric_factsis filled - On a 400/422 response: read the field named in the error, fix exactly that field, and retry once — do not abandon the submission
Feedback Boundary
Default public flow:
- if external sources were fetched and used -> send
POST /v1/research-feedback(mandatory closing step, see Pre-Submission Checklist) - if no external sources were fetched -> skip backend record by default
- do not send raw query text, full answer text, or
offnet-analysisin the default public flow - the semantic fields
claim_slot_evidences,typed_conflicts,candidate_causal_edges,causal_gapsare required payload keys whenever claims exist; omitting the key entirely is a contract violation, an empty array is the only allowed "nothing found" form
Explicit high-sensitivity mode:
- only when the user explicitly requests a diagnostic path
- may use
POST /v1/offnet-analysis - may include raw query text or full answer text when the explicit diagnostic actually requires them
Explicit vote mode:
POST /v1/sources/voteis not a default closing step- only use it when the user explicitly wants to submit a trust/untrust vote
Numeric Facts Requirement
The backend hard-rejects (400) any research-feedback payload where a numeric slot is present but numeric_facts is missing. Generate numeric_facts wherever the rule applies.
Trigger
- A claim with a non-empty
numberfield MUST include at least one entry in itsnumeric_facts. - A
claim_evidence_edgewith"number"insupported_slotsMUST include at least one entry in itsnumeric_facts.
Field shape
Each numeric_fact entry:
numeric_fact_id(required): unique id withnf_prefix, e.g.nf_c1_1subject(required): entity the number belongs to (align with the claimsubject)metric(required): metric name, e.g.social_security_payment_years,new_home_price_momvalue_raw(required): the raw number, e.g.1,3,0.2%, or a range2-3unit(required, non-empty): e.g.years,%,CNY,units,percentage_pointscomparator(optional, defaulteq): one ofeq,gt,gte,lt,lte,range,approx- optional:
time,location,scope,evidence_span
claim vs edge meaning
claim.numeric_facts: the number asserted by the claim text.edge.numeric_facts: the number extracted from that edge's source snippet.
The backend compares them only when subject + metric (metric signature) and unit both match.
Avoid false triggers
number is for measurable values only. Put document codes and policy names into version_or_policy_name (e.g. BJJD-2026-400) and bare dates into time — not number — so numeric_facts stays meaningful.
Claim example:
{
"claim_id": "c1",
"number": "1",
"numeric_facts": [
{
"numeric_fact_id": "nf_c1_1",
"subject": "Beijing non-local households",
"metric": "social_security_payment_years",
"value_raw": "1",
"unit": "years",
"comparator": "eq"
}
]
}
Edge example:
{
"claim_id": "c1",
"source_id": "src_001",
"stance": "support",
"evidence_snippet": "Non-local households must pay 1 year of social security.",
"support_score": 0.9,
"source_tier": "primary",
"trace_depth": 0,
"supported_slots": ["subject", "action", "number"],
"snippet_span_type": "original_sentence",
"numeric_facts": [
{
"numeric_fact_id": "nf_e1_1",
"subject": "Beijing non-local households",
"metric": "social_security_payment_years",
"value_raw": "1",
"unit": "years",
"comparator": "eq"
}
],
"used_in_final": true
}
When an edge declares "number" in supported_slots, it MUST fill edge.numeric_facts even if the linked claim already has numeric_facts. Keep the edge subject + metric (metric signature) and unit aligned with the claim so the backend comparison succeeds.
User-Facing Output Constraints
- never expose backend health checks, routing, retries, logs, payloads, or transport diagnostics
- only surface user-relevant research findings, source evidence, uncertainty, and source reputation signals
- do not narrate the internal workflow step by step in the final answer
- separate the machine-side structured feedback (what is submitted to the backend) from the human-facing answer (what the user reads); never dump the raw
sources/claims/claim_evidence_edgespayload into the answer - never expose internal identifiers in the human-facing answer: no
src_*/claim_*/edge_*/node_*citation ids or machine keys — reference sources only by readable name, domain, and type (e.g. official / media / derivative / secondhand)
Final Answer Shape
Default section order:
Question RestatementShort AnswerKey FindingsCross-Source NotesUncertainties or LimitsSourcesExplain Why
For predictive or outlook questions, split Verified Facts and Inference.
Minimal Example
Input:
/net-deep-research Is Bun production-ready for large Next.js deployments in 2026?
Expected behavior:
- normalize the query
- compare official docs, releases, and strong independent references
- resolve version or deployment-scope conflicts
- answer with evidence and uncertainty
- if external sources were used, submit the default minimal structured feedback record
Report Mode
Trigger conditions (either):
- the remainder after
/net-deep-researchcontains--report— remove the flag and treat the rest as the research question - after a completed run, the user explicitly asks for a full report (e.g. replies "报告" or "出完整报告")
Behavior:
- run the normal research workflow, then produce the report from the already-collected evidence map; do not re-search unless the evidence map is empty
- follow
references/report-format.mdstrictly: fixed 10-section order, consulting-style discipline (pyramid principle, hypothesis verdicts, fact / inference / speculation separation), and the deterministic A/B/C/U evidence grading rules - never expose machine ids (
src_*/c1/ edge keys) in the report; reference sources by readable name, domain, and type - the structured feedback submission stays unchanged; Report Mode only changes the human-facing deliverable
- deliver exactly ONE report file: write the report markdown to a temp file, then run the bundled renderer
python3 tools/md_to_pdf.py <report.md>; if it exits 0, deliver the generated PDF (and remove the intermediate markdown); if it exits non-zero (no Chrome/Chromium/Edge found or render failure), deliver the markdown file instead — never output extra artifacts (JSON, HTML) alongside the report - non-report runs end the default answer with a one-line hint that a full report can be requested by replying "报告"
References
Detailed implementation rules live here:
references/feedback-contract.md— fullresearch-feedbackandoffnet-analysiscontractreferences/source-scoring.md— backend reputation layer and 6-dimension source scoringreferences/research-playbook.md— research rounds, query planning, routing, and stop rulesreferences/report-format.md— Report Mode: full report template, consulting-style discipline, and A/B/C/U evidence gradingreferences/writing-rules.md— output format,Explain Why, and writing constraints
Read the relevant reference file before using its corresponding subsystem.
Top skills in this category
Multi Search Engine
@gpyangyoujunMulti search engine integration with 16 engines (7 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and Wolfra...
Agent Browser
@matrixyHeadless browser automation CLI optimized for AI agents with accessibility tree snapshots and ref-based element selection
Openai Whisper
@steipeteLocal speech-to-text with the Whisper CLI (no API key).
Tavily Search
@jacky1n7Search the public web through Tavily and return structured results with URLs and snippets. Use when an agent needs current information, source discovery, link lookup, news or finance search, or a fallback for unavailable built-in web search. Do not use for private or authenticated pages.
Baidu web search
@ide-reaSearch the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.