AI Daily Card (Beta)
Create the two fixed deliverables for the current Asia/Shanghai day:
output/AI日报-今日.md
output/AI日报-今日.png
The project containing this file is the canonical Skill root. Resolve paths from
that root even when the Skill was discovered through a symlink.
Idempotency gate
Before any network request or write, read only the Markdown frontmatter. If
date equals today in Asia/Shanghai and status is success, stop silently.
Do not invoke the collector, renderer, package manager, or any network tool.
If the file is missing, stale, or not successful, run the complete workflow.
Complete workflow
Ensure dependencies were installed with npm ci and
npx playwright install chromium. Do not silently install during a Scheduled
run; report the missing dependency.
Collect the previous 24 hours into .runtime/raw.json:
python3 scripts/fetch_aihot.py \
--state-dir .runtime \
--output .runtime/raw.json
A cache hit is allowed. An empty result, missing field, or interrupted page is
a hard failure.
Read .runtime/raw.json and curate by judgment, not score alone:
deduplicate the same event, choose two headlines, then target 15–18 unique
items across the configured sections. A weak section may be empty or omitted.
Write .runtime/curated.json using
the curated contract. Follow these evidence
rules:
- Keep each selected item's
display_title exactly equal to one source title.
- Build
note only by joining one or two exact, contiguous excerpts from the
source summaries; list the same excerpts in note_evidence.
- Never add text for an empty summary.
- Preserve the canonical source item's exact
url, source, publishedAt,
and score; include every merged source in source_urls.
- Do not repeat a headline in a section. Do not invent a category, fact, or
number. If traceability is uncertain, omit the item.
Render and validate. The renderer verifies the raw SHA, exact source fields,
evidence excerpts, every displayed numeric token, unique counts, contrast,
required Noto Sans SC font, 750px CSS width, 1500px PNG width, and horizontal
overflow before replacing fixed outputs:
node scripts/render_card.mjs \
--input .runtime/curated.json \
--template templates/card.html \
--state-dir .runtime \
--output-dir output
Report both fixed paths and the renderer result. Leave human review and group
sending to the user.
Curation shape
- Default sections:
模型与产品, 芯片与算力, 商业与资本, 研究与观点,
机器人与硬件.
- The target is two headlines plus 13–16 section items, 15–18 total.
- Merge duplicate coverage by keeping one displayed item and attaching all
relevant
source_urls; never combine unsupported claims.
Customization
Set brand.name, theme.accent, theme.background, and sections[].name in
the curated JSON. Contrast checks still apply. To replace AI Hot, provide a JSON
source conforming to the input contract and keep
equivalent raw provenance.
Boundaries and attribution
- Footer attribution must include
AI Hot 聚合(aihot.virxact.com).
- Never use
aihot-skill/* as the User-Agent.
- Never read or modify CC
daily-startup, the knowledge-incubation pipeline,
~/.claude/skills/, Slack, WeChat, or any group-send automation.
- Do not push, publish, deploy, or create a remote repository.
- This beta Skill is licensed under CC BY 4.0.
1---2name: ai-daily-card3description: Generate a fixed daily Markdown and 1500px PNG AI news card from the AI Hot public API when the user asks for today's AI daily card or invokes $ai-daily-card. Keeps source-level provenance and never sends the result to a group.4---56# AI Daily Card (Beta)78Create the two fixed deliverables for the current `Asia/Shanghai` day:910- `output/AI日报-今日.md`11- `output/AI日报-今日.png`1213The project containing this file is the canonical Skill root. Resolve paths from14that root even when the Skill was discovered through a symlink.1516## Idempotency gate1718Before any network request or write, read only the Markdown frontmatter. If19`date` equals today in `Asia/Shanghai` and `status` is `success`, stop silently.20Do not invoke the collector, renderer, package manager, or any network tool.2122If the file is missing, stale, or not successful, run the complete workflow.2324## Complete workflow25261. Ensure dependencies were installed with `npm ci` and27 `npx playwright install chromium`. Do not silently install during a Scheduled28 run; report the missing dependency.292. Collect the previous 24 hours into `.runtime/raw.json`:3031 ```bash32 python3 scripts/fetch_aihot.py \33 --state-dir .runtime \34 --output .runtime/raw.json35 ```3637 A cache hit is allowed. An empty result, missing field, or interrupted page is38 a hard failure.393. Read `.runtime/raw.json` and curate by judgment, not score alone:40 deduplicate the same event, choose two headlines, then target 15–18 unique41 items across the configured sections. A weak section may be empty or omitted.424. Write `.runtime/curated.json` using43 [the curated contract](references/curated-schema.md). Follow these evidence44 rules:45 - Keep each selected item's `display_title` exactly equal to one source title.46 - Build `note` only by joining one or two exact, contiguous excerpts from the47 source summaries; list the same excerpts in `note_evidence`.48 - Never add text for an empty summary.49 - Preserve the canonical source item's exact `url`, `source`, `publishedAt`,50 and `score`; include every merged source in `source_urls`.51 - Do not repeat a headline in a section. Do not invent a category, fact, or52 number. If traceability is uncertain, omit the item.535. Render and validate. The renderer verifies the raw SHA, exact source fields,54 evidence excerpts, every displayed numeric token, unique counts, contrast,55 required Noto Sans SC font, 750px CSS width, 1500px PNG width, and horizontal56 overflow before replacing fixed outputs:5758 ```bash59 node scripts/render_card.mjs \60 --input .runtime/curated.json \61 --template templates/card.html \62 --state-dir .runtime \63 --output-dir output64 ```656. Report both fixed paths and the renderer result. Leave human review and group66 sending to the user.6768## Curation shape6970- Default sections: `模型与产品`, `芯片与算力`, `商业与资本`, `研究与观点`,71 `机器人与硬件`.72- The target is two headlines plus 13–16 section items, 15–18 total.73- Merge duplicate coverage by keeping one displayed item and attaching all74 relevant `source_urls`; never combine unsupported claims.7576## Customization7778Set `brand.name`, `theme.accent`, `theme.background`, and `sections[].name` in79the curated JSON. Contrast checks still apply. To replace AI Hot, provide a JSON80source conforming to [the input contract](references/input-schema.md) and keep81equivalent raw provenance.8283## Boundaries and attribution8485- Footer attribution must include `AI Hot 聚合(aihot.virxact.com)`.86- Never use `aihot-skill/*` as the User-Agent.87- Never read or modify CC `daily-startup`, the knowledge-incubation pipeline,88 `~/.claude/skills/`, Slack, WeChat, or any group-send automation.89- Do not push, publish, deploy, or create a remote repository.90- This beta Skill is licensed under CC BY 4.0.