claude/for
Search
Subscribe
Claude Code

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:

FieldWhat it means
published_atwhen the publisher says the page appeared
updated_atwhen the page says it changed
event_atwhen the reported event actually happened
retrieved_atwhen 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:

  1. exact canonical URL;
  2. exact normalized content hash;
  3. publisher plus stable feed or API item ID;
  4. candidate event cluster using entity, action, object, and event date;
  5. 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:

FieldExample value
claim_idclaim-017
claim_textone bounded factual statement
evidence_urlcanonical primary URL
evidence_typeprimary_official
verification_statusprimary_confirmed
contradiction_groupnull 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:

  1. Could feeds and a deterministic template do the whole job?
  2. What observable condition means success?
  3. Which exact sources and dates may it read?
  4. What may it write? Start with one private brief and append-only logs.
  5. Are credentials dedicated and read-only where supported?
  6. What caps fetches, searches, model calls, time, and spend?
  7. Which manifest, URLs, hashes, and receipt prove the run?
  8. Where do task-level failures alert a human?
  9. How do you pause triggers, revoke access, and disable delivery?
  10. 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.

A polished partial brief is still partial. The failure test passes only when the missing source is visible. It does not prove how every real outage, rate limit, authentication error, or publisher redesign will behave.

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.

One Claude move in your inbox, every Sunday

Four minutes, tested on a real job, then back to your weekend. Free.