← 返回
未分类 Key

智能简历同步飞书多维表格skill

简历文件智能解析与飞书多维表格自动同步工具。当用户需要: (1) 解析简历文件(PDF/Word/WPS/图片/飞书文档)提取结构化信息 (2) 将简历数据自动同步到飞书多维表格 (3) 批量处理多份简历并生成执行报告 (4) 定时监控指定目录自动处理新增简历 触发关键词:解析简历、简历入库、简历同步、批量处理简历、简历录入表格、飞书文档解析
简历文件智能解析与飞书多维表格自动同步工具。当用户需要: (1) 解析简历文件(PDF/Word/WPS/图片/飞书文档)提取结构化信息 (2) 将简历数据自动同步到飞书多维表格 (3) 批量处理多份简历并生成执行报告 (4) 定时监控指定目录自动处理新增简历 触发关键词:解析简历、简历入库、简历同步、批量处理简历、简历录入表格、飞书文档解析
龙虾帮主理人
未分类 community v1.0.3 4 版本 96551.7 Key: 需要
★ 1
Stars
📥 8
下载
💾 0
安装
4
版本
#latest

概述

简历智能解析与飞书同步

静默执行协议(Critical)

本 Skill 必须遵循以下原子性执行原则:

  1. 禁止中途确认:Do not ask for confirmation to proceed. 不要在执行过程中询问"是否继续"、"需要更多信息"等问题。
  2. 一次性完成:Generate the full output in one go. 从文件解析到飞书写入必须一口气完成。
  3. 缺失用默认:If data is missing, use the defined defaults. 字段缺失时按预设规则处理,不要询问用户。
  4. 静默错误处理:遇到单个文件错误时记录日志并继续处理下一个,不要中断整体流程。
  5. 批量无上限询问:即使处理 100 份简历,也不要询问"文件较多,是否分批处理"。

概述

本技能将简历文件(PDF/Word/WPS/图片)或飞书文档链接解析为结构化数据,并自动同步到飞书多维表格。支持手动上传、飞书文档链接和定时目录监控三种模式。


配置参数

执行前需确认以下配置(从环境变量或用户提供):

# 飞书 API 配置
FEISHU_APP_ID: "cli_xxxxx"           # 飞书应用 App ID
FEISHU_APP_SECRET: "xxxxx"           # 飞书应用 App Secret
FEISHU_APP_TOKEN: "bascxxxxx"        # 目标多维表格 app_token
FEISHU_TABLE_ID: "tblxxxxx"          # 目标数据表 table_id
FEISHU_WEBHOOK_URL: "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxx"  # 机器人 Webhook

# 监控模式配置(可选)
WATCH_DIRECTORY: "/path/to/resume/folder"  # 监控目录路径
STATE_FILE: ".resume_sync_state.json"      # 状态文件路径
CRON_SCHEDULE: "0 10 * * 1"                # Cron 表达式(每周一10:00)

字段定义(19 字段)

#字段名字段类型缺失处理解析规则
-----------------------------------------
1姓名文本留空提取文档开头的人名
2手机号文本留空匹配 11 位手机号格式
3邮箱文本留空匹配邮箱格式
4性别单选留空男/女/未知
5年龄数字智能推理见「年龄推理规则」
6最高学历单选留空博士/硕士/本科/大专/高中/其他
7毕业院校文本留空自动标注 (985)/(211),见「院校名单」
8专业文本留空-
9工作年限数字留空从最早工作经历计算至今
10当前公司文本留空仅取最近一份工作
11当前职位文本留空仅取最近一份工作
12过往公司文本留空历史公司用 / 分隔,如 腾讯/阿里/百度
13期望薪资文本留空保留原始表述,如 30-40K
14期望城市文本留空-
15技能标签多选留空提取技术栈、工具、语言等
16项目经历长文本留空保留关键项目描述
17备注长文本留空包含自我评价内容
18总体画像长文本必填AI 生成,见「画像模板」
19文件来源文本自动填充原始文件名

特殊字段处理规则

年龄推理规则

