Back to skills
SkillHub ClubShip Full StackFull Stack

feishu-user-md

飞书端读取USER.md任务清单。当用户说"查看任务"、"我的任务"时触发,实时解析并返回格式化的分类任务列表,让用户快速了解当前所有可用任务和技能。

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
3,077
Hot score
99
Updated
March 20, 2026
Overall rating
B7.0
Composite score
7.0
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install openclaw-skills-feishu-user-md

Repository

openclaw/skills

Skill path: skills/349840432m-dev/feishu-user-md

飞书端读取USER.md任务清单。当用户说"查看任务"、"我的任务"时触发,实时解析并返回格式化的分类任务列表,让用户快速了解当前所有可用任务和技能。

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: MIT.

Original source

Catalog source: SkillHub Club.

Repository owner: openclaw.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install feishu-user-md into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/openclaw/skills before adding feishu-user-md to shared team environments
  • Use feishu-user-md for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: feishu-user-md
description: 飞书端读取USER.md任务清单。当用户说"查看任务"、"我的任务"时触发,实时解析并返回格式化的分类任务列表,让用户快速了解当前所有可用任务和技能。
version: 1.1.0
author: 349840432m-dev
license: MIT
acceptLicenseTerms: true
metadata:
  clawdbot:
    emoji: "📋"
    files: ["scripts/*"]
---

# Feishu User.md Reader - 飞书任务清单查询

实时读取 `~/.openclaw/workspace/USER.md`,解析任务清单并格式化为分类列表返回。

## 核心功能

### 实时任务解析
从 `~/.openclaw/workspace/USER.md` 读取三类数据源:
1. **常规任务清单表格** → 提取任务名、频率、技能名、描述
2. **日常自动化表格** → 提取定时任务时间和名称
3. **手动触发指令表格** → 提取触发词映射

### 智能分类
任务按用途自动归类:
- 📝 **内容创作** — 图片提示词、API图片、知识漫画、信息图
- 📕 **小红书运营** — 完整运营、发布、卡片生成
- 📤 **内容发布** — 微信公众号、Markdown转HTML
- 🔧 **工具** — 翻译、图片压缩、网页抓取、数据导出
- 📰 **新闻与SEO** — 添加/撰写新闻、SEO文章
- 📂 **日常管理** — 对话归档、Token统计、周报、日历
- 📁 **其他** — 未匹配的任务

### 输出格式

**注意**:返回内容动态读取 USER.md 实际内容,不硬编码。

```
📋 您的任务清单(共N项)

【定时自动化】
• 0:00 对话记录自动归档
• 9:00 Token日报生成

【内容创作】
• 图片提示词生成 - 说"生成图片提示词"
• API图片生成 - 说"生成图片"

💡 直接发送任务关键词即可触发
```

## 触发指令

| 指令 | 说明 |
|------|------|
| `查看任务` | 基础触发指令 |
| `我的任务` | 简写形式 |
| `有什么技能` | 查看可用技能 |
| `帮助` / `?` | 帮助信息 |

## 使用方法

```bash
node scripts/feishu-user-md.js read   # 格式化输出
node scripts/feishu-user-md.js json   # JSON 输出
```

## 技术实现

- Node.js 脚本,仅使用内置模块(`fs`、`path`、`os`),无第三方依赖
- 正则表达式解析 Markdown 表格
- 按关键词自动归类任务
- 每次调用**实时读取** USER.md,无缓存

### 解析流程
1. `readUserMd()` — 读取文件内容
2. `parseUserMd(content)` — 提取常规任务、定时任务、触发指令
3. `categorize(tasks)` — 按用途关键词分类
4. `formatForFeishu(data)` — 格式化为飞书消息文本

## 文件位置

- **技能目录**: `skills/feishu-user-md/`
- **脚本文件**: `skills/feishu-user-md/scripts/feishu-user-md.js`
- **数据源**: `~/.openclaw/workspace/USER.md`

## 注意事项

1. **无缓存** — 每次调用都实时读取 USER.md,更新后立即生效
2. **动态触发** — 所有触发指令从 USER.md 的"手动触发指令"表格动态读取
3. **自动同步** — 新增/删除任务只需修改 USER.md,飞书端自动同步
4. **内容动态** — 返回内容根据 USER.md 实际内容生成,不硬编码

