← 返回 Skills 市场
g-hanasq

feishu-sheet-tabs

作者 G-Hanasq · GitHub ↗ · v0.1.0 · MIT-0
cross-platform ⚠ suspicious
266
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install feishu-sheet-tabs
功能描述
Create and organize multiple tabs (worksheets/pages) inside an existing Feishu sheet when the normal feishu_sheet API cannot create new worksheet tabs. Use w...
使用说明 (SKILL.md)

Feishu Sheet Tabs

Use this skill to add worksheet tabs inside an existing Feishu sheet by browser automation when feishu_sheet API can create/read/write spreadsheets but cannot create worksheet tabs.

Core conclusion

Current feishu_sheet API supports spreadsheet-level actions like:

  • create
  • info
  • read
  • write
  • append
  • find
  • export

It can target an existing sheet via sheet_id, but it does not expose a direct action for creating worksheet tabs/pages.

When the user explicitly wants tabs/pages inside one spreadsheet, switch to browser automation.

Preconditions

Before using browser automation, ensure all of the following:

  1. The target spreadsheet URL/token is known.
  2. The user is logged into Feishu in a browser tab.
  3. Prefer using the user's real Chrome tab via Browser Relay when available.
  4. If Browser Relay is not attached, isolated browser may work only if it has a valid Feishu login state.

Preferred operating mode

Mode A: User's Chrome tab (preferred)

Use browser with profile="chrome" if the user has attached the tab via OpenClaw Browser Relay.

Why:

  • stable login state
  • real user session
  • fewer auth surprises

Mode B: OpenClaw managed browser

Use profile="openclaw" only if it is already logged into Feishu.

Reliable workflow

Step 1: Verify API limitation first

Do not claim “can’t do it” without checking.

Confirm from tool docs / current tool signature that feishu_sheet has no add_sheet / create_worksheet / add_tab action.

Step 2: Open the spreadsheet in browser

Use browser automation to open the spreadsheet.

Step 3: Inspect runtime objects

Feishu Sheets exposes internal JS objects on the page. In practice, these were found useful:

  • window.spread
  • window.spreadApp

Relevant methods discovered from runtime introspection:

  • spread.addSheet(name)
  • spread.renameSheet(sheetId, name)
  • spread.copySheet(...)
  • spread.moveSheet(...)
  • spread.hideSheet(...)

Step 4: Read current sheet ids/names

Use page evaluation to inspect current sheets before mutation.

Pattern:

window.spread.sheets.map((s,i)=>({
  i,
  id: s.id?.() ?? s._id ?? s.sheetId ?? null,
  name: s.name?.() ?? s._name ?? null
}))

Step 5: Rename default first tab if needed

Typical pattern:

  • rename Sheet1总览

Step 6: Add tabs with spread.addSheet(name)

For example:

  • Skills
  • Workflows
  • Templates
  • Content

Step 7: Fill each tab with feishu_sheet write

After tabs exist and their sheet_ids are known, return to feishu_sheet for structured writes. This is more stable than trying to type cell-by-cell in browser automation.

Proven pattern from this workspace

For spreadsheet:

  • https://bytedance.larkoffice.com/sheets/Bf6qsMV9fhqrD6tPE6TcQhF7nEe

The following sequence worked:

  1. Inspect window.spread
  2. Discover spread.addSheet and spread.renameSheet
  3. Read current sheet list and ids
  4. Rename Sheet1 to 总览
  5. Create:
    • Skills
    • Workflows
    • Templates
    • Content
  6. Use feishu_sheet write with returned sheet ids to populate each tab

Example evaluation snippets

Discover methods

function protoMethods(obj,name){
  if(!obj) return [];
  const out=[];
  let p=Object.getPrototypeOf(obj);
  let depth=0;
  while(p && depth\x3C4){
    for(const k of Object.getOwnPropertyNames(p)){
      if(k==='constructor') continue;
      if(/sheet|tab|workbook|insert|create|add|page|name|rename/i.test(k)) out.push(`${name}.${k}`);
    }
    p=Object.getPrototypeOf(p); depth++;
  }
  return [...new Set(out)];
}

Rename + create tabs

async () => {
  const spread = window.spread;
  const results = [];

  const current = spread.sheets.map(s => ({
    id: s.id?.() ?? s._id ?? null,
    name: s.name?.() ?? s._name ?? null
  }));

  const first = current[0];
  if (first?.name === 'Sheet1') {
    results.push(await spread.renameSheet(first.id, '总览'));
  }

  for (const name of ['Skills','Workflows','Templates','Content']) {
    const names = spread.sheets.map(s => s.name?.() ?? s._name);
    if (!names.includes(name)) {
      results.push(await spread.addSheet(name));
    }
  }

  return spread.sheets.map((s,i)=>({
    i,
    id: s.id?.() ?? s._id ?? null,
    name: s.name?.() ?? s._name ?? null
  }));
}

