← Back to Skills Marketplace
heimo-he

Feishu Chat

by kkkkkks0 · GitHub ↗ · v1.1.1
cross-platform ✓ Security Clean
997
Downloads
0
Stars
15
Active Installs
11
Versions
Install in OpenClaw
/install feishu-chat
Description
Feishu (Lark) group chat messaging guide for OpenClaw. Includes Raw/Card message modes, @ mention formatting, and group member management. Use when sending m...
README (SKILL.md)

Feishu Group Chat Guide

Quick Start: Configure renderMode

⚠️ IMPORTANT: Set renderMode explicitly for stable message formatting

# Recommended configuration
channels:
  feishu:
    renderMode: "card"  # Always use card format

Why? The default "auto" mode causes unpredictable format switching (raw vs card), creating poor user experience.

Configuration:

openclaw config set channels.feishu.renderMode "card"
openclaw gateway restart

Verify:

openclaw config get channels.feishu.renderMode

Prerequisites

  1. In a Feishu group - OpenClaw connected to Feishu
  2. Configure renderMode - Set to "card" for consistent formatting
  3. Know member IDs:
    • Human: open_id (ou_xxx format)
    • Bot: App ID (cli_xxx format)

0. Message Format Stability

The Problem: Raw vs Card Mixing

Without proper renderMode configuration, messages can inconsistently appear as:

  • Raw text: Plain markdown source, no formatting
  • Card format: Rendered markdown with syntax highlighting, tables, links

The Solution: Explicit renderMode

Mode Behavior Use Case
auto Detects content, uses card for code/tables Avoid - unpredictable
raw Always plain text Simple text-only responses
card Always interactive card Recommended - consistent

Recommended: renderMode: "card" for all production use.


1. Message Sending

⚠️ CRITICAL: Only Use ONE Method

DO NOT use both direct reply and message tool for the same content! This will send two messages.

Choose ONE:

  • Plain text → message tool only
  • Markdown → direct reply only

Two Methods

Method Tool Render Mode Use Case
message tool message Raw (plain text) Plain text, @ mentions
Direct reply Session reply Card (with Markdown) Markdown formatted messages

Raw Mode (Plain Text)

When to use: Plain text messages, @ mentions

How to send:

message({
  action: "send",
  channel: "feishu",
  target: "oc_xxx",
  message: "Plain text content"
})

@ Mention format:

message({
  action: "send",
  channel: "feishu",
  target: "oc_xxx",
  message: "\x3Cat user_id=\"ou_xxx\">nickname\x3C/at> Hello!"
})

