Always create a dedicated static HTML reading workspace for each article-intelligence run unless the user explicitly asks for chat-only output.
Save the HTML in the current task's user-facing outputs/ directory when one is provided by the environment. Use a timestamped filename such as:
article-intelligence-YYYY-MM-DD-HHMM.html
The HTML report must be the primary deliverable. The chat response should briefly summarize what was generated and link to the HTML file.
The report must be an interactive static reading workspace, not a long stacked document. It must include:
Use scripts/build_article_report.py to turn a structured JSON analysis file into the HTML report.
If the requested date range has no matching articles, generate an empty-result HTML report for that exact range. Do not add older articles, fallback recommendations, or nearby posts unless the user explicitly asks for them.
YYYY-MM-DD dates.scripts/article_discovery.py.references/sources.json.--today for daily mode.--since YYYY-MM-DD --until YYYY-MM-DD for a custom time window.--source all unless the user names a specific source.work/ with the shape described below.scripts/build_article_report.py --input work/analysis.json --output .Run from the skill directory or pass the config path explicitly:
python scripts/article_discovery.py --today
python scripts/article_discovery.py --since 2026-06-01 --until 2026-06-09
python scripts/article_discovery.py --source langchain --days 7 --limit 20
python scripts/article_discovery.py --source all --since 2026-06-01 --output work/articles.json
python scripts/build_article_report.py --input work/analysis.json --output outputs/article-intelligence-2026-06-09-0930.html
Create this JSON after article discovery and reading. Keep values concise but substantive.
{
"title": "AI Agent Article Intelligence",
"generated_at": "2026-06-09 09:30",
"date_range": "2026-06-09 to 2026-06-09",
"summary": "No articles were published today; nearest relevant articles are included.",
"trend_judgment": "Cross-article trend judgment.",
"articles": [
{
"id": "stable-slug",
"title": "Article title",
"source": "LangChain Blog",
"published_date": "2026-06-05",
"url": "https://example.com/article",
"relevance": "High",
"one_line_thesis": "Short thesis.",
"analysis": {
"thesis": "Main thesis.",
"key_claims": ["Claim 1", "Claim 2"],
"evidence": ["Evidence or support."],
"assumptions": ["Assumption."],
"missing_context": ["Missing context."],
"implications": ["Practical implication."]
},
"personal_take": "Clearly labeled informed opinion.",
"original_notes": "Clean article notes, short excerpts, or paraphrased original-content map."
}
]
}
The script returns JSON records:
{
"source": "langchain",
"title": "Example title",
"url": "https://...",
"published_date": "2026-06-05",
"date_confidence": "metadata",
"matched_from": "article"
}
If discovery returns no results, report no matches for the requested window and still generate the HTML report. Some blogs publish with local time, delayed index updates, or metadata that differs from visible dates; mention that only as a caveat, not as a reason to silently broaden the range.
Keep the final chat response short because the HTML is the main artifact:
已生成 HTML 报告:[article-intelligence-YYYY-MM-DD-HHMM.html](...)
今天是否有新文章:...
本次纳入分析:...
我的核心判断:...
共 1 个版本