当简历未明确标注年龄或出生日期时,按以下优先级推理:

  1. 优先:直接提取出生日期/年龄字段
  2. 次选:根据最早学历入学年份推算
    • 计算公式:当前年份 - (入学年份 + 入学时年龄)
    • 假设:本科入学年龄 = 18,硕士入学年龄 = 22,博士入学年龄 = 25
  3. 兜底:若无法推理,留空
示例:
- 简历显示「2015年9月入学北京大学本科」
- 推算:出生年 = 2015 - 18 = 1997
- 当前 2026 年,年龄 = 2026 - 1997 = 29 岁

211/985 院校标注规则

匹配 universities.json 名单,在院校名后追加标注:

  • 985 院校 → 清华大学 (985)
  • 仅 211 院校 → 上海财经大学 (211)
  • 普通院校 → 不标注

过往公司提取规则

  1. 按时间倒序排列所有工作经历
  2. 最近一份 → 填入「当前公司」「当前职位」
  3. 其余公司名 → 用 / 连接,填入「过往公司」
示例:
工作经历:
- 2022-至今:字节跳动,产品经理
- 2019-2022:腾讯,产品运营
- 2017-2019:百度,产品助理

输出:
- 当前公司:字节跳动
- 当前职位:产品经理
- 过往公司:腾讯/百度

总体画像生成模板

必须按以下模板生成,未知项标注「待核实」:

这是一位在【A行业】有【N年】经验的【B职能】专家,擅长【C技能】,曾取得【D类量化成果】。
其职业路径显示出【E特征】,目前可能因【F动机】而看机会。
可能适合【G方向】的岗位,但需要核实【H问题】。

变量说明:

变量说明推理来源
----------------------
A行业主要从业行业工作经历中的公司/行业
N年工作年限字段9
B职能核心职能定位职位名称归纳
C技能核心技能(3-5个)技能标签 + 项目经历
D成果量化成就项目经历中的数据
E特征职业发展特点跳槽频率/晋升轨迹/行业跨度
F动机求职动机推测期望薪资/城市变化/空窗期
G方向适合的岗位方向综合分析
H问题需核实的疑点空窗期/频繁跳槽/技能匹配度

示例输出:

这是一位在【互联网】有【6年】经验的【产品经理】专家,擅长【用户增长、数据分析、B端产品设计】,
曾取得【DAU提升200%、转化率优化35%】。其职业路径显示出【稳步晋升、专注ToB领域】,
目前可能因【寻求更大平台/薪资提升】而看机会。可能适合【产品总监/高级产品经理】的岗位,
但需要核实【近期离职原因、团队管理经验深度】。

执行工作流

模式一:手动上传

用户上传文件/飞书文档链接 → 文件预处理 → 大模型解析 → 飞书写入 → 输出报告

模式一A:飞书文档链接输入

当用户输入飞书文档链接时,按以下流程处理:

用户输入飞书链接 → 链接解析 → 获取文档内容 → 文本预处理 → 大模型解析 → 飞书写入 → 输出报告

飞书文档链接识别规则:

  • 支持的链接格式:https://.feishu.cn/document/...https://open.feishu.cn/document/...
  • 自动提取文档 ID(docx-xxx 格式)
  • 调用飞书 API 获取文档内容

飞书文档内容获取:

# 伪代码示意
def fetch_feishu_document(doc_url: str) -> str:
    # 1. 从链接中提取文档 token
    import re
    match = re.search(r'/document/([a-zA-Z0-9-]+)', doc_url)
    doc_token = match.group(1)

    # 2. 获取文档内容
    token = get_tenant_access_token(APP_ID, APP_SECRET)

    # 获取文档基本信息
    url = f"https://open.feishu.cn/open-apis/doc/v1/documents/{doc_token}"
    response = request("GET", url, headers={"Authorization": f"Bearer {token}"})

    # 获取文档块内容
    blocks_url = f"https://open.feishu.cn/open-apis/doc/v1/documents/{doc_token}/blocks"
    blocks_response = request("GET", blocks_url, headers={"Authorization": f"Bearer {token}"})

    # 3. 递归提取所有文本块
    text_content = extract_text_from_blocks(blocks_response.json()["data"]["items"])

    return text_content