Important caveats

  1. Prefer internal methods over brittle UI clicking Clicking + in the UI was less reliable than runtime JS calls.

  2. Do not assume a visible plus button is the right entry In this case, one nearby button turned out to be a template entry, not “new tab”.

  3. Use browser only for the tab creation step Once tabs are created, switch back to feishu_sheet write.

  4. Inspect current ids before writing New tabs get generated sheet_ids such as GxGIGa, 9dJYiB, etc. Use actual returned ids.

  5. Avoid blind UI automation first Inspect runtime objects and methods before pixel-clicking.

When to use this skill

Use this skill when the user says things like:

  • “把这个表做成分页”
  • “按类别分开 sheet”
  • “给这张飞书表加几个页签”
  • “我就想分页,你想办法解决”

Output expectation

When done, report:

  • which tabs were created/renamed
  • which tab ids were found
  • whether data filling was also completed
  • whether browser login / relay was required
安全使用建议
This skill legitimately automates a browser to create Feishu worksheet tabs, which requires running JavaScript in a logged-in browser tab — that JS can access anything visible to that page (including other sheets, DOM content, runtime objects). Before installing: 1) Confirm you understand and approve Browser Relay access (the agent will need to run code in your browser session). 2) Do not use this skill on production or sensitive sheets until you trust it; test on an expendable spreadsheet. 3) Ask the skill author to remove or sanitize any hard-coded sheet URLs/tokens in documentation. 4) Prefer to require explicit user confirmation before the agent opens any browser tab or runs page-eval code, and audit logs of which pages were accessed. 5) If you cannot verify the author's intent or the platform's browser-isolation guarantees, treat this as higher-risk and avoid granting browser access.
功能分析
Type: OpenClaw Skill Name: feishu-sheet-tabs Version: 0.1.0 The skill bundle uses browser automation to inject JavaScript and call internal, undocumented Feishu Sheet methods (e.g., `window.spread.addSheet`) to bypass API limitations. It includes an introspection script (`protoMethods`) in `SKILL.md` to discover hidden application logic and encourages using the user's active Chrome session via Browser Relay. While these capabilities are aligned with the stated goal of managing spreadsheet tabs, they represent high-risk behaviors in an authenticated environment without formal API safeguards.
能力评估
Purpose & Capability
The name/description match the instructions: the skill uses browser automation to call Feishu page JS (window.spread) to add/rename sheets and then falls back to feishu_sheet for writes. No unrelated binaries, env vars, or installs are requested.
Instruction Scope
The runtime instructions rely on executing arbitrary JS in a logged-in browser context (inspect window.spread, call spread.addSheet/rename, etc.). Page evaluation can access any data available in that browser tab (DOM, page JS objects, potentially sensitive content). The SKILL.md does not explicitly limit or document data-handling/exfiltration restrictions, nor does it instruct safe confirmation steps beyond verifying login and sheet URL.
Install Mechanism
Instruction-only skill with no install steps or third-party downloads — lowest install-risk profile.
Credentials
No environment variables, credentials, or config paths are requested. The required preconditions (user logged into Feishu, known spreadsheet URL/token) are proportionate to the described browser-automation approach.
Persistence & Privilege
The skill is not always-on and does not request persistent system-wide privileges. It does recommend using the user's Chrome profile via Browser Relay which grants access to a logged-in browser tab (expected for this capability) but increases blast radius if abused.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install feishu-sheet-tabs
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /feishu-sheet-tabs 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.0
Initial release
元数据
Slug feishu-sheet-tabs
版本 0.1.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

feishu-sheet-tabs 是什么?

Create and organize multiple tabs (worksheets/pages) inside an existing Feishu sheet when the normal feishu_sheet API cannot create new worksheet tabs. Use w... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 266 次。

如何安装 feishu-sheet-tabs?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install feishu-sheet-tabs」即可一键安装,无需额外配置。

feishu-sheet-tabs 是免费的吗?

是的,feishu-sheet-tabs 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

feishu-sheet-tabs 支持哪些平台?

feishu-sheet-tabs 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 feishu-sheet-tabs?

由 G-Hanasq(@g-hanasq)开发并维护,当前版本 v0.1.0。

💬 留言讨论