# China Holidays

> 获取中国国家法定节假日安排。当用户询问"节假日安排"、"放假通知"、"某年节假日"、"法定假日"、"调休安排"时使用。支持查询任意年份的元旦、春节、清明节、劳动节、端午节、中秋节、国庆节放假调休安排。未指定年份时默认查询当年。

- Skill: `xzxiaoshan/china-holidays` (Agent Skill, multi-file: 22 files)
- Install (CLI): `npx skillmds@latest add xzxiaoshan/china-holidays`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xzxiaoshan/china-holidays/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: xzxiaoshan (https://skillmd.com/u/xzxiaoshan)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xzxiaoshan/china-holidays

---


# 国家法定节假日查询

从中国政府网（www.gov.cn）获取国务院办公厅发布的国家法定节假日安排通知。

## 使用场景

- 查询某年的节假日放假安排
- 了解法定假日调休日期
- 获取春节、国庆等长假具体天数
- 确认是否需要补班调休

## 工作流程

### 第 1 步：确认查询年份

首先确认用户要查询的年份。如果用户未指定，默认使用当前年份。

### 第 2 步：获取节假日通知

运行脚本获取国务院办公厅发布的节假日安排通知：

```bash
python scripts/fetch_holidays.py --year {年份}
```

此脚本采用**缓存优先策略**：
1. **优先读取本地缓存**：检查 `assets/{年份}.md` 是否存在
2. **缓存命中**：直接返回缓存的节假日数据（毫秒级响应）
3. **缓存未命中**：联网从政府网获取数据，并自动缓存到本地

**预期输出：** 国务院办公厅关于该年度部分节假日安排的通知全文（纯中文内容）

### 强制刷新（可选）

如需强制从网络获取最新数据（忽略缓存），添加 `--force` 参数：

```bash
python scripts/fetch_holidays.py --year {年份} --force
```

**触发场景：** 当用户提到以下类似话术时，使用 `--force` 参数：
- "重新从网络获取"
- "强制更新缓存"
- "刷新一下数据"
- "重新下载"
- "更新一下{年份}的缓存"

### 第 3 步：解析并输出节假日信息

根据获取到的通知内容，按照用户要求整理输出：

**标准输出格式：**

```
【{年份}年国家法定节假日安排】

一、元旦：{具体日期}放假调休，共{天数}天。{调休说明}
二、春节：{具体日期}放假调休，共{天数}天。{调休说明}
三、清明节：{具体日期}放假调休，共{天数}天。{调休说明}
四、劳动节：{具体日期}放假调休，共{天数}天。{调休说明}
五、端午节：{具体日期}放假调休，共{天数}天。{调休说明}
六、中秋节：{具体日期}放假调休，共{天数}天。{调休说明}
七、国庆节：{具体日期}放假调休，共{天数}天。{调休说明}
```

## 示例

### 示例 1：查询 2026 年节假日

**用户说：** "帮我查一下 2026 年的节假日安排"

**操作：**
1. 确认年份：2026
2. 运行：`python scripts/fetch_holidays.py --year 2026`
3. 获取国务院办公厅通知内容
4. 整理输出节假日安排

**结果：**
```
【2026 年国家法定节假日安排】

一、元旦：1 月 1 日（周四）至 3 日（周六）放假调休，共 3 天。1 月 4 日（周日）上班。
二、春节：2 月 15 日（农历腊月二十八、周日）至 23 日（农历正月初七、周一）放假调休，共 9 天。2 月 14 日（周六）、2 月 28 日（周六）上班。
三、清明节：4 月 4 日（周六）至 6 日（周一）放假，共 3 天。
四、劳动节：5 月 1 日（周五）至 5 日（周二）放假调休，共 5 天。5 月 9 日（周六）上班。
五、端午节：6 月 19 日（周五）至 21 日（周日）放假，共 3 天。
六、中秋节：9 月 25 日（周五）至 27 日（周日）放假，共 3 天。
七、国庆节：10 月 1 日（周四）至 7 日（周三）放假调休，共 7 天。9 月 20 日（周日）、10 月 10 日（周六）上班。
```

**说明：** 脚本返回的是国务院办公厅通知原文。Agent 需要从中提取关键信息并整理输出：
- **默认情况**：按上述标准格式整理输出
- **用户指定格式**：如果用户主动提供了输出格式要求或指定了输出模板，按照用户给定的要求整理输出（如 JSON、表格、列表、简短回复等）

### 示例 2：查询当年节假日

**用户说：** "今年放假怎么安排的？"

**操作：**
1. 确认年份：当前年份（2026）
2. 运行：`python scripts/fetch_holidays.py --year 2026`
3. 输出节假日安排

**结果：** 输出 2026 年全年节假日安排（格式同示例 1）

### 示例 3：强制刷新缓存

**用户说：** "重新从网络获取 2026 年的节假日数据"

**操作：**
1. 确认年份：2026
2. 运行：`python scripts/fetch_holidays.py --year 2026 --force`
3. 脚本会忽略本地缓存，重新从政府网获取数据

**预期输出：**
```bash
$ python scripts/fetch_holidays.py --year 2026 --force
正在从网络获取 2026 年节假日数据...
找到通知：https://www.gov.cn/gongbao/2025/issue_12406/202511/content_7048922.html
正在获取通知内容...
已缓存到：skills/china-holidays/assets/2026.md
# 下方是通知原文内容
```

### 示例 4：查询特定节日

**用户说：** "2026 年春节放假几天？"

**操作：**
1. 确认年份：2026
2. 运行脚本获取数据
3. 从返回内容中提取春节相关信息

**输出示例：**
```
2026 年春节放假安排：
2 月 15 日（农历腊月二十八、周日）至 23 日（农历正月初七、周一）放假调休，共 9 天。
2 月 14 日（周六）、2 月 28 日（周六）上班。
```

### 示例 5：比较两年节假日安排

**用户说：** "对比一下 2025 年和 2026 年春节放假有什么不同"

**操作：**
1. 分别获取两年的节假日数据
2. 运行：`python scripts/fetch_holidays.py --year 2025` 和 `python scripts/fetch_holidays.py --year 2026`
3. 提取春节相关信息进行对比

**输出示例：**
```
2025 年 vs 2026 年春节放假对比：

2025 年春节：1 月 28 日（除夕）至 2 月 4 日（初七）放假，共 8 天
2026 年春节：2 月 15 日（腊月二十八）至 23 日（初七）放假，共 9 天

差异：2026 年比 2025 年多放 1 天，且 2026 年包含腊月二十八
```

### 示例 6：自定义输出格式

**用户说：** "用 JSON 格式输出 2026 年所有节假日安排"

**操作：**
1. 运行脚本获取数据
2. 按用户要求的 JSON 格式整理输出

**输出示例：**
```json
{
  "year": 2026,
  "holidays": [
    {"name": "元旦", "dates": "1 月 1 日 -1 月 3 日", "days": 3, "makeup_work": "1 月 4 日"},
    {"name": "春节", "dates": "2 月 15 日 -2 月 23 日", "days": 9, "makeup_work": "2 月 14 日、2 月 28 日"},
    {"name": "清明节", "dates": "4 月 4 日 -4 月 6 日", "days": 3, "makeup_work": "无"},
    {"name": "劳动节", "dates": "5 月 1 日 -5 月 5 日", "days": 5, "makeup_work": "5 月 9 日"},
    {"name": "端午节", "dates": "6 月 19 日 -6 月 21 日", "days": 3, "makeup_work": "无"},
    {"name": "中秋节", "dates": "9 月 25 日 -9 月 27 日", "days": 3, "makeup_work": "无"},
    {"name": "国庆节", "dates": "10 月 1 日 -10 月 7 日", "days": 7, "makeup_work": "9 月 20 日、10 月 10 日"}
  ]
}
```

## 故障排查

### 搜索无结果

**错误现象：** 脚本返回"未找到相关节假日通知"或"搜索结果为空"

**可能原因：**
- 该年份的节假日通知尚未发布（通常上一年度 11-12 月发布下一年度安排）
- 网络连接问题

**Agent 处理方式：**
1. 如果查询的是未来年份，提示用户该年度通知尚未发布
2. 建议用户查询已发布的年份（如当前年份或上一年）
3. 如网络问题，向用户说明情况并建议稍后重试

### 在线获取失败

**错误现象：** 脚本退出并显示网络请求失败

**可能原因：**
- 网络连接不稳定
- 政府网接口参数发生变更

**Agent 处理方式：**
1. 检查网络连接后重试一次
2. 如仍失败，向用户说明"政府网数据暂时无法获取"
3. 建议用户使用缓存数据（`--force` 参数移除）或稍后重试
4. 如用户需要，可告知用户直接访问政府网查看

### 内容解析失败

**错误现象：** 获取到 URL 但无法提取有效内容

**Agent 处理方式：**
1. 向用户说明"内容解析失败"
2. 将原始 URL 提供给用户，让用户手动访问查看
3. 建议用户稍后重试

### 缓存数据不存在

**错误现象：** 本地无缓存且在线获取失败

**Agent 处理方式：**
1. 向用户说明该年份数据暂时无法获取
2. 建议用户查询其他年份
3. 或建议用户稍后重试

---

**通用处理原则：**
- 任何错误都应向用户清晰说明原因和建议
- 优先尝试使用缓存数据
- 网络问题建议用户稍后重试
- 提供替代方案（如查询其他年份、访问政府网）

## 技术说明

- 数据来源：中国政府网（www.gov.cn）官方发布的国务院办公厅通知
- 数据权威性：来源于国务院公报，具有官方效力
- 更新频率：通常每年 11-12 月发布下一年度安排
- 缓存策略：本地缓存优先，减少网络请求，提升响应速度

## 缓存机制

脚本采用**缓存优先策略**：

1. **优先读取本地缓存**：检查 `assets/{年份}.md` 是否存在
2. **缓存命中**：直接返回缓存数据（毫秒级响应，无需网络）
3. **缓存未命中**：自动从政府网获取数据并缓存到本地

**Agent 处理建议：**
- 默认情况下直接使用缓存数据
- 当用户表达"重新获取"、"刷新数据"、"从网上查最新的"等意图时，应理解为需要强制从网络获取最新数据
- 缓存文件位于 `assets/{年份}.md`，每年新数据发布后会自动更新

## 技巧

1. **缓存策略**：脚本优先使用本地缓存，响应更快
2. **发布时间**：国务院办公厅通常在每年 11-12 月发布下一年度节假日安排
3. **刷新数据**：当用户要求"重新获取"、"刷新"时，应强制从网络获取最新数据
4. **默认年份**：用户未指定年份时，主动询问或使用当前年份
5. **离线使用**：已有缓存的年份可以完全离线查询
6. **数据权威性**：所有数据来自中国政府网（www.gov.cn），具有官方效力
7. **跨年度对比**：可以分别获取不同年份数据进行对比分析
8. **格式灵活**：支持按用户要求输出 JSON、表格、列表等不同格式

## 注意事项

1. **数据时效性**：只能查询已发布的年份，未来年份的通知需等待官方发布
2. **官方来源**：所有数据均来自政府网官方渠道，确保准确性
3. **调休安排**：输出时务必包含调休上班日期的说明，方便用户安排工作