def extract_text_from_blocks(blocks: list) -> str:
    """递归提取文档块中的文本内容"""
    text_parts = []

    for block in blocks:
        block_type = block.get("block_type")

        if block_type == "text":
            # 纯文本块
            text = block.get("text", {}).get("content", "")
            text_parts.append(text)

        elif block_type == "paragraph":
            # 段落块
            elements = block.get("paragraph", {}).get("elements", [])
            for elem in elements:
                if elem.get("type") == "text":
                    text_parts.append(elem.get("text", {}).get("content", ""))
                elif elem.get("type") == "mention":
                    # @提及
                    text_parts.append(elem.get("mention", {}).get("name", ""))

        elif block_type == "table":
            # 表格块
            table_cells = block.get("table", {}).get("cells", [])
            for row in table_cells:
                for cell in row:
                    text_parts.append(cell.get("text", {}).get("content", ""))

        elif block_type == "code":
            # 代码块
            text_parts.append(block.get("code", {}).get("content", ""))

        # 递归处理子块
        if "children" in block:
            text_parts.append(extract_text_from_blocks(block["children"]))

    return "\n".join(text_parts)

飞书文档内容预处理:

  • 清理特殊字符和格式标记
  • 保留表格结构(转换为文本表格形式)
  • 处理图片块(若包含简历图片,下载后进行 OCR 识别)
  • 合并多页内容(飞书文档可能分页)
def preprocess_feishu_content(raw_text: str, doc_blocks: list) -> str:
    """预处理飞书文档内容"""
    # 1. 基础清理
    text = raw_text
    text = re.sub(r'\n{3,}', '\n\n', text)  # 多个换行压缩为两个
    text = text.strip()

    # 2. 检查是否需要 OCR(图片块)
    has_images = any(block.get("block_type") == "image" for block in doc_blocks)

    if has_images:
        # 下载图片并进行 OCR
        ocr_text = ""
        for block in doc_blocks:
            if block.get("block_type") == "image":
                image_token = block.get("image", {}).get("token")
                if image_token:
                    image_content = download_feishu_image(image_token)
                    ocr_text += "\n" + ocr_image(image_content)

        text += "\n[图片内容]\n" + ocr_text

    # 3. 处理表格(转换为易读格式)
    text = convert_tables_to_text(text, doc_blocks)

    return text

模式二:定时监控

Cron触发(每周一10:00) → 扫描目录 → 增量检测 → 处理新增/修改文件 → 更新状态 → 飞书通知

详细步骤

STEP 1: 文件预处理

文件类型处理方式
--------------------
PDF使用 pdfplumber/PyPDF2 提取文本
Word (.docx)使用 python-docx 解析,支持表格
WPS (.wps/.et)转换为兼容格式后解析
图片使用 OCR(Tesseract/云服务)识别
飞书文档链接调用飞书 API 获取文档内容和块结构

STEP 2: 大模型结构化解析

将预处理文本传入大模型,按字段定义提取信息。

Prompt 结构:

请从以下简历文本中提取结构化信息,严格按 JSON 格式输出。

【简历文本】
{resume_text}

【输出格式】
{
  "姓名": "",
  "手机号": "",
  "邮箱": "",
  "性别": "",
  "年龄": null,
  "最高学历": "",
  "毕业院校": "",
  "专业": "",
  "工作年限": null,
  "当前公司": "",
  "当前职位": "",
  "过往公司": "",
  "期望薪资": "",
  "期望城市": "",
  "技能标签": [],
  "项目经历": "",
  "备注": "",
  "总体画像": ""
}

【解析规则】
1. 年龄:若未明确标注,根据最早学历入学年份+18推算
2. 毕业院校:若属于985院校添加"(985)",若仅211添加"(211)"
3. 过往公司:除最近一份外的所有公司,用"/"分隔
4. 总体画像:必须按模板生成完整分析
5. 缺失字段:留空或填null,不要编造

