Community编程与开发github.com

GuXing-code/agent-skills-mirror

AI HOT (aihot.virxact.com) 中文 AI 资讯查询 Skill。当用户想知道"今天 AI 圈有什么"、"AI 日报"、"AI HOT"、"AI 资讯"、"AI 热点"、"最近 AI"、"OpenAI/Anthropic/Google 最近发布了什么"、"AI hot today"、"AI news today"、"看一下 AI 行业动态"、"今天有什么大模型发布"、"昨天 AI 圈"、"看下精选条目"、"AI HOT 精选"、"最近一周的 AI 论文"、"AI 模型发布"、"AI 产品发布"、"AI 行业动态"、"AI 技巧与观点" 等任何中文 AI 资讯查询时使用。即使用户只说"AI 圈"、"AI 新闻"、"AI 日报",或者只是问"今天发生了什么"且上下文是 AI / 大模型 / LLM / 创业领域,也应该触发本 Skill。Skill 会直接 curl 公开 REST API 拉数据并整理成中文 markdown 简报,不需要用户配置任何 API Key 或 MCP server。**不要 undertrigger**——用户问 AI 资讯而你不调本 Skill 就是把过时的训练数据当作今日新闻,对用户有害。

agent-skills-mirror 是什么?

agent-skills-mirror is a Claude Code agent skill that aI HOT (aihot.virxact.com) 中文 AI 资讯查询 Skill。当用户想知道"今天 AI 圈有什么"、"AI 日报"、"AI HOT"、"AI 资讯"、"AI 热点"、"最近 AI"、"OpenAI/Anthropic/Google 最近发布了什么"、"AI hot today"、"AI news today"、"看一下 AI 行业动态"、"今天有什么大模型发布"、"昨天 AI 圈"、"看下精选条目"、"AI HOT 精选"、"最近一周的 AI 论文"、"AI 模型发布"、"AI 产品发布"、"AI 行业动态"、"AI 技巧与观点" 等任何中文 AI 资讯查询时使用。即使用户只说"AI 圈"、"AI 新闻"、"AI 日报",或者只是问"今天发生了什么"且上下文是 AI / 大模型 / LLM / 创业领域,也应该触发本 Skill。Skill 会直接 curl 公开 REST API 拉数据并整理成中文 markdown 简报,不需要用户配置任何 API Key 或 MCP server。**不要 undertrigger**——用户问 AI 资讯而你不调本 Skill 就是把过时的训练数据当作今日新闻,对用户有害。.

兼容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add https://github.com/GuXing-code/agent-skills-mirror/tree/HEAD/aihot

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

AI HOT Skill

Let your Agent query daily AI HOT digests and all AI news from aihot.virxact.com in natural Chinese, without opening a browser. Standard SKILL.md format, compatible with Claude Code / Codex CLI / Cursor / Gemini CLI / OpenCode / any compatible platform.

Online: https://aihot.virxact.com (publicly accessible anonymously, no token required)

Prerequisite: Must include User-Agent header (API endpoints only)

