From spotlight
Archives web pages via Wayback Machine, Archive.today, or local scrape for fact-checking and investigations, with chain-of-custody Markdown files.
npx claudepluginhub buriedsignals/skills --plugin spotlightThis skill uses the workspace's default tool permissions.
> **Adapted from** [jamditis/claude-skills-journalism](https://github.com/jamditis/claude-skills-journalism) by Jay Amditis (MIT License).
Scrapes AI research from ChatGPT, Gemini, Claude URLs and web pages; archives as Markdown with YAML frontmatter; creates verified GitHub Issues with cross-references.
Provides templates for self-hosted Firecrawl research: single searches, academic paper retrieval/routing, recursive deep research with raw corpus persistence.
Gathers content from URLs (auto-detects Google/Slack/Notion/GitHub), web searches (Tavily/Exa), and local codebase into markdown artifacts for stable reasoning context.
Share bugs, ideas, or general feedback.
Adapted from jamditis/claude-skills-journalism by Jay Amditis (MIT License).
Archive evidence sources as you find them, before they disappear. This skill is for investigators and fact-checkers who need to preserve sources for editorial accountability, legal defensibility, and reproducibility.
Try in order. Stop when you have a confirmed archived copy.
Check if already archived:
curl -s "https://archive.org/wayback/available?url={URL}" | jq '.archived_snapshots.closest'
Submit for archiving:
curl -s -I "https://web.archive.org/save/{URL}"
# Returns Location header with the new snapshot URL
Find all snapshots (CDX API):
curl "http://web.archive.org/cdx/search/cdx?url={URL}&output=json&limit=5&fl=timestamp,statuscode,original"
Submit via form:
curl -s -L -X POST "https://archive.ph/submit/" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "url={URL}" \
-d "anyway=1"
# Follow redirects — final URL is the archived copy
Check for existing copy:
curl -s "https://archive.ph/newest/{URL}"
When archive services are rate-limited or unavailable, scrape directly using your configured search library and save to the evidence store. Treat local scrapes as lower-confidence preservation — they are not independently verifiable.
All archived copies go to cases/{project}/research/archived/.
Naming convention: {domain}-{slug}-archived-{YYYYMMDD}.md
Examples:
cases/project-name/research/archived/reuters-ukraine-ceasefire-archived-20260315.md
cases/project-name/research/archived/companyreg-gov-uk-filing-archived-20260315.md
Embed this header in every archived file. It is the provenance record.
---
archived_at: 2026-03-15T14:22:00Z
original_url: https://example.com/article/path
archive_url: https://web.archive.org/web/20260315142200/https://example.com/article/path
archive_service: Wayback Machine
archived_by: investigator | fact-checker
case: {project}
---
Without this block, the file is not a valid archived source — it is just a local copy.
If the original URL returns 404 or is otherwise gone, check Wayback Machine before marking the source as unavailable:
curl "http://web.archive.org/cdx/search/cdx?url={URL}&output=json&limit=1&fl=timestamp,statuscode"
If a snapshot exists, retrieve it:
curl "https://web.archive.org/web/{TIMESTAMP}/{URL}" -o .research/archived/{filename}.md
Only mark a source as unavailable after checking all three services.
Add archive_url to every source entry in findings.json and fact-check.json:
{
"url": "https://example.com/article",
"type": "news",
"accessed": "2026-03-15T14:20:00Z",
"archive_url": "https://web.archive.org/web/20260315142200/https://example.com/article",
"local_file": "cases/{project}/research/archived/example-article-archived-20260315.md"
}
If the page could not be archived, set archive_url to null and note why in the finding's confidence_rationale.
Adapted from claude-skills-journalism by Jay Amditis, released under MIT License.