本文へ移動
cccskills
無料GitHub で公開

byted-viking-aisearch-feishu

基于飞书开放平台 API 的云文档/电子表格/多维表格/知识库(Wiki)搜索与内容读取工具(只读)。使用场景:在飞书中搜索文档/表格/多维表格/知识库空间或节点,并读取对应内容。

Also activates for: 飞书搜索、Feishu search docs sheets base wiki、Lark docs sheets base wiki search、搜索飞书文档 表格 多维表格 知识库

インストール方法を見る

含まれるファイル(5)

  • SKILL.md10.4 KB
  • README.md1.3 KB
  • requirements.txt17 B
  • scripts/__init__.py74 B
  • scripts/feishu_search.py39.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Viking AISearch Feishu Skill

你是一个专注于飞书「云文档 / 电子表格 / 多维表格 / 知识库(Wiki)」的搜索与内容读取助手。你必须严格只读,不实现任何写操作。

🎯 核心功能

  • 搜索:聚合搜索云文档(doc/docx)、电子表格(sheet)、多维表格(bitable)、知识库空间与节点(wiki)
  • 读取:读取 doc/docx 原文;读取 sheet 预览区间数据;读取 bitable 表结构与记录样本;读取 wiki 节点(自动跳转到关联对象内容)与 wiki 空间子节点列表

🚦 场景路由

用户意图示例匹配场景主要方法产出
“搜一下飞书里关于‘Q4’的资料”聚合搜索search_items() / search_docs()返回条目列表(title/type/token/url/source…)
“读取这个 docx / sheet / base 的内容”内容读取fetch_raw_content()返回 content(纯文本/TSV/JSON 摘要)
“列出我有权限的知识库空间”知识库空间list_wiki_spaces() / search_wiki_spaces()返回空间列表
“列出某个知识库空间的子节点”空间子节点list_wiki_space_nodes()返回节点列表

📚 主要接口使用方法

1) 初始化

from scripts.feishu_search import FeishuDocSearch

# 方式一:使用环境变量(推荐)
# export LARK_USER_ACCESS_TOKEN="u-xxxxxxxxxxxxxxxxxxxxxxxx"
tool = FeishuDocSearch()

# 方式二:显式传入 access_token
tool = FeishuDocSearch(access_token="u-xxx")

2) 聚合搜索 - search_items()

功能:按关键词搜索云文档/电子表格/多维表格,并可选聚合知识库节点与知识库空间

参数:

参数名类型必填默认值说明
search_keystr是-搜索关键词
countint否10返回数量(分页后)
offsetint否0偏移量(分页后)
typesList[str]否["doc","docx","sheet","bitable","wiki","wiki_space"]搜索类型集合
owner_idsList[str]否None所有者 Open ID 过滤(仅 suite docs 搜索)
chat_idsList[str]否None群聊 ID 过滤(仅 suite docs 搜索)
space_idstr否None仅搜索该知识库空间内节点(wiki 节点搜索)

返回语义:

  • 只要至少一条搜索路径返回可用结果,search_items() 仍可返回 success=true
  • 若某一路径失败或降级,结果会在 data.warnings 中显式暴露,不再静默吞掉
  • 常见 warning 键包括:suite_error、suite_fallback_error、wiki_nodes_error、wiki_spaces_error、wiki_spaces_warning

典型部分成功返回:

{
  "success": true,
  "message": "搜索成功",
  "data": {
    "total": 3,
    "has_more": false,
    "items": [],
    "warnings": {
      "suite_error": {
        "message": "文档套件搜索失败",
        "error": {}
      }
    }
  }
}

3) 兼容接口 - search_docs()

search_docs() 为历史兼容接口,内部基于 search_items() 实现,默认包含 doc/docx/sheet/bitable/wiki。

使用示例:

# 基础搜索
result = tool.search_docs(search_key="项目计划")

# 指定类型搜索
result = tool.search_docs(
    search_key="季度报告",
    docs_types=["doc", "docx", "sheet", "bitable", "wiki"]
)

# 分页搜索
result = tool.search_docs(
    search_key="技术方案",
    count=20,
    offset=0
)

返回示例:

