Claude Code research automation: build a daily brief

Build a traceable daily brief with approved sources, event dates, claim-level evidence, deduplication, private delivery, and failure alerts.
Build a Claude Code research automation as a small data pipeline, not one prompt that says “find today's news.” Use approved sources, preserve every date and URL, verify claims against primary evidence, and mark the run degraded when a required source fails.
This is an independent, unofficial guide. claude/for is not affiliated with Anthropic or any publisher mentioned here. Product behavior and primary sources were checked on July 12, 2026.
Give each stage one job
The reliable flow is:
source list -> fetch -> normalize -> dedupe -> verify -> synthesize -> deliver, log, alert
A script should own source iteration, timestamps, URL cleanup, retries, exact duplicate checks, delivery IDs, and exit results. Claude helps with bounded judgment: comparing evidence, explaining relevance, and turning verified records into prose.
That division matters because Claude Code's WebSearch tool returns titles and URLs; it does not fetch the pages. A search result is a discovery candidate, not proof of what happened.
For this example, ask: Which product changes require an update to our Claude Code training this week? Write one private Markdown brief, with no public or source-system write.
Start with an approved source registry
Create sources.yml before writing the synthesis prompt:
- source_id: claude-code-changelog
canonical_url: https://code.claude.com/docs/en/changelog
acquisition_method: public_page
allowed_domains: [code.claude.com]
required: true
policy_checked_at: 2026-07-12
Add three to five sources only after reviewing each publisher's API or feed, terms, robots policy, rate limits, and retention rules. Prefer an official feed or API over page scraping. RFC 9309's robots protocol says crawler rules are not access authorization.
If you are choosing between a provider API, CLI, or connector, make that decision separately with the API vs MCP vs CLI guide. A new domain found through search must not silently join the approved registry.
Preserve four different dates
For every fetched record, keep:
| Field | What it means |
|---|---|
published_at | when the publisher says the page appeared |
updated_at | when the page says it changed |
event_at | when the reported event actually happened |
retrieved_at | when your automation saw the page |
Store the original timezone and a normalized UTC value. If the event date is absent, save null with a reason. A search engine's page-age estimate is not an event date.
Use a compact schema and output contract. The context engineering guide explains why unrelated pages weaken the task.
Deduplicate events without deleting evidence
Check duplicates in layers:
- exact canonical URL;
- exact normalized content hash;
- publisher plus stable feed or API item ID;
- candidate event cluster using entity, action, object, and event date;
- Claude review only for ambiguous clusters.
Keep every source variant in the cluster. Select one primary item, but retain the others as corroboration, commentary, or contradiction. Two articles about one company may describe different events, and ten press-release rewrites are not ten independent confirmations.
Verify claims before Claude writes
Turn candidate stories into an evidence ledger:
| Field | Example value |
|---|---|
claim_id | claim-017 |
claim_text | one bounded factual statement |
evidence_url | canonical primary URL |
evidence_type | primary_official |
verification_status | primary_confirmed |
contradiction_group | null or a shared ID |
Use primary_confirmed, secondary_only, contradicted, missing_primary, and source_unavailable. The main brief should default to primary-confirmed claims. Label unresolved items as a watchlist or omit them.
Anthropic's API citations feature creates valid pointers into provided documents. A pointer does not certify that the publisher is correct, current, or independent. In Claude Code, preserve canonical Markdown URLs and confirm they resolve. A Routine does not automatically emit the API's structured citation objects.
The broader verification guide explains why evidence must be observable rather than summarized as “research complete.”
Constrain synthesis and delivery
Give Claude normalized records and the ledger, not an unrestricted browser request. Require the brief to begin with COMPLETE, DEGRADED, or FAILED, followed by source coverage, freshness window, no more than five items, primary URLs, verification labels, contradictions, and source failures.
Deliver privately with an idempotency key such as brief:2026-09-24:morning. A retry with the same key must not create a second message. Save a run manifest containing source attempts, hashes, item and claim counts, registry version, exit result, and delivery receipt.
Use a separate failure channel, so a broken brief destination cannot swallow its own alert. Anthropic's Routines documentation says a green run status means the session avoided an infrastructure error, not that the requested task succeeded.
Do not assume a Routine supplies the idempotency key, task manifest, or external alert described here. Its transcript is useful evidence, but your runner and destination must implement those controls.
A cloud Routine has no permission-mode picker or approval prompts. Every included connector exposes all its tools, including writes, so remove every connector the brief does not need.
Use Custom network access for approved source domains where practical. Anthropic documents None, Trusted, Full, and Custom levels, but connector traffic routes through Anthropic and does not use that domain list. Restrict connectors separately. The Routines guide owns scheduler and kill-switch setup.
Run the Automation Readiness Check
This is our editorial preflight, not an Anthropic feature:
- Could feeds and a deterministic template do the whole job?
- What observable condition means success?
- Which exact sources and dates may it read?
- What may it write? Start with one private brief and append-only logs.
- Are credentials dedicated and read-only where supported?
- What caps fetches, searches, model calls, time, and spend?
- Which manifest, URLs, hashes, and receipt prove the run?
- Where do task-level failures alert a human?
- How do you pause triggers, revoke access, and disable delivery?
- Who owns false positives, missed sources, and policy review?
Archive reviewed manifests only after the pipeline works. A Claude Code second brain can help retrieve past briefs, but it should not become an unversioned source of truth.
Test one week, including a known failure
The following experiment has not been run for this article. We report no precision, freshness, reliability, latency, or cost result, and there is no testedAt claim.
Run the private workflow at the same time for seven days. Preserve each registry version, normalized record, ledger, brief, manifest, alert, and receipt. Compare each output with a manual review of the same sources.
Measure source coverage, resolving URLs, primary-evidence rate, freshness lag, duplicate precision, missed items, unique receipts, cost, and duration.
On one day, set FORCE_SOURCE_FAILURE=<source_id> so a required adapter returns a known timeout before network access. Test for a degraded or withheld brief, one alert, a non-zero exit code recorded in the manifest, no unrelated search fallback, and no duplicate delivery on retry.
Know the honest limits
Web search is incomplete. Official announcements prove what a vendor announced, not every marketing claim. Dates can mislead, and event clustering can merge separate stories or miss rewrites of one event.
Network allowlists reduce scope but do not replace connector review, credential limits, publisher rules, or output verification. Source terms and robots rules also change. Recheck them before unattended collection and store only the evidence you are permitted to retain.
How do I automate research with Claude Code?
Use scripts for approved-source collection, dates, normalization, deduplication, delivery, and logs. Give Claude the normalized records and evidence ledger only for bounded verification and synthesis.
Can Claude Code create a daily news brief?
Yes. Schedule a tested private workflow with a Routine or external scheduler. Start manually, preserve evidence for every item, and keep public publishing outside the first version.
Can Claude Code cite its research sources?
Yes, but implementation matters. Claude API features can return structured citations. A Claude Code workflow can preserve canonical URLs in Markdown. In both cases, a citation points to evidence; it does not guarantee that the source is correct.
What should happen when one source fails?
Mark the run degraded or failed, name the missing source, alert a human, and avoid silently replacing it with an unrelated search result. Retry with the same delivery key so recovery cannot create a duplicate brief.