Raw Mode Limitations:

  • ❌ No Markdown rendering (bold, italic, code blocks won't render)
  • ❌ Tables won't render
  • ❌ Links won't render
  • ✅ @ mentions work correctly

Card Mode (Markdown)

When to use: Formatted messages with code blocks, tables, bold/italic text

How to send: Direct reply in session with Markdown elements.

Card Mode Triggers (any of these):

  • Code blocks
  • Tables | table |
  • Bold **bold**
  • Italic *italic*
  • Strikethrough ~~text~~
  • Links [link](url)
  • Headings # heading
  • Lists - item or 1. item

@ Mention format:

\x3Cat id=ou_xxx>\x3C/at> This is Card mode @ mention

**Markdown content** renders correctly

Supported in Card Mode:

Style Syntax Status
Bold **bold** ✅ Supported
Italic *italic* ✅ Supported
Strikethrough ~~text~~ ✅ Supported
Color \x3Cfont color='red'>text\x3C/font> ✅ Supported
Links [link](https://xxx) ✅ Supported
Headings # heading ✅ Supported
Lists - item or 1. item ✅ Supported
Code blocks code ✅ Supported
Tables ` table

Not Supported in Card Mode:

Style Syntax Status
Blockquote > quote ❌ Not supported
Inline code `code` ❌ Unstable
Horizontal rule --- ❌ Not supported
Complex nesting Multiple levels ❌ Unstable

Best Practice for Card Mode:

  • Use **bold** for emphasis
  • Use *italic* for light emphasis
  • Use numbered lists 1. or bullet lists -
  • Avoid ---, >, and inline code
  • Keep formatting simple

Avoid Auto Mode

Problem: Auto mode can incorrectly choose between Raw and Card.

Best Practice:

  • Plain text → Use message tool (Raw mode)
  • Markdown content → Direct reply (Card mode)

Don't:

  • Use message tool for Markdown (won't render)
  • Use complex structures in Card mode (may trigger Raw incorrectly)

2. Group Member Management

⚠️ Important: Bots Only See @ Mentioned Messages

Bots can only see messages that @ mention them! If a group member sends a message without @ mentioning the bot, the bot won't receive it.

This means:

  • To identify a human member's open_id, they must @ mention the bot and send a message
  • The bot cannot see past messages where it wasn't mentioned

How to Get Member IDs

Human open_id (must @ mention bot):

  1. Ask the human to @ mention the bot and send any message
  2. When the message arrives, the system shows: [Feishu oc_xxx:ou_xxx timestamp] nickname: message content
  3. The ou_xxx is the sender's open_id

Bot App ID (requires user to provide):

  1. Go to Feishu Developer Console: https://open.feishu.cn/app
  2. Click on the bot you want to view
  3. In "Application Credentials" (应用凭证), copy the App ID (cli_xxx format)
  4. @ mention the bot and send the App ID

Maintain Member List

Store member info in memory file:

## Group Members (oc_xxx)
### Humans
- nickname1: `ou_xxx`
- nickname2: `ou_xxx`

### AI Bots
- bot1: `cli_xxx` (must @ to receive messages)

3. @ Mention Tips

@ Format Difference (Critical!)

Mode @ Format Example
Raw (message tool) \x3Cat user_id="ID">nickname\x3C/at> \x3Cat user_id="ou_xxx">kk\x3C/at>
Card (direct reply) \x3Cat id=ID>\x3C/at> \x3Cat id=ou_xxx>\x3C/at>

@ Different Target Types

@ Target ID Type Raw Format Card Format
Human open_id (ou_xxx) \x3Cat user_id="ou_xxx">nickname\x3C/at> \x3Cat id=ou_xxx>\x3C/at>
Bot App ID (cli_xxx) \x3Cat user_id="cli_xxx">botname\x3C/at> \x3Cat id=cli_xxx>\x3C/at>
Everyone "all" \x3Cat user_id="all">everyone\x3C/at> \x3Cat id=all>\x3C/at>

@ Bot vs @ Human

Important difference:

  • Bots: MUST be @ mentioned to receive messages! Without @, bots won't get notified
  • Humans: Can see all group messages, @ not required

⚠️ Feishu Limitation: Bot-to-Bot Messages

  • A bot CAN send messages and @ mention another bot
  • But bots can only receive messages from human accounts
  • Bots cannot receive messages from other bots
  • Therefore, @ mentioning another bot will NOT notify that bot

Practical implication:

  • If you need to communicate with another bot, ask a human to send the message instead
  • Bot-to-bot communication is not possible in Feishu groups

Example - @ Bot:

// Raw mode
message({
  action: "send",
  channel: "feishu",
  target: "oc_xxx",
  message: "\x3Cat user_id=\"cli_xxx\">botname\x3C/at> Please reply!"
})
// Card mode
\x3Cat id=cli_xxx>\x3C/at> Please reply!

**Markdown content**

@ Everyone

Note: Requires group permission (Group Settings > Group Management > Who can @everyone)

// Raw mode
message({
  action: "send",
  channel: "feishu",
  target: "oc_xxx",
  message: "\x3Cat user_id=\"all\">everyone\x3C/at> Important announcement!"
})
// Card mode
\x3Cat id=all>\x3C/at> Important announcement!

Common @ Mistakes

Raw mode errors:

  • @nickname - Plain text, no notification
  • @{nickname} - Plain text
  • \x3Cat id="ou_xxx">\x3C/at> - id attribute doesn't work in Raw mode

Card mode errors:

  • \x3Cat user_id="ou_xxx">nickname\x3C/at> - user_id attribute doesn't work in Card mode

4. Quick Reference

Message Decision Tree

Need to send message
    │
    ├─ Plain text only?
    │   └─ YES → message tool (Raw mode)
    │
    └─ Need Markdown?
        └─ YES → Direct reply (Card mode)

@ Mention Decision Tree

Need to @ mention
    │
    ├─ Using message tool?
    │   └─ YES → \x3Cat user_id="ID">nickname\x3C/at>
    │
    └─ Direct reply (Card mode)?
        └─ YES → \x3Cat id=ID>\x3C/at>

ID Format Reference

Type Format Example
Human open_id ou_xxx ou_example123abc
Bot App ID cli_xxx cli_example456def
Group chat_id oc_xxx oc_example789ghi

5. Important Notes

  1. Card and Raw mode use different @ formats - Wrong format = @ fails
  2. Bots MUST be @ mentioned to receive messages - Humans don't need @
  3. Bot-to-bot communication is NOT possible - Bots can only receive messages from humans, not other bots
  4. message tool only sends Raw mode - No Markdown rendering
  5. @everyone requires group permission
  6. Avoid unsupported styles in Card mode (blockquote, inline code, horizontal rule)

6. Configuration Reference

renderMode Settings

Location: OpenClaw config file or environment

Quick Setup:

# Set to card mode (recommended)
openclaw config set channels.feishu.renderMode "card"
openclaw gateway restart

Environment-specific configurations:

Development:

channels:
  feishu:
    renderMode: "raw"  # Easier debugging
    dmPolicy: "open"   # Easier testing

Production:

channels:
  feishu:
    renderMode: "card"      # Consistent formatting
    dmPolicy: "pairing"     # Security
    requireMention: true    # Avoid spam

Troubleshooting

Messages appear as raw markdown:

  1. Check: openclaw config get channels.feishu.renderMode
  2. Set: openclaw config set channels.feishu.renderMode "card"
  3. Restart: openclaw gateway restart

Format switches between raw and card:

  • Cause: Using renderMode: "auto"
  • Fix: Change to "card" or "raw" explicitly

Proactive messages not using card:

  • Expected: Proactive messages (via message tool) always use plain text
  • Workaround: Have user send a message first, then reply

Source

  • Tested on: OpenClaw Feishu integration
  • Test date: 2026-02-27 ~ 2026-02-28
  • Source files:
    • /home/admin/.openclaw/extensions/feishu/src/bot.ts
    • /home/admin/.openclaw/extensions/feishu/src/reply-dispatcher.ts
    • /home/admin/.openclaw/extensions/feishu/src/mention.ts
    • /home/admin/.openclaw/extensions/feishu/src/send.ts
Usage Guidance
This skill is a documentation-only guide for Feishu message formatting and is coherent with its description, but before following its commands you should: (1) review and approve the suggested openclaw config change (channels.feishu.renderMode) because it modifies agent-wide behavior and requires a gateway restart; (2) be deliberate about storing member IDs — treat open_id/App ID values as potentially sensitive identifiers and store them securely (or in ephemeral/test data first); (3) test the advice in a non-production environment to confirm it behaves as expected; and (4) avoid running commands you don't understand and verify you trust the source since the SKILL.md will not itself install code or request credentials but does instruct config changes and persistent storage.
Capability Analysis
Type: OpenClaw Skill Name: feishu-chat Version: 1.1.1 The skill bundle is a comprehensive guide for an AI agent to interact with Feishu (Lark) group chats. It provides detailed instructions on message formatting (Raw vs. Card modes), member ID management, and configuration settings (e.g., 'openclaw config set channels.feishu.renderMode'). The content is strictly focused on the stated purpose of Feishu integration and does not contain any evidence of data exfiltration, malicious execution, or harmful prompt injection.
Capability Assessment
Purpose & Capability
Name/description match the content: the SKILL.md is a messaging/formatting guide for Feishu group chats and all instructions (message formats, @ mentions, member ID collection, renderMode config) relate to that purpose.
Instruction Scope
Instructions stay within the stated domain (how to send messages, mention users, and gather IDs). Two things to note: (1) it tells the operator to change global OpenClaw config (channels.feishu.renderMode) and restart the gateway, which affects agent-wide behavior beyond a single message; (2) it recommends keeping a 'memory file' of member IDs (open_id/cli_xxx), which creates persistent storage of user/bot identifiers. Both are relevant to the purpose but warrant review before applying.
Install Mechanism
No install spec or code files are present — this is instruction-only, so nothing will be downloaded or written by an installer step.
Credentials
The skill declares no required environment variables, credentials, or config paths. It asks operators to obtain Feishu App IDs and open_ids as part of normal usage; no unrelated secrets are requested.
Persistence & Privilege
always:false and model invocation is allowed (normal). The SKILL.md instructs changing OpenClaw config and storing member lists, which are legitimate for this use but have persistence/privilege implications — these changes affect agent-wide behavior and create stored identifiers that may contain personal info.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install feishu-chat
  3. After installation, invoke the skill by name or use /feishu-chat
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.1
- Removed the `skill.json` file to streamline configuration. - Cleaned up `SKILL.md` by removing the trailing skill trigger keywords and inline documentation at the top. - No changes were made to core functionality or user instructions. - The guide remains focused on message modes, @ mention formatting, and group member management in Feishu (Lark) groups.
v1.1.0
feishu-chat 1.1.0 - Added support for skill metadata configuration with new skill.json file. - Documentation now strongly recommends explicitly setting renderMode to "card" for consistent message formatting. - Updated usage guide with clear configuration instructions and troubleshooting for raw vs card message modes. - Emphasized that "auto" renderMode is not reliable and should be avoided for production use.
v1.0.8
feishu-chat 1.0.8 - Expanded Card mode documentation: clarified that horizontal rules (`---`) and complex nesting are not supported, and added best practices for Card formatting. - Updated the "Not Supported in Card Mode" table: now explicitly lists "Horizontal rule" and "Complex nesting" as unsupported/unstable. - Improved consistency of notes and formatting across message mode explanations. - No functional or API changes; documentation update only.
v1.0.7
Version 1.0.7 of feishu-chat - No changes detected in this release. - Documentation, features, and guidance remain the same as the previous version.
v1.0.6
No user-facing changes in this version. - No file changes detected since the last release.
v1.0.5
- Added a critical warning: Only use either the message tool (Raw mode) or direct reply (Card mode) for a message, not both—using both will result in duplicate messages. - Clarified best practices on choosing message method: use message tool for plain text, direct reply for Markdown. - No changes to logic or code—documentation update only. - All previous instructions and group chat handling guidance remain unchanged.
v1.0.4
- Clarified that bot-to-bot communication is not possible: bots can only receive messages from human accounts, not from other bots, even when @ mentioned. - Added explicit warning and explanation about the Feishu platform limitation regarding bot-to-bot messages. - Updated @ mention tips and Important Notes sections to include this limitation and provide guidance for communicating with bots. - No changes to code or functionality; this update improves documentation accuracy and user guidance.
v1.0.3
- Updated instructions for locating Bot App ID: clarified steps and provided a direct link to the Feishu Developer Console. - All other guidance remains unchanged.
v1.0.2
feishu-chat 1.0.2 - Added a concise, comprehensive SKILL.md guide for Feishu (Lark) group chat with OpenClaw. - Clarified message sending modes (Raw and Card), including formatting, when to use each, and limitations. - Provided detailed instructions for @ mention formats in both modes and highlighted common mistakes. - Included practical steps for group member management and obtaining user/bot IDs. - Added quick-reference tables, best practices, and decision trees for efficient usage. - Documented important caveats for bot message reception, Markdown support, and permission requirements.
v1.0.1
- Clarified that bots only see messages they're @ mentioned in; bots cannot read all group messages. - Updated instructions for obtaining human member IDs: now requires that the human @ mention the bot to be identified. - Added warning banners and explanatory notes about bot visibility limits and member ID lookup. - No code/interface changes; documentation only.
v1.0.0
feishu-chat 1.0.0 Changelog - Initial release providing a comprehensive guide for Feishu (Lark) group chat messaging in OpenClaw. - Covers sending messages in Raw and Card (Markdown) modes, with clear usage scenarios and syntax examples. - Details how to correctly format @ mentions for both humans and bots, including permission notes. - Offers group member ID management instructions and quick reference decision trees. - Lists Markdown features supported in Card mode and outlines common mistakes to avoid.
Metadata
Slug feishu-chat
Version 1.1.1
License
All-time Installs 16
Active Installs 15
Total Versions 11
Frequently Asked Questions

What is Feishu Chat?

Feishu (Lark) group chat messaging guide for OpenClaw. Includes Raw/Card message modes, @ mention formatting, and group member management. Use when sending m... It is an AI Agent Skill for Claude Code / OpenClaw, with 997 downloads so far.

How do I install Feishu Chat?

Run "/install feishu-chat" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Feishu Chat free?

Yes, Feishu Chat is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Feishu Chat support?

Feishu Chat is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Feishu Chat?

It is built and maintained by kkkkkks0 (@heimo-he); the current version is v1.1.1.

💬 Comments