Feishu File Upload

v1.0.3

Upload and send local files to Feishu chats. Requires Feishu app credentials (app_id/app_secret) in ~/.openclaw/openclaw.json. Use when user asks to send/sha...

1· 125·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for brucezhu888/feishu-file-upload.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Feishu File Upload" (brucezhu888/feishu-file-upload) from ClawHub.
Skill page: https://clawhub.ai/brucezhu888/feishu-file-upload
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: OPENCLAW_CHAT_ID
Required binaries: python3
Config paths to check: ~/.openclaw/openclaw.json
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install feishu-file-upload

ClawHub CLI

Package manager switcher

npx clawhub@latest install feishu-file-upload
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the actual behavior: the script uploads a local file to Feishu Drive and sends a file message. Required items (python3, ~/.openclaw/openclaw.json, optional OPENCLAW_CHAT_ID) are appropriate for this functionality.
Instruction Scope
SKILL.md and the script limit actions to reading the indicated openclaw.json credentials, reading the specified local file, calling Feishu APIs to get a token/upload and sending the file. Instructions do not request unrelated files, system state, or unexpected endpoints.
Install Mechanism
No install spec (instruction-only) and the skill includes a Python script. The README notes dependency on the 'requests' library but there is no automated installer; user must ensure python3 and requests are available. This is low risk but worth noting because code will execute when invoked.
Credentials
The only secrets required are Feishu app_id/app_secret stored in ~/.openclaw/openclaw.json and an optional OPENCLAW_CHAT_ID env var. These are proportional to a Feishu upload/send tool and are used as expected.
Persistence & Privilege
Skill does not request permanent presence (always=false), does not modify other skills or system config, and does not persist credentials. It runs only when invoked.
Assessment
This skill appears to do exactly what it says: it reads Feishu app_id/app_secret from ~/.openclaw/openclaw.json, exchanges them for a tenant token, uploads a specified local file, and sends it to the target. Before installing/using: (1) verify the openclaw.json file contains only the Feishu app credentials you intend to use and is stored with appropriate filesystem permissions; (2) ensure the Feishu app has the listed permissions (im:resource:upload or im:resource and im:message); (3) install python3 and the 'requests' package as documented; (4) avoid sending sensitive files unless you trust the Feishu tenant/app and understand Feishu Drive sharing policies; (5) review the included scripts/upload_to_feishu.py yourself if you want to confirm there are no additional behaviors. Overall this is internally coherent and low-risk for its stated purpose.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binspython3
EnvOPENCLAW_CHAT_ID
Config~/.openclaw/openclaw.json
latestvk971855cy17pnph4ygqcb2yx9583x2bm
125downloads
1stars
4versions
Updated 4w ago
v1.0.3
MIT-0

Feishu File Upload

Upload local files to Feishu Drive and send as file messages to chats or users.

When to Use

  • User asks to "send file", "upload file", or "share file" to Feishu
  • Need to share documents (CSV, PDF, Excel, Word) with group or individual
  • Bot needs to send files that Feishu's native message API doesn't support directly
  • Images/videos: Use media parameter in message tool instead (no need for this skill)

Quick Start

Send to Group Chat

python scripts/upload_to_feishu.py /path/to/file.csv oc_xxxxxx --type chat_id

Send to Individual User

python scripts/upload_to_feishu.py /path/to/file.pdf ou_xxxxxx --type open_id

Send via Email

python scripts/upload_to_feishu.py /path/to/file.zip user@example.com --type email

Use Environment Variable

export OPENCLAW_CHAT_ID=oc_xxxxxx
python scripts/upload_to_feishu.py /path/to/file.csv --env

How It Works

  1. Read credentials from ~/.openclaw/openclaw.json (channels.feishu.appId/appSecret)
  2. Get tenant access token from Feishu Auth API
  3. Upload file to Feishu Drive → returns file_key
  4. Send file message using file_key to target chat/user

Script Usage

Arguments