{
  "success": true,
  "message": "搜索成功",
  "data": {
    "total": 12,
    "has_more": false,
    "warnings": {
      "wiki_error": {
        "message": "权限不足,请为应用开通 wiki 搜索相关权限",
        "error": {
          "type": "permission_denied",
          "detail": "HTTP 403: ..."
        }
      }
    },
    "items": [
      {
        "docs_token": "your_docs_token_xxx",
        "docs_type": "docx",
        "owner_id": "ou_xxx",
        "title": "项目计划.docx",
        "url": "https://xxx.feishu.com/docx/xxx",
        "source": "suite_docs"
      },
      {
        "docs_token": "your_docs_token_xxx",
        "docs_type": "wiki",
        "title": "用户操作手册",
        "url": "https://xxx.feishu.com/wiki/xxx",
        "space_id": "your_space_id_xxx",
        "obj_type": "docx",
        "obj_token": "your_obj_token_xxx",
        "source": "wiki_nodes"
      }
    ]
  }
}

3.5) 搜索 wiki 节点 - search_wiki_nodes()

功能:按 wiki 节点标题/内容搜索知识库文档

参数:

参数名类型必填默认值说明
keywordstr是-搜索关键词
countint否None返回数量
offsetint否None偏移量
space_idstr否None指定 wiki 知识空间

使用示例:

result = tool.search_wiki_nodes(
    keyword="用户操作手册",
    space_id="your_space_id_xxx"
)

返回示例:

{
  "success": true,
  "message": "搜索成功",
  "data": {
    "total": 1,
    "has_more": false,
    "items": [
      {
        "docs_token": "your_docs_token_xxx",
        "docs_type": "wiki",
        "title": "用户操作手册",
        "url": "https://xxx.feishu.com/wiki/xxx",
        "space_id": "your_space_id_xxx",
        "obj_type": "docx",
        "obj_token": "your_obj_token_xxx",
        "source": "wiki_nodes"
      }
    ]
  }
}

4) 内容读取 - fetch_raw_content()

支持的 docs_type:

  • doc / docx:读取原文(raw_content)
  • sheet:读取表格预览区间数据(默认首个工作表 A1:Z100,可传 range_a1/max_rows/max_cols)
  • bitable:读取多维表格的数据表列表,并读取一个数据表的记录样本(可传 table_id/page_size/page_token)
  • wiki:读取知识库节点;若节点关联对象为 doc/docx/sheet/bitable,会自动读取关联对象内容
  • wiki_space:读取知识库空间的子节点列表(可分页)

补充说明:

  • search_wiki_spaces() 命中分页上限时,会返回 data.has_more=true,并在 data.warnings.pagination_truncated 中说明结果可能不完整
  • fetch_sheet_content() 在 metainfo 端点失败但 query 端点成功时,仍返回 success=true,并在 data.warnings.metainfo_error 中保留降级信息
  • fetch_bitable_content() 在“表列表获取成功但记录样本读取失败”时,返回 success=true 和 message=部分成功:已获取数据表列表,但记录样本读取失败,同时在 data.warnings.records_error 中暴露失败详情

使用示例:

# 读取 docx
result = tool.fetch_raw_content(
    docs_type="docx",
    docs_token="your_docs_token_xxx"
)

# 读取 sheet(可指定范围)
sheet_result = tool.fetch_raw_content(
    docs_type="sheet",
    docs_token="your_sheet_token_xxx",
    range_a1="Sheet1!A1:D50"
)

# 读取 bitable(可指定表与分页)
base_result = tool.fetch_raw_content(
    docs_type="bitable",
    docs_token="your_app_token_xxx",
    table_id="tbl_xxx",
    page_size=50
)

返回示例(docx):

{
  "success": true,
  "message": "获取成功",
  "data": {
    "content": "Q4项目计划\n一、项目背景..."
  }
}

🔑 鉴权

  • 使用 Authorization: Bearer <LARK_USER_ACCESS_TOKEN>(用户访问令牌)
  • 访问令牌通过 viking_feishu_oauth_provider 注入到环境变量 LARK_USER_ACCESS_TOKEN,实现动态获取

📝 使用流程建议

典型流程:搜索并读取内容

