Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Feishu Group Memory

v1.0.0

Extract and store structured information from Feishu group messages, then query it and get AI-generated insights. Use when the user wants to: record what's b...

0· 307· 1 versions· 1 current· 1 all-time· Updated 10h ago· MIT-0

Install

openclaw skills install feishu-group-memory

Feishu Group Memory

Architecture

Scripts handle data only — no LLM calls inside scripts:

  • onboarding.py — read/write industry knowledge pack config
  • listener.py — fetch raw messages from Feishu; save analyzed records
  • query.py — keyword search over stored records
  • billing.py — SkillPay charge/balance/payment-link

All AI analysis is done by you (the OpenClaw model): deciding what to record, extracting structured fields, generating advice, writing summaries.


Quick Reference

OperationScriptBilled
Check industry configonboarding.py checkFree
Load built-in industry packonboarding.py setup --industryFree
Save custom industry packonboarding.py save --contentFree
Find group by namelistener.py find_chat --nameFree
Fetch raw messageslistener.py fetch_rawFree
Save analyzed recordslistener.py save_recordsFree
Search recordsquery.py searchFree
List records by periodquery.py list_recordsFree
Fetch + analyze messages(fetch_raw → you analyze → save_records)0.005 USDT
Get AI advice(query → you advise)0.003 USDT
Generate summary report(list_records → you summarize)0.005 USDT

First Use: Onboarding

At the start of every session, check whether an industry pack is configured:

python3 {baseDir}/scripts/onboarding.py check --workspace ~/.openclaw/workspace
  • {"configured": true, "context": "..."} → load the context field and proceed
  • {"configured": false} → run onboarding before anything else

Onboarding conversation

Ask the user:

"Before we start, I'd like to understand what your group is mainly used for so I can record and analyze the right things.

Choose one, or describe it in your own words:

  1. 📈 Sales tracking (leads, quotes, deals)
  2. 🎧 Customer support (tickets, issues, complaints)
  3. ⚖️ Legal matters (contracts, risks, cases)
  4. 📋 Project management (tasks, milestones, blockers)
  5. ✍️ Describe my own use case"

Saving the config

Built-in industry (options 1–4):

python3 {baseDir}/scripts/onboarding.py setup \
  --industry sales \
  --workspace ~/.openclaw/workspace

Valid slugs: sales / customer-service / legal / project

Custom description (option 5):

Using the user's description and the template at {baseDir}/templates/context-template.md, generate the knowledge pack yourself, then save it:

python3 {baseDir}/scripts/onboarding.py save \
  --content "YOUR GENERATED CONTENT" \
  --workspace ~/.openclaw/workspace

Confirm with the user: "Got it! I'll use this context going forward. Which group would you like me to start recording?"


Feature: Record Group Messages

Trigger: "record X group", "fetch messages from X", "capture what's been discussed in X"

Step 1 — Find the group

python3 {baseDir}/scripts/listener.py find_chat --name "KEYWORD"

If multiple results, show them and ask the user to pick one.

Step 2 — Fetch raw messages

python3 {baseDir}/scripts/listener.py fetch_raw \
  --chat_id CHAT_ID \
  --limit 100 \
  --workspace ~/.openclaw/workspace

Returns an array of {msg_id, time, sender, text} objects.

Step 3 — You analyze

Using the loaded industry knowledge pack (from onboarding check), go through each message and decide:

  • Is it worth recording?
  • What category does it belong to?
  • Who or what is the key entity (person, company, project)?
  • What structured fields can be extracted?
  • What is the urgency (high / medium / low)?

Step 4 — Save the records

python3 {baseDir}/scripts/listener.py save_records \
  --chat_id CHAT_ID \
  --workspace ~/.openclaw/workspace \
  --records '[{"msg_id":"...","time":"...","sender":"...","raw_text":"...","category":"...","key_entity":"...","summary":"...","fields":{...},"urgency":"high"}]'

Step 5 — Report to user

Summarize what was found, e.g.:

"Analyzed 100 messages. Saved 12 items:

  • 3 customer intent signals (Li, Wang, Chen)
  • 5 follow-up actions
  • 4 pricing discussions

2 high-urgency items — want me to walk through them?"

Billing

python3 {baseDir}/scripts/billing.py charge \
  --user_id USER_ID --amount 0.005 --label "message analysis"

If payment_required is returned, show the top-up link and stop.


Feature: Query Records

Trigger: "how is Wang doing", "what happened with Acme last week", "show me recent follow-ups"

python3 {baseDir}/scripts/query.py search \
  --query "KEYWORD" \
  --workspace ~/.openclaw/workspace

Returns matching records as raw JSON. You turn them into a natural-language answer, e.g.:

"Here's what I have on Wang (Wang Zong):

  • Jan 15: Said he can sign next week (high priority)
  • Jan 12: Asked about discount options, still considering

Last contact was 3 days ago — worth reaching out today."

No charge for queries.


Feature: AI Advice

Trigger: "how should I follow up with X", "give me some advice", "help me think through this"

First, search for relevant records:

python3 {baseDir}/scripts/query.py search \
  --query "KEYWORD" \
  --workspace ~/.openclaw/workspace

Then reload the industry pack if needed:

python3 {baseDir}/scripts/onboarding.py check --workspace ~/.openclaw/workspace

Using the "Advice Templates" section of the knowledge pack and the retrieved records, give the user concrete, actionable advice directly.

python3 {baseDir}/scripts/billing.py charge \
  --user_id USER_ID --amount 0.003 --label "AI advice"

Feature: Summary Report

Trigger: "summarize today", "weekly report", "what happened this week"

python3 {baseDir}/scripts/query.py list_records \
  --period today|week|all \
  --workspace ~/.openclaw/workspace

You write the summary. Example structure:

Weekly Summary (Jan 13–19)

28 items recorded across 7 customers.

Action required (3)

  • Li Zong: ready to sign — prepare draft contract
  • Wang Zong: price sticking point — request special approval

By category

  • Customer intent: 12 | Follow-ups: 8 | Pricing: 5 | Other: 3

Suggestion: 2 customers haven't been contacted in 5+ days.

python3 {baseDir}/scripts/billing.py charge \
  --user_id USER_ID --amount 0.005 --label "summary report"

Error Handling

SituationResponse
No industry pack configuredRun onboarding first
Group not found"I couldn't find a group called 'X'. Could you give me the full name?"
No records yet"Nothing recorded yet. Want me to fetch messages from that group now?"
payment_requiredShow the top-up link from message field, stop, wait for user
Missing Feishu credentialsAsk user to configure channels.feishu.accounts in openclaw.json

Version tags

latestvk9749bats7ge4aaavwbqtdhvw582mw6y

Runtime requirements

🧠 Clawdis