Skip to content

nanocoai/journalist

v1.0.0

Journalist agent: beat monitoring, pitch evaluation, source finding, and interview prep

Journalist Agent Template

A NanoClaw agent template for working journalists: monitor a beat, deliver a morning digest, triage story pitches, find expert sources, and prep interviews. It does the research, with strict sourcing rules and no fabrication; the journalist writes, verifies, and publishes.

Layout

journalist/
├── plugin.json                     # Agent Plugins manifest (marks the folder as a plugin)
├── mcp.json                        # MCP server (Apify X scraper): placeholder env value, no secrets
├── ai.nanoco.nanoclaw/
│   ├── context/
│   │   └── instructions.md         # the agent's standing brief (NanoClaw extension dir)
│   └── tasks/
│       └── morning-digest.md       # daily 9 AM digest (created PAUSED; see below)
├── skills/
│   └── journalist-agent/           # one skill: the reporting workflow (auto-triggers on newsroom tasks)
│       ├── SKILL.md                #   entry: operating logic + routing to the plays below
│       └── references/
│           ├── onboard-journalist.md   #   learn the beat + preferences
│           ├── monitor-beat.md         #   beat monitoring + morning digest
│           ├── evaluate-pitches.md     #   score inbound pitches (with tracking ledger)
│           ├── find-sources.md         #   find + vet experts (grows a source book)
│           ├── prepare-interview.md    #   one-page prep docs
│           ├── draft-story.md          #   drafts + editor pitches, on explicit request only
│           └── credentials.md          #   connecting the Apify key via OneCLI (read on auth errors)
└── README.md                       # this file

Stamp an agent from this template

ncl groups create --template media/journalist --name "Journalist Agent"

Then wire it to a channel as usual (/manage-channels). On first use the agent gets to know you in a short chat: your beat (topics, angles, watchlist, outlet) and any working preferences. It stores the profile in its workspace; every digest and pitch verdict keys off it. Over time it also builds a pitch ledger (so the same inbound pitches are never re-read) and a source book of the experts you approve.

The morning digest (scheduled task)

tasks/morning-digest.md defines a daily 9 AM digest of what's moving on your beat. Per NanoClaw's template-task rules it is created paused: stamping never starts background work without consent. Activate it with:

ncl tasks list --group <agent-group-id> --status paused
ncl tasks resume <task-id>

Or just ask the agent to activate it.

Requires a NanoClaw build with template scheduled tasks; on older builds the tasks/ folder is ignored and you can ask for a digest on demand ("what's new on my beat?").

Credentials: via OneCLI, not env vars

No API keys live in this template. The OneCLI gateway holds credentials in its vault and injects them into outbound HTTPS calls at the proxy boundary. mcp.json carries command + args and never a real key.

Exception: Apify's placeholder env (leave it as-is). @apify/actors-mcp-server needs APIFY_TOKEN to be present to boot, so mcp.json sets it to the dummy value "placeholder". It is not the credential: once you connect Apify, the real token is injected automatically for api.apify.com at request time. Never replace it with a real token.

Register the secret in the OneCLI web UI at http://127.0.0.1:10254 (or let the agent hand you a prefilled connect link the first time a call fails):

ServiceAPI host to matchAuth style*Where to get the key
Apifyapi.apify.comAuthorization: Bearerconsole.apify.com → Settings → API & Integrations

* Confirm the exact header against each provider's current API docs when you configure the vault entry.

Apify cost note

The X scraper (apidojo/tweet-scraper) is pay-per-result and requires a paid Apify plan; it does not run on Apify's free tier. Without one, the digest runs on web search alone. The skill caps sweeps by default (≤5 queries × ≤100 posts per digest run) and prefers plain web search for anything the open web can answer. Run one digest, check the run cost in the Apify console, then decide your schedule.

Email is optional (and not part of this template)

Inbox pitch triage and past-contact search need your mailbox, which a template cannot ship: connect Gmail (or another provider) yourself through OneCLI. Without it, pitch triage still works on anything you paste or forward into the chat; the scoring rubric is the same.

Upgrade path for social coverage

X + open web covers the v1 sourcing loop. If you need more networks or hit reliability limits, the managed upgrade path is Bright Data's social MCP: swap or add it in mcp.json and register its host in OneCLI the same way. Avoid cookie/session-based LinkedIn scraping in any setup; it violates LinkedIn's terms.