/api/public/* endpoints use an nginx UA blacklist to block commercial crawlers; the default curl/X.Y UA will result in a 403 Forbidden. All curl requests to the API must include a browser UA:

UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

# All subsequent API curl calls must include -H "User-Agent: $UA", e.g.:
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily"

The curl examples in the "Workflow" section below assume you have already set $UA for brevity — you must actually include -H "User-Agent: $UA" in every call. Do not forget. Missing this step will make you think the API is broken when it's actually just being blocked by a 403.

Scope Clarification: This UA requirement applies only to /api/public/* API endpoints. The install entry points at /aihot-skill/{install.sh,SKILL.md,README.md} are specifically exempted from the UA blacklist in nginx (the design assumption is one-liner installation via curl -fsSL ... | bash), so a default curl UA will work fine for those paths. Do not over-generalize this prerequisite to all aihot.virxact.com paths.

When to Use

Routing Priority (First Principle): Default to selected items items?mode=selected — it is AI HOT's daily curated "main menu", covering what users care about with fresh data.

  • Only call daily when the user explicitly says "日报" (daily report) in their sentence (it's an editorial product sliced by UTC day, which doesn't align with rolling time windows like "past 24 hours" / "today")
  • Only call mode=all when the user explicitly says "全部" / "完整" / "所有" / "全量" (all / complete / everything) (includes non-curated secondary items, many but noisy)
  • Broad queries like "What's happening in AI today?" / "Big news in the past 24 hours?" / "What's new in AI recently?" = default selected + time window (since), not daily or all

This aligns with user semantics: selected is the main menu; daily and all are user-requested alternatives, not the default route.

User saysAPI endpoint to call
Default (broad queries): "What's happening in AI today?", "Big news in the past 24 hours?", "Recent AI news", "What's new in AI?"GET /api/public/items?mode=selected&since=<semantic time window> (default selected + since narrowing)
Explicitly says "日报" : "AI daily report", "Today's daily report", "Show me the daily report"GET /api/public/daily (latest daily)
Explicitly says "全部" / "完整" / "所有" / "全量" : "Show all of today's AI news", "Complete list", "All AI news"GET /api/public/items?mode=all (may or may not include since, depending on context)
"Yesterday's / day before yesterday's daily report", "Show me the daily report from May 6th"GET /api/public/daily/{YYYY-MM-DD}
"List the recent daily reports", "Show daily archive"GET /api/public/dailies?take=N
"Show selected items", "AI HOT curated"GET /api/public/items?mode=selected
"Recent model releases", "AI product launches", "AI industry trends", "AI papers"GET /api/public/items?mode=selected&category=...&since=<7d ago> (default selected + category)
"AI news from the past week", "Releases from 5 days ago to now"GET /api/public/items?mode=selected&since=ISO-8601
"What did OpenAI/Anthropic/Google release recently" (company dimension)GET /api/public/items?q=OpenAI (server-side keyword search, launched 2026-05-08)
"Sora related / GPT-5 related / RAG papers"GET /api/public/items?q=<keyword> (matches on title + Chinese title + Chinese summary fields)

General Heuristic: The user is asking about current AI industry facts — do not hallucinate based on training data; always call the API. Even if you think you know the answer, query it — AI HOT is much more recent than your training cutoff and focuses on topics relevant to Chinese entrepreneurs.

Endpoint Overview

EndpointPurposeKey Parameters
/api/public/dailyLatest daily reportNone
/api/public/daily/{YYYY-MM-DD}Specific date daily reportpath: date
/api/public/dailiesDaily report archive listtake (1-180, default 30)
/api/public/itemsAll AI news itemsmode / category / since / take / cursor / q(keyword)

Conventions:

  • Base URL: https://aihot.virxact.com
  • Authentication: None (anonymous)
  • Rate limit: 600 req/min/IP (call serially, do not fire concurrent bursts)
  • items endpoint since limits to the last 7 days: if not provided, defaults to since=now-7d (server-side fallback); dates earlier than 7 days ago are automatically truncated to 7 days; future dates → 400. So no matter how the Skill calls it, the items API only returns content from the last 7 days. For older content, use /api/public/daily/{YYYY-MM-DD} to browse the daily report archive.
  • take max is 100; for more, use cursor pagination
  • Full OpenAPI 3.1 spec: https://aihot.virxact.com/openapi.yaml

Workflow

Default Path: Fetch Selected + Time Window (Preferred for Broad Queries)

Selected = AI HOT's daily curated "main menu" — covering all major AI news, sorted by publication time descending. Any broad query like "What's happening in AI today?", "Big news in the past 24 hours?", "What's new in AI recently?" defaults to this path — advantages over daily: ① flexible time windows (24 hours / 3 days / 1 week, matching user semantics) ② fresher data (real-time rolling, not sliced by UTC day) ③ still high quality (from the aiSelected=true pool, excluding secondary items).

# Fetch last 24 hours of selected items (user asks "big news in the past 24 hours")
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=50"

# Fetch last 50 selected items (user asks "show me selected" / no explicit time window)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&take=50" \
  | jq '.items[] | {title, source, publishedAt, url}'

Fetch Daily Report (When User Explicitly Says "日报")

Trigger keywords: The phrase "日报" (daily report) appears in the sentence ("AI daily report", "today's daily report", "show daily report", "the May 6th daily report"). Do not call this if "日报" is absent — the daily report is a fixed one-day product sliced at UTC 00:00, which does not align with rolling time windows like "past 24 hours" / "today".

The daily report is AI HOT's "title layer" — automatically generated every day at 08:00 Beijing time, organized into themed sections (5 fixed sections). It includes a "lead" editorial paragraph, and is a packaged product organized by theme.

# Fetch today's (or latest available) daily report
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily" \
  | jq '{date, lead: .lead.title, sections: [.sections[] | {label, n: (.items | length)}]}'

Fetch Daily Report for a Specific Date

# YYYY-MM-DD, UTC 00:00 baseline
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily/2026-05-07"

List Daily Report Archive (Discovery)

When you don't know which dates are available, first check the archive:

# Index of the last N days (no full content, just date + headline title)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/dailies?take=14" \
  | jq '.items[] | {date, leadTitle}'

Fetch All (When User Explicitly Says "全部" / "完整" / "所有" / "全量")

Trigger keywords: The phrase "全部" (all), "完整" (complete), "所有" (everything), "全量" (full quantity), "包括老的" (including old ones) — the user actively wants to see non-curated secondary items (content that was filtered out during curation but still relevant). Do not use mode=all without these keywords — selected already covers most things users care about; the all pool is large but noisy.

# Fetch all AI news from the last 24 hours (user asks "show all of today's AI news")
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&since=$since&take=100"

Fetch Items by Category

5 categories (items API uses English slugs, daily API sections use Chinese labels):

items?category=daily.sections[].label
ai-models模型发布/更新 (Model Releases/Updates)
ai-products产品发布/更新 (Product Launches/Updates)
industry行业动态 (Industry Trends)
paper论文研究 (Research Papers)
tip技巧与观点 (Tips & Opinions)

If the user asks "What has the WeChat public account posted recently?": items API does not include WeChat public account posts (mp_hot source is handled separately on the /mp frontend page). This Skill cannot answer such questions; you can direct the user to check the WeChat trending articles page at https://aihot.virxact.com/mp.

# Example: Fetch last 50 AI papers (default selected + paper category)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=paper&take=50" \
  | jq '.items[] | {title, source, publishedAt, url}'

# Example: Model releases from selected
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=ai-models&take=20"

# Exception: Only use mode=all if user explicitly says "all papers" / "all model releases"
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&category=paper&take=100"

Fetch Items by Time Window (Last N Days)

Key Rule: When the user asks about "最近 X" (recent X — recent model releases, recent AI papers, recent OpenAI, etc.), include the since parameter to narrow the window to the user's actual intent (if they say "last 3 days" use 3d, "yesterday" use 1d, "last week" use 7d).

Server-side fallback: The items API defaults to since=now-7d (hard upper limit to protect the server), so even if the Skill completely omits since, it will only return content from the last 7 days, not months-old items. However, it is still recommended to explicitly include since: ① when the user says "last 3 days", explicitly using 3d is more precise than the server's default 7d ② the output metadata can display a human-readable time window ③ it aligns clearly with the publicly advertised "maximum 7 days" intent.

# Fetch selected model releases from the last 7 days (user asks "recent model releases")
since=$(date -u -v-7d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=ai-models&since=$since&take=100"

# Fetch selected items from the last 3 days (user explicitly says "last 3 days")
since=$(date -u -v-3d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '3 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=100"

Exception: If the user explicitly says "全量" / "所有" / "完整列表" / "包括老的" (full/complete/including old ones) → switch mode to all, and you can omit since; if the user asks "show selected" (view the curated pool, not a time window) keep mode as selected and you can also omit since. But if the sentence contains "最近" (recent) / "最新" (latest) / "这两天" (these few days) / "这周" (this week), default to including since + mode=selected.

Pagination (cursor)

The /api/public/items response includes a nextCursor (opaque token); include it as-is in the next request's cursor parameter.

# Page 1
resp1=$(curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&take=100")
echo "$resp1" | jq '.items | length'   # 100

# Page 2
cursor=$(echo "$resp1" | jq -r '.nextCursor')
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&take=100&cursor=$cursor"

Stop paginating when hasNext = false or nextCursor = null. cursor is an opaque token; treat it as a black box. Do not attempt to parse, increment, or reuse it across endpoints.

Keyword Search ("What OpenAI released recently" / "Sora related" / "RAG papers")

The API directly supports server-side keyword search — the q parameter performs an ILIKE match on title + Chinese title + Chinese summary fields, backed by a PostgreSQL pg_trgm GIN index (2-6ms). Do not use the "fetch a batch + client-side jq grep" pattern — that can only match within the first 100 items of the pool; if the keyword falls outside those 100, it will be completely missed.

# Find what OpenAI released recently (searches the entire pool, not just the first 100)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?q=OpenAI&take=30"

# Find all AI news related to Sora (any title or summary containing Sora)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?q=Sora"

# Find RAG papers (category filter + keyword)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?category=paper&q=RAG&take=30"

# Keyword + time window (Anthropic's selected items from the last 3 days)
SINCE=$(date -u -v-3d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '3 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&q=Anthropic&since=$SINCE"

q constraints:

  • Minimum 2 characters (single-character trigram in GIN degenerates to full table scan; the server will treat it as no search)
  • Maximum 200 characters (automatically truncated if exceeded)
  • Orthogonal to other parameters (mode/category/since/take/cursor) — you can combine "selected + paper + keyword + within 7 days"
  • Shares the 600r/m rate limit with other requests

Response Data Formats

/api/public/daily Response

{
  "date": "2026-05-07",
  "generatedAt": "2026-05-07T00:01:23.456Z",
  "windowStart": "2026-05-06T00:00:00.000Z",
  "windowEnd":   "2026-05-07T00:00:00.000Z",
  "lead": { "title": "...", "leadParagraph": "..." },
  "sections": [
    {
      "label": "模型发布/更新",
      "items": [
        {
          "title": "...",
          "summary": "...",
          "sourceUrl": "https://...",
          "sourceName": "OpenAI Blog"
        }
      ]
    }
  ],
  "flashes": [
    { "title": "...", "sourceName": "...", "sourceUrl": "...", "publishedAt": "..." }
  ]
}

sections[].label always has 5 values: "模型发布/更新" (Model Releases/Updates) / "产品发布/更新" (Product Launches/Updates) / "行业动态" (Industry Trends) / "论文研究" (Research Papers) / "技巧与观点" (Tips & Opinions). lead is null for a very small number of daily reports.

/api/public/dailies Response

{
  "count": 14,
  "items": [
    { "date": "2026-05-07", "generatedAt": "...", "leadTitle": "..." }
  ]
}

/api/public/items Response

{
  "count": 50,
  "hasNext": true,
  "nextCursor": "eyJhIjoxNzE0OTk1MjAwMDAwLCJpIjoiY205eHl6MTIzIn0",
  "items": [
    {
      "id": "cm9abc456def789ghi012jkl3",
      "title": "中文标题(normalize 过)",
      "title_en": "Original English title (only present if different from title, otherwise null)",
      "url": "https://...",
      "source": "OpenAI Blog",
      "publishedAt": "2026-05-07T15:30:00.000Z",
      "summary": "中文摘要(LLM 生成)",
      "category": "ai-models"
    }
  ]
}

Field invariants:

  • Always present: id / title / url / source
  • Nullable: title_en / summary / publishedAt / category
  • category value set: ai-models / ai-products / industry / paper / tip / null
  • publishedAt: ISO 8601 UTC (with Z)
  • id: cuid string (25 characters), do not assume it's numeric

Output Format for Users

⚠️ Core Principle: This section describes the final content displayed directly to the user — it must be in markdown format + well-formatted + human-readable plain language that a non-technical person can understand. Most users are non-technical AI entrepreneurs / designers / general readers; they should see a Chinese news briefing, not an API debug log.

All infrastructure details like "endpoint paths / raw parameters like mode=selected / rate limiting / nginx cache / cursor / hasNext" must not appear in the output the user sees. Human-readable metadata (time window / item count / "sorted by publication time descending") can be kept — the criterion: can a user understand it directly? Yes → keep it; No → delete it.

Daily Report Style Output (When Using daily / daily/{date} endpoints)

**AI HOT Daily · 2026-05-07**

## Model Releases/Updates
1. **<title>** — <source>
   <summary simplified to ~50 characters>
   <url>

## Product Launches/Updates
2. ...

## Industry Trends
3. ...

## Research Papers
4. ...

## Tips & Opinions
5. ...

## Flash Updates (if flashes have content)
- <flash.title> — <flash.source>(<flash.publishedAt converted to human-readable>)

Numbering is continuous throughout (1, 2, 3 ... N), not restarted within each ## — so users can easily count "27 items today."

List-style Output (When Using items endpoint)

Default: Group by category + global numbering — users have an expectation of the "5-section structure (model/product/industry/paper/tips)" from the daily report; this structure is most natural when mixing categories:

**AI HOT — Last 30 Selected Items**

## Model Releases/Updates
1. **<title>** — <source>
   2 hours ago
   <summary>
   <url>

## Product Launches/Updates
2. **<title>** — <source>
   ...

3. ...

## Industry Trends
4. ...

When there is only 1 category (user explicitly says "AI papers" / "model releases", etc.), use a flat numbered list:

**AI HOT — AI Papers from the Last Week**(2026-05-01 ~ 2026-05-08)

1. **<title>** — <source>
   <summary>
   <url>

2. ...

Headers / Metadata: Use Plain Language Only

OK (directly understandable by users):

  • "Time window: 2026-05-05 ~ 2026-05-07"
  • "All items matching the keyword OpenAI in the last 3 days"
  • "Sorted by publication time descending"
  • "Total: 50 items"
  • "Today's 5/8 daily report is generated after 08:00 Beijing time; check the 5/7 edition for now"

Not OK (infrastructure leakage; absolutely must not write):

  • ❌ mode=selected / category=paper / take=30 (raw parameter names)
  • ❌ Endpoint path /api/public/items?since=2026-04-30T18:39:31Z&take=50
  • ❌ "Rate limit: 600 req/min" / "nginx cache: 60s" / "x-nginx-cache: HIT"
  • ❌ "cursor" / "hasNext=true" / "need cursor pagination or shrink since window"
  • ❌ Any HTTP status code / cache status / backend mechanism descriptions

The data source can be mentioned in at most one sentence: "Data from aihot.virxact.com" , or just omit it entirely (the user already knows the source from using the Skill).

Time to Human-Readable

publishedAt is ISO 8601 UTC; when displaying, must convert to Beijing time + relative/absolute time that users can scan:

Internal valueDisplay to user
2026-05-08T01:48:00.000Z"Today at 09:48 AM" / "2 hours ago"
2026-05-07T18:08:17.000Z"Today at 02:08 AM" / "10 hours ago"
2026-05-06T16:43:00.000Z"5/7 00:43" / "Yesterday"

Do not display ISO strings like 2026-05-07T15:30:00.000Z directly — users cannot understand them.

title vs title_en

Default to outputting title (the normalized Chinese version). title_en should only be used in the following scenarios:

  • The user explicitly requests the English version ("Show me in English")
  • title is empty (extremely rare)

Do not display both.

Common Error Handling

  • {"error":"No daily report available yet."} (HTTP 404): The daily report for today hasn't been generated yet (before 08:00 Beijing time). Suggestion: fetch yesterday's daily report curl /api/public/daily/{yesterday's date}
  • {"error":"Invalid date format..."} (HTTP 400): date must be YYYY-MM-DD, UTC baseline
  • Common items endpoint 400 errors:
    • "invalid mode (must be 'selected' or 'all')"
    • "invalid category (must be one of: ai-models, ai-products, industry, paper, tip)"
    • "invalid since (must be ISO date, not in future)"
    • "invalid take (must be integer 1-100)"
  • HTTP 429 (rate limited): Single IP exceeds 600 req/min. Use serial calls and add a 200ms delay for pagination.

Don'ts

  • Do not route broad queries like "What's happening in AI today?", "Big news in the past 24 hours?", "What's new in AI recently?" to the daily endpoint — these are rolling time windows; the daily report is a fixed one-day product sliced at UTC 00:00 (e.g., the whole day of 5/6-5/7), and the time precision doesn't match. Default to mode=selected + since=<semantic window>. Only call daily when the user explicitly says "日报"
  • Do not default to mode=all when the user hasn't said "全部" / "完整" / "所有" / "全量" — selected already covers most things users care about; the all pool is large but noisy, containing non-curated secondary items. Default to mode=selected; only switch to mode=all when the user explicitly requests "all"
  • Do not try to guess or fabricate content — always rely on the API response
  • Do not quote the summary as the original text — summaries are LLM-generated; citations should refer to the url / sourceUrl
  • Do not poll at high frequency — the daily report only updates once a day at 08:00; items endpoint has a 5-minute server-side cache; no need to re-call the API if the user asks the same question
  • Do not fire concurrent pagination — use serial calls with natural intervals
  • Do not attempt to parse, increment, or reuse the cursor across endpoints — it's an opaque token; its internal encoding format is unstable and subject to change without notice
  • For company-level or keyword queries, use the server-side ?q=<term>, not "fetch a batch + client-side jq grep" (that can only see the first 100 items in the pool and will miss results)
  • When the user asks for "recent X days of Y", explicitly include since=<N days ago> (clear intent and metadata can display a human-readable time window). Omitting since falls back to the server's default of 7d, so old items won't be returned, but if the user asks "last 3 days", letting the server default to 7d will bring in 4 extra days of content
  • Do not expose endpoint paths / raw parameters / rate limits / cache TTL / cursor / hasNext or other infrastructure details in the user-facing output — these are for developers; users can't understand them. See the "Output Format for Users → Headers / Metadata: Use Plain Language Only" section above
  • When compressing, combining across days, or merging across categories in the output, do not drop item numbers — users use the continuous numbering to track the total count. If you merge from different API calls, re-number sequentially
  • Do not produce ambiguous date ranges — "last 24 hours" ≠ "today's daily report". If the user asks about a specific date, be precise (e.g., "2026-05-07 daily report"); if the user says "today", use the rolling window instead of the daily report
  • Do not mix data formats across API call boundaries — don't splice a Daily response's sections[].items into an Items response's items array without clarifying the data source
  • Do not silently append items from a different page to the current list — if the user didn't ask for "more", just display one page. Include a note like "... and 23 more items (ask me to show more)"
  • Do not force automatic daily report generation — it happens naturally at 08:00 Beijing time. If the daily report for today isn't available yet, the Skill should offer the best available alternatives (yesterday's daily report, or selected items from the last 24 hours)

相关技能