STEP 3: 飞书多维表格写入

# 伪代码示意
def write_to_feishu(record: dict, is_update: bool = False):
    token = get_tenant_access_token(APP_ID, APP_SECRET)

    if is_update and existing_record_id:
        # 更新已有记录
        url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records/{record_id}"
        method = "PUT"
    else:
        # 新增记录
        url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records"
        method = "POST"

    response = request(method, url, headers={"Authorization": f"Bearer {token}"}, json={"fields": record})
    return response

STEP 4: 更新状态文件(监控模式)

{
  "last_scan": "2026-02-17T10:00:00",
  "processed_files": {
    "张三_产品经理.pdf": {
      "mtime": "2026-02-15T14:30:00",
      "status": "success",
      "feishu_record_id": "recXXXXXX"
    }
  }
}

STEP 5: 生成执行报告 & 飞书通知

报告格式:

## 简历同步报告 | {datetime}

### 执行统计
| 状态 | 数量 |
|------|------|
| ✅ 成功 | {success_count} |
| ⏭️ 跳过 | {skip_count} |
| ❌ 失败 | {fail_count} |

### 处理详情
{detail_list}

### 失败原因
{failure_reasons}

飞书机器人通知:

{
  "msg_type": "interactive",
  "card": {
    "header": {
      "title": {"tag": "plain_text", "content": "📋 简历同步报告"},
      "template": "blue"
    },
    "elements": [
      {
        "tag": "div",
        "text": {"tag": "lark_md", "content": "✅ 成功:{success}\n⏭️ 跳过:{skip}\n❌ 失败:{fail}"}
      },
      {
        "tag": "action",
        "actions": [{"tag": "button", "text": {"tag": "plain_text", "content": "查看表格"}, "url": "{table_url}", "type": "primary"}]
      }
    ]
  }
}

错误处理决策树

遇到错误?
    │
    ├─ 文件格式不支持
    │   └─ 记录: [SKIP] {filename}: 格式不支持
    │   └─ 动作: 继续下一个文件
    │
    ├─ OCR 识别失败/识别率过低
    │   └─ 记录: [SKIP] {filename}: OCR识别失败
    │   └─ 动作: 继续下一个文件
    │
    ├─ 单个字段解析失败
    │   └─ 记录: [WARN] {filename}: {field}字段解析失败
    │   └─ 动作: 该字段留空,继续其他字段
    │
    ├─ 飞书 Token 过期
    │   └─ 动作: 自动刷新 Token,重试一次
    │   └─ 若仍失败: 记录 [FAIL],继续下一个
    │
    ├─ 飞书 API 写入失败
    │   └─ 记录: [FAIL] {filename}: API错误 - {error_msg}
    │   └─ 动作: 继续下一个文件
    │
    └─ 监控目录不存在
        └─ 记录: [ERROR] 监控目录不存在: {path}
        └─ 动作: 发送飞书告警,终止本次扫描

示例(Few-Shot)

✅ Good Case:一步到位完成

用户输入:

请解析这份简历并同步到飞书表格
[上传文件: 张三_产品经理.pdf]

正确执行(无中断):

正在处理简历文件...

✅ 解析完成,已同步至飞书多维表格

| 字段 | 值 |
|------|-----|
| 姓名 | 张三 |
| 手机号 | 138xxxx8888 |
| 邮箱 | zhangsan@email.com |
| 性别 | 男 |
| 年龄 | 29 |
| 最高学历 | 本科 |
| 毕业院校 | 北京大学 (985) |
| 专业 | 计算机科学 |
| 工作年限 | 6 |
| 当前公司 | 字节跳动 |
| 当前职位 | 高级产品经理 |
| 过往公司 | 腾讯/百度 |
| 期望薪资 | 40-50K |
| 期望城市 | 北京 |
| 技能标签 | 用户增长, 数据分析, B端产品 |
| 项目经历 | 负责XX项目,DAU提升200%... |
| 备注 | 自我评价:6年互联网产品经验... |
| 总体画像 | 这是一位在【互联网】有【6年】经验的【产品经理】专家... |
| 文件来源 | 张三_产品经理.pdf |

