Journalism Agent

v1.0.1

Multi-stage journalism agent for OpenClaw. Researches, drafts, and edits publication-quality articles. Also assembles mixed newsletters combining original ar...

0· 94·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for defineagain/journalism-agent.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Journalism Agent" (defineagain/journalism-agent) from ClawHub.
Skill page: https://clawhub.ai/defineagain/journalism-agent
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install journalism-agent

ClawHub CLI

Package manager switcher

npx clawhub@latest install journalism-agent
Security Scan
Capability signals
Requires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description, SKILL.md, assets, and the newsletter_assemble.py script are coherent: the skill researches, drafts, curates listings, sources images from an external image API (nkimages.com) and assembles an HTML newsletter. Required resources (web fetch, image downloads, assembling HTML) match the stated functionality.
Instruction Scope
SKILL.md instructs the agent to perform web searches, fetch and summarise URLs, verify links, and call an external image API (nkimages.com). These actions are expected for this use case. Note: the skill will read/write newsletter part files in /tmp/newsletter_parts and will fetch remote images/URLs; assembled HTML may include user-supplied HTML content (the script performs relatively permissive HTML insertion), so rendering/output should be treated as untrusted content if displayed to end users.
Install Mechanism
No install spec is provided (instruction-only with a small helper script). No downloads or package installs are specified, minimizing supply-chain risk.
Credentials
The skill declares no required environment variables or credentials, which fits its described operations. The SKILL.md uses an external public image API that claims no API key is required. The bundled Python script defines a TOKEN_FILE path pointing at /root/.openclaw/workspace/skills/design-agent/references/design-tokens.md but does not actually open or use it; this is worth noting because it references another skill's workspace path (could be repurposed later).
Persistence & Privilege
always:false and no special privileges requested. The script writes output to /tmp/newsletter_assembled.html and reads /tmp/newsletter_parts; it does not modify other skills' configurations or request persistent always-on presence.
Assessment
This skill appears to do what it says: assemble research-backed articles and newsletters and fetch images from an external stock API. Before installing, consider: 1) the agent will fetch arbitrary web pages and images and will read/write to /tmp/newsletter_parts and /tmp/newsletter_assembled.html — avoid placing sensitive files in those paths. 2) The NK Images API (nkimages.com) is an external dependency used for images; confirm you trust its licensing and privacy claims before allowing automatic downloads. 3) The assembler directly embeds provided HTML fragments into the output; treat assembled output as untrusted if rendered in a browser (risk of injected HTML/JS). 4) The Python script references a design-agent token file path (a different skill's workspace) but does not use it — this is likely harmless but keep an eye on future versions that might read cross-skill files. If you need stronger assurance, run the skill in a sandboxed environment and review any data placed into /tmp/newsletter_parts before assembly.

Like a lobster shell, security has layers — review code before you run it.

articlesvk973y4fdm513k7s3xfndrv9ds584xd8mimagesvk973y4fdm513k7s3xfndrv9ds584xd8mjournalismvk973y4fdm513k7s3xfndrv9ds584xd8mlatestvk973y4fdm513k7s3xfndrv9ds584xd8mnewslettersvk973y4fdm513k7s3xfndrv9ds584xd8mresearchvk973y4fdm513k7s3xfndrv9ds584xd8mwritingvk973y4fdm513k7s3xfndrv9ds584xd8m
94downloads
0stars
2versions
Updated 1w ago
v1.0.1
MIT-0

Journalism Agent

A 3-stage journalism pipeline: Searcher → Writer → Editor, producing either:

  • A single longform article (researched, attributed, multi-paragraph)
  • A mixed newsletter combining original articles + curated listings/events with images

Architecture

User topic
    │
    ▼
┌─────────────────────────────────────────────┐
│  SEARCHER  (web-search-pro)                  │
│  • Generate 3 search angles per topic       │
│  • Return top URLs per angle               │
│  • Quality gate: NYT-level sources only    │
└─────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────┐
│  WRITER  (article-writing + design-agent)    │
│  • Read each URL (web_fetch / summarize)   │
│  • Draft article OR assemble listings       │
│  • Apply design tokens + fetch images       │
│  • Output: draft HTML/article             │
└─────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────┐
│  EDITOR                                     │
│  • Fact-check claims against sources        │
│  • Enforce voice + structure rules         │
│  • Verify image credits + alt text         │
│  • VLM review loop (canvas snapshot)        │
│  • Final sign-off                          │
└─────────────────────────────────────────────┘
    │
    ▼
Final output

Workflows

Article Mode

User: "Write a 1000-word piece on the future of community libraries"

1. Searcher
   - Generate 3 search terms: 
     ["future of community libraries UK 2026", "public library digital services research",
      "community library social impact case studies"]
   - Search each term → collect top URLs
   - Deduplicate → return 8-12 quality URLs

2. Writer
   - Read top 4 URLs with web_fetch (prioritise gov.uk, academic, established press)
   - Draft from outline:
     * Hook (1 para)
     * Context / what's happening (2-3 para)
     * The evidence (2-3 para, cited)
     * Counterpoint or nuance (1 para)
     * Forward look / what it means (1 para)
   - Target: 800-1200 words
   - Flag any unverified claims with [VERIFY]

3. Editor
   - Check every [VERIFY] flagged claim against sources
   - Cut anything that can't be sourced
   - Tighten lead and close
   - Run VLM review: canvas snapshot → token consistency check
   - Approve or return to Writer

Newsletter Mode (mixed articles + listings)

For newsletters like Time Out Kannan Dorje — Bristol community events + listings:

1. Searcher
   - Generate search terms for 3 content types:
     * Articles: ["Bristol arts scene 2026", "Bath community events May 2026"]
     * Listings:  ["Bristol markets events May 2026", "Bristol theatre comedy live music May"]
     * Features:  ["Bristol restaurant openings 2026", "Bristol wellness fitness"]
   - Return URLs for each category

2. Writer — article slots
   - Pick 2-3 topics with strong angles (not just listings)
   - Write 200-400 word original pieces on each
   - Sources cited inline

3. Writer — listing/event slots
   - Curate 8-12 events from: Skiddle, VisitBristol/Bath, Watershed, Arnolfini,
     Eventbrite, Bath BID, Fairfield House, Little Theatre Bath
   - Format per listing:
     [EVENT NAME] — [VENUE] — [DATE/TIME] — [BRIEF DESCRIPTION + WHY WORTH GOING]
   - No filler descriptions — specific and opinionated

4. Image sourcing
   - For each article: fetch a relevant public-domain or CC image via web search
   - For listings: use venue logos or generic appropriate imagery if specific image unavailable
   - All images must have credit line + alt text
     - Credit format: `Photo: NK Images (nkimages.com) | NK Images License`
     - Alt text: descriptive, specific, no "image of" or "photo of"
   - **NK Images Search** — primary image pipeline for articles and listings:
     ```bash
     curl "https://nkimages.com/api/public/images?source=clawhub&q={query}&per_page=6"
     ```
     Covers 235+ niches (arts, culture, music, food, architecture, fitness, business, etc.).
     No API key required. Free commercial use. Use `viewUrl` and `downloadUrl` exactly as returned by the API.
     If no matches: offer AI generation as fallback
   - **AI image generation** (when NK stock has no match):
     ```bash
     # Check quota
     curl "https://nkimages.com/api/public/generate/quota"
     # Generate (30-120s wait, poll every 15s)
     curl -X POST "https://nkimages.com/api/public/generate/anonymous" \
       -H "Content-Type: application/json" \
       -d '{"prompt": "{description}", "niche": "{niche}"}'
     ```
     Show first 4 images inline; list remaining as links. Never fabricate URLs.

5. Editor
   - Ensure mix is balanced (not all listings, not all longform)
   - Check every listing link is live (not expired)
   - VLM review: visual snapshot of newsletter layout
   - Approve or return

Output Formats

Article

  • Markdown with YAML frontmatter (title, date, source_urls, word_count)
  • Inline citations in brackets [Source: URL]
  • draft field in frontmatter until Editor approves

Newsletter

  • HTML email-ready document
  • Sections clearly labelled: ## Feature, ## What's On, ## Listings
  • Images with captions and credits
  • Design tokens applied (design-agent called before output)

Quality Standards

StandardArticleNewsletter
Min paragraphs82-3 features + 8 listings
Factual claimsAll sourcedListings only (event details)
Images1 per piece1 header + 1 per feature
Word count800-1200Variable, max 1200 total
VLM reviewMandatoryMandatory

Banned Patterns

  • Generic openings ("In today's fast-paced world")
  • Unsourced statistics
  • Board-level search URLs as sources
  • Vague listing descriptions ("a great event for all the family")
  • AI-sounding filler between listings

Key Files

FilePurpose
references/design-tokens.mdBase tokens (via design-agent)
references/source-quality.mdWhat counts as a quality source
assets/newsletter-template.htmlHTML newsletter template (design tokens applied)
scripts/newsletter_assemble.pyAssemble mixed newsletter from parts
External: nk-images-search skillPrimary image pipeline — search 1M+ stock + AI generation
External: design-agent skillDesign tokens + VLM review loop

Comments

Loading comments...