feishu-image

安装量: 132
排名: #6518

安装

npx skills add https://github.com/zrong/skills --skill feishu-image
Feishu Image Sender
Send images to Feishu (Lark) conversations. This skill works both inside OpenClaw and as a standalone CLI tool.
When to use this skill
User asks to "截图发给我" (send me a screenshot)
User wants to share any image file through Feishu
Need to send visual content (charts, diagrams, photos) via Feishu
OpenClaw's built-in message tool fails to send images
Configuration
For OpenClaw Users
When running inside OpenClaw, this skill automatically reads credentials from OpenClaw's Feishu configuration. No manual setup required.
For Standalone Usage
Set the following environment variables:
export
FEISHU_APP_ID
=
"cli_xxxxxxxxxxxxxxxx"
export
FEISHU_APP_SECRET
=
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Or create a
.env
file in your project root:
FEISHU_APP_ID=cli_xxxxxxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Note
If running outside OpenClaw without credentials configured, this skill will display a clear error message with setup instructions. Feishu App Setup Go to Feishu Developer Console Create a new app (Enterprise self-built app) Enable the following permissions: im:resource - Upload images im:message - Send messages Get your App ID and App Secret from the app credentials page Publish the app and make it available to your organization Usage As a Skill in OpenClaw The skill will automatically use OpenClaw's Feishu configuration: // Example: User asks to "send me a screenshot" // The skill will automatically: // 1. Read OpenClaw config for Feishu credentials // 2. Upload the screenshot to Feishu // 3. Send it to the user As a CLI Tool Send an image to a Feishu user: node feishu-image.js --image /path/to/screenshot.png --to ou_xxxxxxxx With an optional message: node feishu-image.js --image chart.png --to ou_xxxxxxxx --text "Q4 Sales Report" Send to a chat group: node feishu-image.js --image announcement.png --to oc_xxxxxxxx --chat As a Node.js Library const { FeishuImage } = require ( './scripts/feishu-image.js' ) ; const sender = new FeishuImage ( { appId : 'cli_xxxxxxxxxxxxxxxx' , appSecret : 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' } ) ; // Send image to a user await sender . sendImage ( { imagePath : '/path/to/screenshot.png' , receiveId : 'ou_xxxxxxxx' , receiveType : 'user' } ) ; // Send image with text await sender . sendImage ( { imagePath : '/path/to/chart.png' , receiveId : 'ou_xxxxxxxx' , receiveType : 'user' , text : 'Here is the sales report' } ) ; CLI Reference Options Option Short Description Required --image -i Path to the image file Yes --to -t Recipient's Feishu open_id or chat_id Yes --text Optional text message to include No --chat -c Send to a chat group (default: user) No --help -h Show help message No Examples

Basic usage

node feishu-image.js -i screenshot.png -t ou_123456

With message

node feishu-image.js --image chart.png --to ou_123456 --text "Q4 Report"

To group chat

node feishu-image.js -i announcement.png -t oc_789012 --chat Library API Reference new FeishuImage(config) Creates a new Feishu Image sender instance. Parameters: config.appId (string): Feishu app ID config.appSecret (string): Feishu app secret config.baseUrl (string, optional): API base URL, defaults to ' https://open.feishu.cn/open-apis ' Example: const sender = new FeishuImage ( { appId : process . env . FEISHU_APP_ID , appSecret : process . env . FEISHU_APP_SECRET } ) ; async sendImage(options) Uploads an image and sends it to a Feishu conversation. Parameters: options.imagePath (string, required): Path to the local image file options.receiveId (string, required): Recipient's open_id (for users) or chat_id (for groups) options.receiveType (string, optional): 'user' or 'chat', defaults to 'user' options.text (string, optional): Optional text message to send with the image Returns: Promise - The ID of the sent message Throws: FeishuImageError - Various error codes: MISSING_CREDENTIALS, AUTH_FAILED, FILE_NOT_FOUND, UPLOAD_FAILED, SEND_FAILED Example: try { const messageId = await sender . sendImage ( { imagePath : '/path/to/screenshot.png' , receiveId : 'ou_xxxxxxxx' , receiveType : 'user' , text : 'Here is the screenshot you requested' } ) ; console . log ( 'Image sent successfully, message ID:' , messageId ) ; } catch ( error ) { console . error ( 'Failed to send image:' , error . message ) ; } Error Handling All errors are instances of FeishuImageError with specific error codes: Error Code Description Solution MISSING_CREDENTIALS FEISHU_APP_ID or FEISHU_APP_SECRET not set Set environment variables or pass to constructor AUTH_FAILED Authentication with Feishu API failed Check app_id and app_secret are correct FILE_NOT_FOUND Image file does not exist Check the image path is correct UPLOAD_FAILED Image upload to Feishu failed Check network connection and file size limits SEND_FAILED Message sending failed Check recipient ID and permissions Example error handling: const { FeishuImage , FeishuImageError } = require ( './scripts/feishu-image.js' ) ; try { await sender . sendImage ( { ... } ) ; } catch ( error ) { if ( error instanceof FeishuImageError ) { switch ( error . code ) { case 'MISSING_CREDENTIALS' : console . error ( 'Please set FEISHU_APP_ID and FEISHU_APP_SECRET' ) ; break ; case 'AUTH_FAILED' : console . error ( 'Invalid credentials. Check your app ID and secret.' ) ; break ; case 'FILE_NOT_FOUND' : console . error ( Image file not found: ${ error . details . path } ) ; break ; default : console . error ( Error: ${ error . message } ) ; } } else { console . error ( 'Unexpected error:' , error ) ; } } Limitations Image size: Subject to Feishu API limits (check Feishu documentation for current limits) Supported formats: PNG, JPG, GIF (as supported by Feishu) Rate limiting: Subject to Feishu API rate limits See Also Feishu Open Platform Documentation Feishu Image Upload API Feishu Message Send API Peekaboo - Screenshot Tool (if applicable)

返回排行榜