📋 执行报告:成功 1 份 | 跳过 0 份 | 失败 0 份

✅ Good Case:飞书文档链接输入

用户输入:

请解析这份飞书文档中的简历并同步到飞书表格
https://.feishu.cn/document/DAqd8Wrnh5NMks3k

正确执行(无中断):

正在获取飞书文档内容...
正在解析简历信息...

✅ 解析完成,已同步至飞书多维表格

| 字段 | 值 |
|------|-----|
| 姓名 | 李四 |
| 手机号 | 139xxxx9999 |
| 邮箱 | li4@example.com |
| 性别 | 女 |
| 年龄 | 28 |
| 最高学历 | 硕士 |
| 毕业院校 | 复旦大学 (985) |
| 专业 | 工商管理 |
| 工作年限 | 5 |
| 当前公司 | 拼多多 |
| 当前职位 | 运营经理 |
| 过往公司 | 京东/阿里 |
| 期望薪资 | 35-45K |
| 期望城市 | 上海 |
| 技能标签 | 用户运营, 数据分析, 电商运营 |
| 项目经历 | 负责XX项目,GMV提升150%... |
| 备注 | 自我评价:5年电商运营经验... |
| 总体画像 | 这是一位在【电商】有【5年】经验的【运营经理】专家... |
| 文件来源 | 飞书文档 (DAqd8Wrnh5NMks3k) |

📋 执行报告:成功 1 份 | 跳过 0 份 | 失败 0 份

❌ Anti-Pattern:禁止的中断行为

禁止行为 1:询问确认

❌ 错误示范:
"我已经解析了简历的基本信息,是否需要我继续生成总体画像?"
"文件较大,是否分批处理?"
"检测到手机号字段为空,是否需要您补充?"

禁止行为 2:请求额外信息

❌ 错误示范:
"请提供飞书表格的链接"(应使用预配置)
"简历中没有年龄信息,请问候选人多大?"(应自动推理或留空)
"这份简历有多段工作经历,您希望如何处理?"(应按预设规则处理)

禁止行为 3:部分执行后停止

❌ 错误示范:
"已完成 10 份简历的解析,剩余 90 份是否继续?"
"第 5 份简历解析失败,是否跳过继续?"(应自动跳过)

✅ Good Case:批量处理静默完成

用户输入:

批量处理这些简历
[上传 50 个文件]

正确执行(无中断,直接输出最终报告):

正在批量处理 50 份简历...

━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 简历同步报告 | 2026-02-17 10:30
━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 成功:47 份
⏭️ 跳过:2 份
❌ 失败:1 份

【跳过详情】
• 模糊照片.jpg - OCR识别率过低
• 损坏文件.pdf - 文件无法读取

【失败详情】
• 李四_设计师.docx - 飞书API限流,建议稍后重试

🔗 查看飞书表格:[点击打开]

增量监控模式说明

触发条件

  • Cron 表达式:0 10 1(每周一 10:00)
  • 或手动触发:「扫描简历目录」「检查新简历」

增量检测逻辑

  1. 读取 state_file 获取已处理文件列表
  2. 扫描 watch_directory 下的所有简历文件
  3. 比对文件名 + 修改时间(mtime)
  4. 筛选出:新增文件 + 修改过的文件
  5. 同名文件若 mtime 变化 → 视为更新,覆盖飞书记录

状态文件维护

  • 每次处理后更新 state_file
  • 记录:文件名、mtime、处理状态、飞书 record_id
  • record_id 用于同名文件的更新操作

附录

依赖工具

  • Python: pdfplumber, python-docx, pytesseract, requests
  • OCR: Tesseract 或云服务(阿里云/腾讯云)
  • 飞书开放平台 API

跨平台环境配置指南

本技能支持 Linux、Windows、macOS 三大主流操作系统。以下是各系统的环境配置说明。