## Security & Privacy

- 仅读取本地 `~/.openclaw/workspace/USER.md` 文件
- 不进行任何网络请求,不发送数据到外部
- 不写入任何文件,不存储用户数据
- 无持久化操作,无后台进程


---

## Referenced Files

> The following files are referenced in this skill and included for context.

### scripts/feishu-user-md.js

```javascript
#!/usr/bin/env node

/**
 * Feishu User.md Reader
 * 动态读取 USER.md,解析任务清单和触发指令,格式化为飞书消息
 */

const fs = require('fs');
const path = require('path');
const os = require('os');

const USER_MD = path.join(os.homedir(), '.openclaw/workspace/USER.md');

function readUserMd() {
  try {
    if (!fs.existsSync(USER_MD)) {
      return { error: 'USER.md 文件不存在' };
    }
    const content = fs.readFileSync(USER_MD, 'utf8');
    return parseUserMd(content);
  } catch (err) {
    return { error: `读取失败: ${err.message}` };
  }
}

function parseUserMd(content) {
  const result = {
    scheduled: [],
    tasks: [],
    triggers: {},
    total: 0
  };

  // 解析"常规任务清单"表格
  const taskRows = content.match(/\|\s*\d+\s*\|[^|]+\|[^|]+\|[^|]+\|[^|]+\|[^|]+\|/g);
  if (taskRows) {
    result.total = taskRows.length;
    taskRows.forEach(row => {
      const cells = row.split('|').map(c => c.trim()).filter(c => c);
      if (cells.length >= 6) {
        result.tasks.push({
          num: cells[0],
          name: cells[1],
          freq: cells[2],
          skill: cells[3].replace(/`/g, ''),
          desc: cells[5]
        });
      }
    });
  }

  // 解析"定时自动化"表格
  const scheduleSection = content.match(/日常自动化[\s\S]*?\n\n/);
  if (scheduleSection) {
    const timeRows = scheduleSection[0].match(/\|\s*\*\*[\d:]+\*\*\s*\|[^|]+\|[^|]+\|/g);
    if (timeRows) {
      timeRows.forEach(row => {
        const cells = row.split('|').map(c => c.trim()).filter(c => c);
        if (cells.length >= 3) {
          result.scheduled.push({
            time: cells[0].replace(/\*\*/g, ''),
            name: cells[1],
            skill: cells[2].replace(/`/g, '')
          });
        }
      });
    }
  }

  // 解析"手动触发指令"表格 → 动态构建触发词映射
  const triggerSection = content.match(/手动触发指令[\s\S]*?(?=\n---|\n##|$)/);
  if (triggerSection) {
    const triggerRows = triggerSection[0].match(/\|\s*[^|\n]+\s*\|\s*[^|\n]+\s*\|/g);
    if (triggerRows) {
      triggerRows.forEach(row => {
        const cells = row.split('|').map(c => c.trim()).filter(c => c);
        if (cells.length >= 2 && !cells[0].includes('---') && !cells[0].includes('任务')) {
          const taskName = cells[0];
          const trigger = cells[1].split('/')[0].trim().replace(/"/g, '');
          result.triggers[taskName] = trigger;
        }
      });
    }
  }

  return result;
}

/**
 * 按用途分类任务
 */
function categorize(tasks) {
  const categories = {
    '内容创作': ['图片提示词', 'API图片', '知识漫画', '信息图', 'infographic'],
    '小红书运营': ['小红书'],
    '内容发布': ['公众号', 'Markdown转HTML', '微信'],
    '工具': ['翻译', '图片压缩', '网页转', 'MySQL', 'url'],
    '新闻与SEO': ['新闻', 'SEO'],
    '日常管理': ['清理', 'token', '对话', '周报', '日历', '任务', '飞书']
  };

  const result = {};
  const used = new Set();

  for (const [cat, keywords] of Object.entries(categories)) {
    const matched = tasks.filter(t =>
      keywords.some(kw => t.name.includes(kw) || t.desc.includes(kw)) && !used.has(t.num)
    );
    if (matched.length > 0) {
      result[cat] = matched;
      matched.forEach(t => used.add(t.num));
    }
  }

  const remaining = tasks.filter(t => !used.has(t.num));
  if (remaining.length > 0) {
    result['其他'] = remaining;
  }

  return result;
}

function formatForFeishu(data) {
  if (data.error) {
    return `❌ 错误: ${data.error}`;
  }

  let msg = `📋 您的任务清单(共${data.total}项)\n\n`;

  // 定时任务
  if (data.scheduled.length > 0) {
    msg += `【定时自动化】\n`;
    data.scheduled.forEach(t => {
      msg += `• ${t.time} ${t.name}\n`;
    });
    msg += '\n';
  }

  // 按类别输出手动任务
  const grouped = categorize(data.tasks);
  for (const [cat, tasks] of Object.entries(grouped)) {
    msg += `【${cat}】\n`;
    tasks.forEach(t => {
      const trigger = data.triggers[t.name];
      msg += trigger
        ? `• ${t.name} - 说"${trigger}"\n`
        : `• ${t.name}\n`;
    });
    msg += '\n';
  }

  msg += `💡 直接发送任务关键词即可触发`;
  return msg;
}

function main() {
  const command = process.argv[2];

  if (command === 'read') {
    console.log(formatForFeishu(readUserMd()));
  } else if (command === 'json') {
    console.log(JSON.stringify(readUserMd(), null, 2));
  } else {
    console.log(`
Feishu User.md Reader - 飞书任务清单查询

用法:
  node feishu-user-md.js read    读取并格式化输出
  node feishu-user-md.js json    读取并输出JSON
`);
  }
}

main();

```



---

## Skill Companion Files

> Additional files collected from the skill directory layout.

### README.md

```markdown
# 飞书任务清单查询

实时读取 `USER.md`,解析任务清单并以分类格式返回,让飞书用户快速了解所有可用任务和技能。

## 安装

```bash
clawhub install feishu-user-md
```

或手动安装:将整个文件夹复制到 `~/.openclaw/skills/feishu-user-md/`。

## 功能特性

- **实时解析**:每次调用动态读取 USER.md,无缓存,更新后立即生效
- **智能分类**:按内容创作、小红书运营、内容发布、工具、新闻与SEO 等类别自动归类
- **触发词映射**:自动提取手动触发指令,展示每个任务的触发方式
- **零依赖**:仅使用 Node.js 内置模块,无需安装第三方包

## 项目结构

```
feishu-user-md/
├── SKILL.md                    # 技能说明(ClawHub 必需)
├── claw.json                   # ClawHub 清单文件
├── README.md                   # 项目文档
└── scripts/
    └── feishu-user-md.js       # 主脚本(读取、解析、格式化)
```

## 使用方式

### 命令行

```bash
node scripts/feishu-user-md.js read   # 格式化输出
node scripts/feishu-user-md.js json   # JSON 输出
```

### 飞书触发

直接在飞书中发送以下指令:
- "查看任务" / "我的任务"
- "有什么技能"
- "帮助" / "?"

## 数据源

所有数据来自 `~/.openclaw/workspace/USER.md`,包含三类表格:
- **常规任务清单**(序号、名称、频率、技能、描述)
- **日常自动化**(时间、任务名、技能)
- **手动触发指令**(任务名、触发词)

新增或删除任务只需修改 USER.md,飞书端自动同步。

## 前置条件

- OpenClaw 已安装并运行
- `~/.openclaw/workspace/USER.md` 文件存在且包含任务清单表格

## 技术栈

- Node.js(仅内置模块:`fs`、`path`、`os`)

```

### _meta.json

```json
{
  "owner": "349840432m-dev",
  "slug": "feishu-user-md",
  "displayName": "飞书协同任务读取",
  "latest": {
    "version": "1.0.0",
    "publishedAt": 1773210501733,
    "commit": "https://github.com/openclaw/skills/commit/7cca594144e8b17a5a4a336f80f656ce53e8b6fc"
  },
  "history": []
}

```

feishu-user-md | SkillHub