| name | article-content-summarizer |
| description | Use when an agent needs to fetch article pages, extract readable content, summarize article bodies, collect key points, find media candidates, localize summaries, or enrich archived RSS entries with article content. |
Article Content Summarizer
Overview
Use this skill to enrich article-level content before a daily brief, WebUI preview, or research workflow needs body summaries. Keep this separate from source maintenance, RSS ranking, and final research synthesis.
Workflow Selection
- For extracting article bodies, images, key points, and evidence snippets, use this skill.
- For ordinary RSS ranking or archive-first daily discovery, use
rss-ai-digest first, then run this skill when RSS summaries are too thin.
- For public trend discovery, use
public-trend-radar; use this skill only for article/page body enrichment.
- For source failures and registry quality, use
rss-source-curator.
- For deep synthesis after evidence is prepared, use
subscription-research-agent.
Runtime Command
Examples use subscription-research as a compatibility command. Before running commands, resolve the runtime command:
- When
DIGESTPILOT_BACKEND_URL is available, product actions such as content fetch, content summarization, or WebUI-backed enrichment may use the Backend task API first, then read the resulting workspace output.
- If the Backend API is unavailable, keep using the local runtime command fallback below. Do not require WebUI, cloud, or a hosted service in generic Agent environments.
- Use
DIGESTPILOT_RUNTIME_CMD when the environment provides a custom runtime command.
- Use
digestpilot-runtime when it is available on PATH.
- Use
subscription-research when only the legacy compatibility command is available on PATH.
- From a repository checkout without a linked command, replace
subscription-research with node packages/research-cli/dist/src/cli.js.
- Run
node scripts/doctor.mjs from the repository root to diagnose local runtime setup.
- If no runtime command is available but this repository or plugin package includes runtime source, run
node scripts/bootstrap-runtime.mjs, then retry the command.
Core Commands
Summarize one URL without requiring a workspace:
subscription-research content summarize \
--url https://example.com/article \
--limit 1
Summarize URLs from a Markdown or text file:
subscription-research content summarize \
--input article-urls.md \
--limit 20
Enrich a specific archived RSS article and persist into the local workspace:
subscription-research content summarize \
--workspace research-workspace \
--article-id ARTICLE_ID \
--refetch
Enrich recent high-scoring archived articles:
subscription-research content summarize \
--workspace research-workspace \
--since 48h \
--min-score 7 \
--limit 20
For bulk extraction before research evidence briefs, content fetch remains available:
subscription-research content fetch \
--workspace research-workspace \
--since 7d \
--min-score 7 \
--limit 50
Output Contract
Use JSON fields directly when feeding WebUI or another Agent:
title, author, published_at, url
clean_summary: readable extracted summary, not a fabricated AI conclusion
key_points: short body-derived points
evidence_snippets: source-backed body snippets for later citation
image_candidates and image_status
fetch_status: fetched, short_content, or failed
summary_status: content_excerpt or summary_unavailable
summary_source: extraction source, usually defuddle when the Node runtime can clean the page body, with readability as a fallback
localization_status: source_zh, not_translated, or unknown
persisted: whether workspace article_content was updated
The Node runtime should prefer Defuddle-style readable extraction for article bodies and metadata, then fall back to Mozilla Readability when Defuddle cannot produce enough text. Preserve the extractor provenance in summary_source so downstream Agents can diagnose content quality.
Detail Page Handoff
Use this skill to prepare article-level enrichment for DigestPilot detail pages. The detail page is the primary reader-facing surface for extracted body content; RSS lists and ordinary daily pages should stay compact.
Agents should enrich only bounded candidates:
- a single article opened for detail review
- selected daily candidates, usually top 5-10
- research evidence candidates
- watched topics where the user asked for deeper context
Do not run full-text extraction for every RSS entry by default.
When writing to WebUI or another Agent, preserve these detail-page fields when available:
content_status: missing, fetched, short_content, or failed
clean_summary
key_points
evidence_snippets
image_candidates
reading_time_minutes
source_url
extraction_error, only for detail/status surfaces
If the WebUI or Agent runtime has no real Backend task or command bridge, do not claim that the user can trigger extraction from the interface. Show the current extraction state and leave execution to an Agent or runtime command.
Output Guidance
Do not invent article body summaries when extraction fails. Report fetch_status: failed and use the error message as an upstream issue.
Do not claim an AI-written summary when the runtime only produced content_excerpt. If the user needs a polished localized summary, use the extracted content as evidence and write the summary as the Agent, preserving source links and failure states.
When WebUI cards lack images, use image_status honestly. Do not add stock images or placeholders.
When summaries remain English for a Chinese brief, mark that as localization_status: not_translated and either translate from extracted content or record it as a follow-up quality issue.