feishu-chat

Feishu (Lark) group chat messaging guide for OpenClaw. Includes Raw/Card message modes, @ mention formatting, and group member management. Use when sending messages in Feishu groups, mentioning users/bots, or formatting messages with Markdown.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "feishu-chat" with this command: npx skills add Heimo-He/feishu-chat

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

ModeBehaviorUse Case
autoDetects content, uses card for code/tablesAvoid - unpredictable
rawAlways plain textSimple text-only responses
cardAlways interactive cardRecommended - 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

MethodToolRender ModeUse Case
message toolmessageRaw (plain text)Plain text, @ mentions
Direct replySession replyCard (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: "<at user_id=\"ou_xxx\">nickname</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:

<at id=ou_xxx></at> This is Card mode @ mention

**Markdown content** renders correctly

Supported in Card Mode:

StyleSyntaxStatus
Bold**bold**✅ Supported
Italic*italic*✅ Supported
Strikethrough~~text~~✅ Supported
Color<font color='red'>text</font>✅ Supported
Links[link](https://xxx)✅ Supported
Headings# heading✅ Supported
Lists- item or 1. item✅ Supported
Code blockscode✅ Supported
Tables`table

Not Supported in Card Mode:

StyleSyntaxStatus
Blockquote> quote❌ Not supported
Inline code`code`❌ Unstable
Horizontal rule---❌ Not supported
Complex nestingMultiple 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@ FormatExample
Raw (message tool)<at user_id="ID">nickname</at><at user_id="ou_xxx">kk</at>
Card (direct reply)<at id=ID></at><at id=ou_xxx></at>

@ Different Target Types

@ TargetID TypeRaw FormatCard Format
Humanopen_id (ou_xxx)<at user_id="ou_xxx">nickname</at><at id=ou_xxx></at>
BotApp ID (cli_xxx)<at user_id="cli_xxx">botname</at><at id=cli_xxx></at>
Everyone"all"<at user_id="all">everyone</at><at id=all></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: "<at user_id=\"cli_xxx\">botname</at> Please reply!"
})
// Card mode
<at id=cli_xxx></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: "<at user_id=\"all\">everyone</at> Important announcement!"
})
// Card mode
<at id=all></at> Important announcement!

Common @ Mistakes

Raw mode errors:

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

Card mode errors:

  • <at user_id="ou_xxx">nickname</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 → <at user_id="ID">nickname</at>
    │
    └─ Direct reply (Card mode)?
        └─ YES → <at id=ID></at>

ID Format Reference

TypeFormatExample
Human open_idou_xxxou_example123abc
Bot App IDcli_xxxcli_example456def
Group chat_idoc_xxxoc_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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Allergy

Take control of Allergy with this health & wellness toolkit. Clean interface, local storage, zero configuration.

Registry SourceRecently Updated
General

wps_office_auto_skill

本地办公自动化,支持文档生成与润色,合同审查,表格清洗与分析,PPT制作,PDF转换与批量处理。

Registry SourceRecently Updated
General

Encrypt

Encrypt - command-line tool for everyday use

Registry SourceRecently Updated
General

Succession Plan

继任计划。关键岗位识别、人才评估、发展路径、过渡方案、知识转移、紧急继任。Succession planning. 继任、人才管理。

Registry SourceRecently Updated