meta-arxiv-daily-digest-deck
GitHub通过arXiv API获取指定领域每日论文,生成结构化摘要并渲染为PPTX演示文稿,同时将内容持久化存储。支持手动触发或定时任务,用于制作每日arXiv晨间简报。
Trigger Scenarios
Install
npx skills add opensquilla/opensquilla --skill meta-arxiv-daily-digest-deck -g -y
SKILL.md
Frontmatter
{
"kind": "meta",
"name": "meta-arxiv-daily-digest-deck",
"always": false,
"triggers": [
"arxiv daily digest",
"arxiv digest deck",
"arxiv 日报",
"arxiv 晨刊"
],
"provenance": {
"origin": "opensquilla-original",
"license": "Apache-2.0"
},
"composition": {
"steps": [
{
"id": "fetch_arxiv",
"kind": "agent",
"with": {
"task": "Fetch the latest papers from arXiv's public API.\n\nDefault query: cs.CL OR cs.AI, sorted by submittedDate descending,\nmax_results=6. If the user's invocation contains a category override,\nhonor it (look for `cs.XX` patterns in the message).\n\nUser invocation:\n{{ inputs.user_message | xml_escape | truncate(200) }}\n\nURL template: `http:\/\/export.arxiv.org\/api\/query?search_query=<query>&sortBy=submittedDate&sortOrder=descending&max_results=6`\n\nUse the available HTTP fetch tool. Parse the Atom XML response and\nextract for each entry: id (with version), title, summary (the abstract),\nauthors (up to 5), pdf URL.\n\nReply with ONLY a JSON array on one line, no preamble:\n [{\"id\":\"...\", \"title\":\"...\", \"abstract\":\"...\", \"authors\":[...], \"pdf_url\":\"...\"}, ...]\n\nIf the fetch fails (HTTP error, parse error, empty result), reply with\nexactly: FETCH_FAILED: <one-line cause>\n"
},
"skill": "sub-agent"
},
{
"id": "digest_papers",
"kind": "agent",
"with": {
"task": "Write a structured digest for each paper. Skip if upstream is\nFETCH_FAILED — reply with `DIGEST_SKIPPED` in that case.\n\nPapers JSON from upstream:\n---\n{{ outputs.fetch_arxiv | truncate(10000) }}\n---\n\nFor each paper, output this exact block (separate papers with a line of `---`):\n\n## <Paper Title>\n**Authors**: <first 3 author names, then et al. if more>\n**arXiv ID**: <id>\n**Core claim** (1 sentence): <claim>\n**Method summary** (2-3 sentences): <how>\n**Key numbers** (if present): <metric: value, metric: value>\n**Why it matters** (1 sentence): <relevance>\n"
},
"skill": "summarize",
"depends_on": [
"fetch_arxiv"
]
},
{
"id": "render_deck",
"kind": "agent",
"with": {
"task": "Render the per-paper digest below into a PPTX deck. One slide per\npaper. Slide title = paper title. Slide body = the rest of that\npaper's digest block. Title slide first with text\n`arXiv Daily Digest — {{ inputs.user_message | xml_escape | truncate(80) }}`.\n\nDigest body:\n---\n{{ outputs.digest_papers | truncate(12000) }}\n---\n\nSave to: `{{ inputs.workspace_dir }}\/arxiv-daily\/digest.pptx`\n(overwrite OK; cron mode keeps only the latest, manual fire uses\nthe same name and the user can rename after if needed). Create\nthe `arxiv-daily\/` subdirectory if missing.\n\nReply with the absolute output path on a single line, no preamble.\n\nIf the digest is `DIGEST_SKIPPED`, reply: `RENDER_SKIPPED`."
},
"skill": "pptx",
"depends_on": [
"digest_papers"
]
},
{
"id": "persist",
"kind": "tool_call",
"tool": "memory_save",
"tool_args": {
"mode": "append",
"path": "memory\/arxiv-daily.md",
"content": "=== arxiv-daily digest ===\ninvocation: {{ inputs.user_message | xml_escape | truncate(200) }}\ndeck: {{ outputs.render_deck | truncate(200) }}\ndigest:\n{{ outputs.digest_papers | truncate(8000) }}"
},
"depends_on": [
"digest_papers",
"render_deck"
],
"tool_allowlist": [
"memory_save"
]
}
]
},
"description": "Fetch the day's top arXiv submissions in a chosen category, write a structured per-paper digest, render the digest as a PPTX deck (one slide per paper), and persist the digest to long-term memory. Use for a daily 'arxiv morning briefing' — manual fire or cron-scheduled.",
"meta_priority": 55
}
arXiv Daily Digest Deck (Meta-Skill)
A near-pure tool_call + linear DAG meta-skill: fetch arXiv via
the public Atom API, write a per-paper structured digest, render it
into a PPTX deck, and persist the digest into long-term memory under
the arxiv-daily topic.
Trigger surface
Fire manually with the English trigger arxiv daily digest or one of the
localized triggers listed in the frontmatter. Category override: include a
cs.XX token anywhere in the invocation.
Fallback
If fetch_arxiv fails (network or parse), the downstream steps
short-circuit by emitting _SKIPPED markers; no half-baked PPTX or
memory note is written. Operator can retry by re-invoking, or
manually run curl 'http://export.arxiv.org/api/query?…'.
Version History
- 7f72a32 Current 2026-07-05 18:40