ArgumentRequiredDefaultDescription
file_pathYes-Absolute path to local file
receive_idYes*-Recipient ID (chat_id, open_id, user_id, or email)
--typeNochat_idRecipient type: chat_id, open_id, user_id, email
--envNofalseGet receive_id from OPENCLAW_CHAT_ID env var

*Not required if --env is used

Receive ID Types

TypeExampleUse Case
chat_idoc_06a6b40e03e98e41c8aebcbed8b09871Group chats (default)
open_idou_b0f83ea276761ab10ebb3f4f277453b8Individual user (recommended)
user_id123456Individual user (by user_id)
emailuser@example.comSend to email address

Extract Chat ID from Feishu Message

From Feishu message metadata:

{
  "conversation_label": "oc_06a6b40e03e98e41c8aebcbed8b09871"
}

receive_id = oc_06a6b40e03e98e41c8aebcbed8b09871, type = chat_id

From sender info:

{
  "sender_id": "ou_b0f83ea276761ab10ebb3f4f277453b8"
}

receive_id = ou_b0f83ea276761ab10ebb3f4f277453b8, type = open_id

Prerequisites

  • Python 3.6+
  • requests library: pip install requests
  • Feishu bot credentials in openclaw.json

Feishu API Permissions

Bot needs these permissions in Feishu Developer Console:

Required for file upload:

  • im:resource:upload - Upload files (preferred)
  • OR im:resource - Read and upload files

Required for sending messages:

  • im:message - Send messages to chats

How to Enable Permissions

  1. Open Feishu Developer Console: https://open.feishu.cn/app/YOUR_APP_ID/auth
  2. Search for im:resource:upload or im:resource
  3. Click "Apply" and enable the permission
  4. Wait a few minutes for permission to take effect

Quick link: https://open.feishu.cn/app/cli_a94a21db99385bd8/auth?q=im:resource:upload,im:resource

File Size Limits

  • Single file: 30MB max (Feishu API limit)
  • Large files may take longer to upload

Supported File Types

All file types supported by Feishu Drive:

CategoryExtensions
DocumentsPDF, DOC, DOCX, XLS, XLSX, PPT, PPTX
ImagesJPG, PNG, GIF, WEBP
ArchivesZIP, RAR, 7Z
Code/TextTXT, MD, JSON, CSV, XML, PY, JS
MediaMP3, MP4, WAV (auto-converted to OPUS)

Error Handling

Script handles:

  • Missing credentials → Error message
  • File not found → Error message
  • Upload failure → API error details
  • Send failure → API error details
  • Missing permissions → Clear error with fix link

Testing

# Test with a small file to a group chat
python scripts/upload_to_feishu.py /tmp/test.txt oc_xxxxxx --type chat_id

# Test sending to yourself (find your open_id from message metadata)
python scripts/upload_to_feishu.py /tmp/test.pdf ou_xxxxxx --type open_id

Troubleshooting

"Access denied" / "99991672"

"Bot/User can NOT be out of the chat (230002)"

  • Bot is not a member of the target group chat
  • Add bot to the chat, or send to a different chat

"Invalid receive_id"

  • Check the ID format matches the type
  • chat_id starts with oc_
  • open_id starts with ou_
  • user_id is numeric
  • email must be valid email format

Upload fails for large files

  • Feishu API limit is 30MB
  • Compress file or use Feishu Drive web interface for larger files

Alternative: Manual Upload

If script fails, user can manually:

  1. Upload file to Feishu Drive via web/app
  2. Share file with the chat
  3. Bot can then reference the file

Security Notes

  • Credentials read from openclaw.json (local only)
  • Token expires after ~2 hours (auto-refreshed each run)
  • Files uploaded to Feishu Drive follow Feishu's security policies
  • Script does not store or transmit credentials

Comparison with Message Tool

FeatureThis SkillMessage Tool media
Documents (PDF, CSV, etc.)✅ Supported❌ Not supported
Images✅ Supported✅ Supported (easier)
Videos✅ Supported✅ Supported (easier)
File size limit30MBVaries by platform
Complexity2 API calls1 API call

Recommendation: Use media parameter for images/videos, use this skill for documents and other files.

Comments

Loading comments...