macOS 环境配置

Mac 用户推荐使用 Homebrew 进行包管理,安装步骤如下:

第一步:安装 Homebrew(若已安装可跳过)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

第二步:安装 Python 依赖库

# 安装 Python(若系统已自带可跳过)
brew install python@3.11

# 安装核心依赖
pip install pdfplumber python-docx pytesseract requests watchdog openpyxl

第三步:安装 Tesseract OCR(图片识别必需)

# 安装 Tesseract 及中文语言包
brew install tesseract
brew install tesseract-lang

# 验证安装
tesseract --version

安装完成后,需在 Python 代码中指定 Tesseract 路径:

import pytesseract

# Apple Silicon Mac (M1/M2/M3)
pytesseract.pytesseract.tesseract_cmd = '/opt/homebrew/bin/tesseract'

# Intel Mac
# pytesseract.pytesseract.tesseract_cmd = '/usr/local/bin/tesseract'

第四步:安装 LibreOffice(WPS 文件转换可选)

若需要处理 WPS 格式文件,推荐安装 LibreOffice:

brew install --cask libreoffice

转换命令示例:

soffice --headless --convert-to docx "input.wps" --outdir "output/"

第五步:安装浏览器驱动(猎聘网站抓取可选)

若使用浏览器自动化功能抓取招聘网站简历,需要安装 Chrome 和 ChromeDriver:

# 安装 Chrome
brew install --cask google-chrome

# 安装 ChromeDriver(版本需与 Chrome 匹配)
brew install chromedriver

或者使用 Playwright(推荐):

pip install playwright
playwright install chromium

Windows 环境配置

第一步:安装 Python

从官网下载 Python 3.11+:https://www.python.org/downloads/

安装时勾选「Add Python to PATH」选项。

第二步:安装依赖库

pip install pdfplumber python-docx pytesseract requests watchdog openpyxl

第三步:安装 Tesseract OCR

下载 Windows 版本的 Tesseract:https://github.com/UB-Mannheim/tesseract/wiki

安装后配置环境变量,或在代码中指定路径:

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

第四步:安装 LibreOffice(可选)

下载 LibreOffice:https://www.libreoffice.org/download/download/

Linux 环境配置

第一步:安装系统依赖

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y python3-pip tesseract-ocr tesseract-ocr-chi-sim libreoffice

# CentOS/RHEL
sudo yum install -y python3-pip tesseract libreoffice

第二步:安装 Python 依赖

pip3 install pdfplumber python-docx pytesseract requests watchdog openpyxl

环境验证

安装完成后,可通过以下命令验证环境:

# 验证 Python 依赖
python -c "import pdfplumber, docx, pytesseract, requests; print('✅ 依赖库验证通过')"

# 验证 Tesseract
tesseract --version

# 验证 LibreOffice(可选)
soffice --version

常见问题

问题解决方案
----------------
Tesseract 找不到检查安装路径是否正确添加到系统 PATH
中文识别率低确保安装了 tesseract-lang 中文语言包
WPS 文件解析失败安装 LibreOffice 并确保转换命令可执行
浏览器驱动版本不匹配使用 Playwright 自动管理驱动版本

相关文件


版本记录

版本日期变更
------------------
1.1.02026-03-09新增飞书文档链接输入支持
1.0.02026-02-17初始版本:支持手动上传 + 定时监控

版本历史

共 4 个版本

  • v1.0.3 Initial release 当前
    2026-06-11 00:36 安全 安全
  • v1.0.2 Initial release
    2026-06-11 00:07 安全
  • v1.0.1 更新了下README文件,我们龙虾帮是致力于开发出适合HR/猎头使用的skill的开源组织
    2026-06-10 23:30 安全 安全
  • v1.0.0 Initial release
    2026-06-10 17:12 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,211 📥 266,213
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 668 📥 323,845
ai-intelligence

self-improving agent

pskoett
捕获经验教训、错误和纠正,以实现持续改进。使用时机:(1)命令或操作意外失败;(2)用户纠正……
★ 4,056 📥 796,412