# Wuhan AI Daily

> 每日自动搜索武汉市人工智能相关最新政策、新闻、活动信息，整理后写入飞书多维表格。当用户提到"武汉AI信息采集"、"每日AI信息"、"搜索武汉AI"、"执行今日采集"或要求执行定时信息采集任务时，必须使用本技能。

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

---


# 武汉 AI 信息每日采集 SKILL

## 配置参数

使用前需在环境变量中配置以下参数（请勿将实际值提交至代码仓库）：

```
FEISHU_APP_TOKEN  = <你的飞书多维表格 App Token>
FEISHU_TABLE_ID   = <你的飞书多维表格 Table ID>
```

**配置方式**：在 `claude_desktop_config.json` 的 lark-mcp 启动参数中，或通过系统环境变量注入；也可在本地项目的 `.env` 文件中设置（`.env` 需加入 `.gitignore`）。

飞书写入通过 lark-mcp 工具完成，无需手动鉴权。

---

## 飞书表格字段结构

| 字段名 | 字段类型 | 说明 |
|--------|----------|------|
| 发布日期 | 日期 | Unix 毫秒时间戳，取内容发布当日 00:00:00 |
| 信息摘要 | 文本 | 100 字以内，用自己语言概括，不引用原文 |
| 信息源链接 | 文本 | 原始页面完整 URL |
| 类型 | 单选 | 政策 / 新闻 / 活动 / 其他 |

> 注意：表格第一列「时间」是系统自动生成的创建时间字段（带锁），无法写入，忽略即可。

---

## 执行流程

### Step 1：构建搜索关键词

每次执行使用以下关键词矩阵，覆盖三类信息：

| 类型 | 关键词 |
|------|--------|
| 政策 | `武汉 人工智能 政策 最新`、`武汉 AI 扶持 补贴` |
| 新闻 | `武汉 人工智能 最新动态`、`武汉 AI 产业 新闻` |
| 活动 | `武汉 人工智能 峰会 论坛`、`武汉 AI 活动 展会` |
| 大模型 | `武汉 大模型 最新` |

### Step 2：执行全网搜索

- 调用 `web_search` 执行各关键词组，每组取前 5 条
- 对标题模糊或摘要不足的条目，调用 `web_fetch` 精读原文

### Step 3：去重与相关性过滤

丢弃以下内容：
- **相关性不足**：必须同时满足「武汉/湖北」+「人工智能/AI/大模型/智能化」两个维度
- **重复内容**：URL 相同或标题高度相似，仅保留一条

### Step 4：生成结构化字段

对每条通过过滤的内容，生成以下字段：

- **发布日期**：从原文提取发布时间，转为 Unix 毫秒时间戳（当日 00:00:00 北京时间）；无法识别则用执行当日
- **信息摘要**：100 字以内，用自己语言描述核心信息
- **信息源链接**：原始页面完整 URL
- **类型**：从「政策、新闻、活动」三选一；无法归类标「其他」

### Step 5：写入飞书多维表格

调用 `lark-mcp:bitable_v1_appTableRecord_create` 逐条写入：

```
path:
  app_token: $FEISHU_APP_TOKEN
  table_id:  $FEISHU_TABLE_ID

data.fields:
  发布日期:    <Unix毫秒时间戳>
  信息摘要:    "<100字以内摘要>"
  信息源链接:  "<完整URL>"
  类型:        "<政策|新闻|活动|其他>"
```

**时间戳动态计算规则**：
- Unix 毫秒时间戳 = 自 1970-01-01 00:00:00 UTC 起的毫秒数
- 北京时间（UTC+8）某日 00:00:00 的时间戳，可用以下方式动态计算：
  - JavaScript：`new Date('YYYY-MM-DDT00:00:00+08:00').getTime()`
  - Python：`int(datetime(YYYY, MM, DD, 0, 0, tzinfo=timezone(timedelta(hours=8))).timestamp() * 1000)`
- 每天固定偏移 86,400,000 毫秒，禁止使用硬编码的静态年份查找表

### Step 6：输出执行摘要

执行完成后输出：

```
本次采集完成 ✅
- 搜索关键词组：X 组
- 候选条目：X 条
- 过滤后写入：X 条
- 写入成功：X 条 / 失败：X 条
- 执行时间：YYYY-MM-DD
```

若写入条目为 0，输出告警：「今日未采集到相关信息，请人工核查」

---

## 异常处理

| 异常情况 | 处理方式 |
|----------|----------|
| lark-mcp 返回 91403 Forbidden | 检查多维表格是否已添加「claude助手」文档应用（路径：表格右上角「···」→「更多」→「添加文档应用」） |
| 字段写入失败 | 检查字段名是否与表格完全一致（区分全角/半角） |
| 单条写入失败 | 记录失败原因，继续写入其余条目，最终汇总报告 |
| 搜索无结果 | 尝试备用关键词，仍无结果则输出告警 |