# 1. 搜索
search_result = tool.search_docs(search_key="项目计划")
if not search_result.get("success"):
    print(search_result.get("message"))
    raise SystemExit

items = search_result.get("data", {}).get("items", [])
if not items:
    print("未找到相关文档")
    raise SystemExit

# 2. 获取第一个文档的 token 和类型
first_item = items[0]
docs_token = first_item["docs_token"]
docs_type = first_item["docs_type"]

# 3. 读取内容
content_result = tool.fetch_raw_content(docs_type=docs_type, docs_token=docs_token)
print(content_result)

📋 文档类型枚举

docs_type说明
doc旧版飞书文档
docx新版飞书文档
sheet电子表格
bitable多维表格
wiki飞书 wiki 节点(可自动读取关联对象内容)
wiki_space知识库空间(可读取子节点列表)

获取 wiki 节点信息 - get_wiki_node()

功能:获取 wiki 节点的详细信息,包括标题、关联对象类型等

使用示例:

result = tool.get_wiki_node(node_token="your_node_token_xxx")

返回示例:

{
  "success": true,
  "message": "获取成功",
  "data": {
    "node_token": "your_node_token_xxx",
    "title": "文档标题",
    "obj_type": "docx",
    "obj_token": "your_obj_token_xxx",
    "node_type": "origin",
    "space_id": "your_space_id_xxx",
    "creator": "ou_xxx",
    "owner": "ou_xxx"
  }
}

🚨 错误处理

错误类型识别方式返回提示
认证失败401/Unauthorized"认证失败,请检查 access_token 是否有效或已过期"
权限不足403/Forbidden"权限不足,请为应用开通搜索相关权限"
请求超时包含 timeout"请求超时,请稍后重试"
搜索参数错误search_key 为空"search_key 不能为空"
不支持的文档类型未知的 docs_type"不支持的 docs_type,仅支持 doc/docx/sheet/bitable/wiki/wiki_space"

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Deploy, update, validate, and troubleshoot the AgentKit hybrid-cloud customer-service demo in this directory. Use when a user asks an AI coding agent to follow the README, deploy or update the demo, configure OpenAPI/Runtime/Knowledge/Memory/Sandbox/MCP/Skills/A2A, run customer-view validation, or record manual platform steps and failures.

日本語の概要は準備中です。原文の説明を表示しています。

bytedance/agentkit-samples4702026年10月12日 更新

Generate deterministic SVG algorithmic artwork. Invoke when the user asks for geometric, generative, or algorithmic visual art.

日本語の概要は準備中です。原文の説明を表示しています。

bytedance/agentkit-samples4702026年10月12日 更新

通过本地 Python CLI 和 OpenAPI 客户端管理、排查火山云手机资源。适用于查询实例和资源、截图、执行命令、查看任务、检查应用、主机和机房容量、标签、DNS、路由,以及操作已授权的测试云手机实例。

日本語の概要は準備中です。原文の説明を表示しています。

bytedance/agentkit-samples4702026年10月12日 更新

Launch and continue the Volcengine AI Research survey workflow for concept testing, audience design, questionnaire drafting, interview guide generation, execution confirmation, progress checks, and result queries. Use this skill when the user wants to create, revise, confirm, execute, or follow up on a real AI research survey task in ABCompass instead of doing generic brainstorming, copywriting, translation, summarization, or broad market discussion.

日本語の概要は準備中です。原文の説明を表示しています。

bytedance/agentkit-samples4702026年10月12日 更新

Create and check long-running video material evaluation tasks. Use this skill when the user wants to submit videos for evaluation, check an existing video evaluation task list, or fetch the result of a previously created video evaluation task. This skill is not a general-purpose video upload skill because upload is allowed only as an internal step of task creation. Authentication uses an API key passed as an Authorization bearer token.

日本語の概要は準備中です。原文の説明を表示しています。

bytedance/agentkit-samples4702026年10月12日 更新

火山引擎 AntiDDoSPro 高防域名只读巡检。用户要查域名健康、攻击、流量、CC/WAF/区域封禁、智能防护或 CCAI 状态时使用。

日本語の概要は準備中です。原文の説明を表示しています。

bytedance/agentkit-samples4702026年10月12日 更新

bytedance のスキルをすべて見る

このスキルの問題を報告する