mcpField
F
feishu-chat-history

feishu-chat-history

github.com/zrt-ai-labProductivity29648 installsUpdated 14w ago
Repository

About feishu-chat-history

feishu-chat-history fetches Feishu group messages and presents a summary or review for users who need to revisit a conversation. It uses the Feishu IM API and can organize messages by thread.

Key features

  1. 01Fetch Feishu group messages
  2. 02Summarize recent discussions
  3. 03Parse text, interactive messages, and images
  4. 04Present sender and timestamp details
  5. 05Fetch paginated history

Use cases

  1. 01Review group discussion topics
  2. 02Summarize recent group messages
  3. 03Inspect a specified group's history

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/zrt-ai-lab/opencode-skills --skill feishu-chat-history

After installing, type/feishu-chat-historyin Claude Code to confirm it loaded.

Bundled filesREADME.mdreferences/api.md

Details

From the project README

Feishu Chat History

Fetch message history from a Feishu group chat and summarize or present it to the user.

When to Use

  • User asks what was discussed in a group
  • User wants a summary or review of recent messages
  • User provides a chat_id or is in a group and asks about its history

How to Fetch Messages

Use the Feishu IM API directly via Python. See references/api.md for full details.

Quick summary:

  1. Read credentials from config → channels.feishu.appId / appSecret
  2. Get tenant_access_token via POST /auth/v3/tenant_access_token/internal
  3. Fetch messages via GET /im/v1/messages?container_id_type=chat&container_id={chat_id}&page_size=50

Identifying the chat_id

  • If the user is asking about the current group chat, use the chat_id from the inbound metadata (chat:oc_xxxxx → strip the chat: prefix to get the raw ID)
  • If the user provides a different group, ask for the chat_id

Presenting Results

Parse each message and present a clean summary:

  • Filter out msg_type=system (join/leave events) unless relevant
  • For msg_type=text: extract .body.content as JSON, get the text field
  • For msg_type=interactive: extract text nodes from the elements array
  • For msg_type=image: note as [图片]
  • Include sender name (from mentions or known bot app_ids), timestamp, and content
  • Group by thread if root_id is present
  • End with a human-readable summary of topics discussed

Pagination

If has_more=true, fetch more pages using page_token. Default: fetch 1 page (50 messages). Ask user if they want more.

Comments

Markdown supported