Cited web research notes with quotes, dates and hashes
Log every web research claim with URL, fetch date, verbatim quote and the SHA-256 of the saved page, then catch unsourced claims, bad quotes and duplicate or dead sources and render a cited report.
What it does
Keeps web research traceable down to the exact sentence on the exact page, and checks it mechanically before you answer.
- Registering a source fetches and saves the page and records fetch time, HTTP status, title and SHA-256 (or registers a file you saved from a browser)
- Each claim is stored with source ids and verbatim quotes (several sources per claim allowed)
- Validation finds: claims without sources, citations without quotes, quotes that do not appear in the saved page, saved files that changed or disappeared (hash mismatch), duplicate URLs, byte-identical copies (syndication), single-source claims and unused sources
--check-livere-requests every URL and reports 404s and redirects- Renders a Markdown report with numbered citations; refuses while errors exist, or marks unverified claims
- Notes can be JSON or Markdown
How to use
python scripts/research_notes.py init notes.json --topic "Research question"
python scripts/research_notes.py add-source notes.json https://example.org/page
python scripts/research_notes.py add-claim notes.json --text "Claim" --cite S1 "verbatim quote"
python scripts/research_notes.py validate notes.json
python scripts/research_notes.py render notes.json --out report.md --quotes
The agent researches this way and answers only with validated, numbered citations.
Requirements
- Python 3 (standard library only)
- Network access only for fetching sources and for
--check-live
Caveats
- The script proves that a quote exists in the saved page, not that it supports the claim; the agent must read and judge that.
- PDF sources are saved and hashed, but quotes inside them are not matched automatically (register a text extraction as well).
- It never deletes saved files and refuses to overwrite existing evidence or reports.
How to install
- Unzip the downloaded file (it contains a
cited-web-research-notes/folder withSKILL.md). - Copy the whole folder into your agent's skills folder.
- Claude:
~/.claude/skills/(per project:.claude/skills/) - Hermes Agent:
~/.hermes/skills/ - Codex:
~/.agents/skills// Cursor:~/.cursor/skills/ - Claude app (claude.ai): upload the ZIP in Customize → Skills
- Claude:
- Restart the agent and check that the skill appears in its skill list.
Seller
AI Skill Market (official)
44 published skills