lark-vc-agent
Feishu Video Conference: Allow bots to join/leave ongoing meetings on behalf of the current user, and read real-time events during the meeting (participant join/leave, speaking, chatting, screen sharing, etc.). 1. When users provide a 9-digit meeting number and request to join or leave on their behalf, use +meeting-join / +meeting-leave — this will generate actual join/leave records. 2. During a meeting, when users want to know in-meeting dynamics such as "who joined", "who left", "who is speaking", "is someone sharing their screen", the bot can use +meeting-events to read the event timeline after joining the meeting. 3. Typical scenarios: Meeting participant bot, in-meeting assistant, proxy attendance, proxy participation. Prerequisite: The bot can only read events of meetings that it has joined and are still ongoing; to query the participant list, minutes, or transcript of an ended meeting, please use the lark-vc skill.
NPX Install
npx skill4agent add larksuite/cli lark-vc-agentTags
Translated version includes tags in frontmatterSKILL.md Content (Chinese)
View Translation Comparison →vc-agent (v1)
- — Authentication, identity switching, permission handling
../lark-shared/SKILL.md - — Core concepts of video conferences (Meeting / Note / Minutes, etc.), which are directly reused by this skill and will not be redefined
../lark-vc/SKILL.md
Closed Beta Notice
- This feature is currently in closed beta and only available to a small number of users. Ignore the permission application process in [], follow the guidelines below instead.
../lark-shared/SKILL.md - If prompts
lark-cli/missing required scope(s), do not apply for the corresponding permissions. Instead, prompt users to join the early bird group:permission_violations.https://go.larkoffice.com/join-chat/2f4nb0e1-fe00-4f67-bed7-25beaf533fbd - If returns
lark-cli/error.code=20017, prompt users to join the early bird group:ErrNotInGray.https://go.larkoffice.com/join-chat/2f4nb0e1-fe00-4f67-bed7-25beaf533fbd
Positioning
lark-vc- is responsible for "post-meeting queries": Search historical meetings, participant snapshots, minutes/transcripts/recordings
lark-vc - is responsible for "in-meeting actions": Bot joining meetings / reading real-time events of ongoing meetings / bot leaving meetings
lark-vc-agent
| User Intent Examples | Should be routed to |
|---|---|
| "Help me join meeting 123456789", "Attend the meeting on my behalf", "Let the bot join the meeting to observe" | This skill |
| "The meeting is still ongoing, who just joined?", "Who is speaking in the meeting?", "Is someone sharing their screen?" (ongoing meeting and bot has joined) | This skill |
| "Leave the meeting", "Let the bot leave" | This skill |
| "Who attended yesterday's meeting?", "Search yesterday's meeting", "Check minutes/transcripts/recordings" | |
| Cross-stage scenarios like "Help me attend the meeting and send the minutes to the group after it ends" | Orchestrate in order: This skill (join meeting → read events → leave meeting) → |
Core Scenarios
1. Join an Ongoing Meeting (Write Operation)
- Only use when users clearly express "let the Agent join the meeting actually" (meeting participant bot, in-meeting assistant, proxy attendance, proxy participation). Do not join the meeting just for data querying.
+meeting-join - only accepts 9-digit pure numbers as the meeting number, not the full meeting link or
+meeting-join --meeting-number.meeting_id - Must immediately record the in the response body — subsequent
meeting.id/+meeting-eventsall rely on it, cannot replace it with the 9-digit meeting number.+meeting-leave - Joining the meeting is visible to all participants. Verify the source of the 9-digit meeting number before execution to avoid joining the wrong meeting.
- Only supports identity, need to perform
userin advance.lark-cli auth login - If joining fails, first check the troubleshooting section in the reference, focusing on verifying the meeting number, password, meeting status, waiting room/approval, and whether the current identity is prohibited from joining the meeting.
+meeting-join
2. Sense In-Meeting Events (Read Operation)
- Use when users want to know "what is happening in the meeting" (participant join/leave, chatting, transcription, screen sharing).
+meeting-events - The input is (long numeric ID), not the 9-digit meeting number.
meeting_id - The Bot must have actually joined the meeting (first execute ), otherwise the event stream is usually invisible. Please check the
+meeting-joinreference for specific status boundaries, grace period after meeting ends, and error codes (such as+meeting-events).10005 / 20001 / 20002 - Cannot be used for post-meeting review, cannot replace participant snapshot queries. If the meeting has ended:
- To get the token of the minutes document or transcript document: Use
lark-cli vc +notes --meeting-ids <meeting.id> - To get AI outputs (summary / todos / chapters) or export transcript files: First use to get
lark-cli vc +recording --meeting-ids <meeting.id>, then useminute_tokenlark-cli vc +notes --minute-tokens <minute_token> - To view participant snapshots: Use (see
vc meeting get --with-participants)lark-vc
- To get the token of the minutes document or transcript document: Use
- Must use by default, unless users clearly request "only check one page" or there is a real need to control the size of the response body.
--page-all - The default output format prioritizes (timeline is easier to read); only use
--format prettywhen it is necessary to fully retain the original message stream and structured fields.--format json - Must recognize pagination signals: As long as ,
has_more=truein pretty format, or a non-emptymore availableappears in the response, the current result cannot be regarded as the complete event stream; by default, you should continue pagination, or clearly inform users that the current result is only partial.page_token - Retain the in the response, directly reuse it for incremental pulling next time, do not pull from the beginning again.
page_token - As long as you are answering the content of an ongoing meeting based on , you cannot directly reuse old results. Whether users are asking about the "current/just now/latest" status, or asking you to "summarize what this meeting is about", you must first pull the current event stream again to confirm that you have the latest information, then answer based on the latest results. Only when users clearly request to continue analysis based on a certain historical snapshot can you reuse old results.
+meeting-events
3. Leave a Meeting (Write Operation)
- Use when the task is completed or users request to end it.
+meeting-leave --meeting-id <meeting.id obtained from +meeting-join> - must be the long numeric
--meeting-idreturned bymeeting.id, does not accept 9-digit meeting numbers.+meeting-join - Leaving the meeting takes effect immediately, the bot disappears from the participant list of the meeting and is visible to other participants; if you need to rejoin, just execute again (not truly "irreversible").
+meeting-join - Only supports identity.
user
4. Minimum Closed-Loop Demonstration of Agent Attendance
# 1. Join meeting, capture meeting.id
JOIN=$(lark-cli vc +meeting-join --meeting-number 123456789 --format json)
MID=$(echo "$JOIN" | jq -r '.data.meeting.id')
# 2. Poll events during the meeting
# Use --page-all by default to pull all currently visible events; reuse page_token for next incremental pull
# Typical interval is 10-30 seconds
lark-cli vc +meeting-events --meeting-id "$MID" --page-all --format pretty
# 3. Leave meeting when task is completed or user requests to end
lark-cli vc +meeting-leave --meeting-id "$MID"
# 4. Optional post-meeting: Get minutes / transcript (switch to lark-vc)
lark-cli vc +notes --meeting-ids "$MID"Shortcuts
lark-cli vc +<verb> [flags]| Shortcut | Type | Description |
|---|---|---|
| Write | Join an in-progress meeting by 9-digit meeting number |
| Read | List bot meeting events (participant joined/left, transcript, chat, share) |
| Write | Leave a meeting by meeting_id |
- Must read references/lark-vc-agent-meeting-join.md before using to understand input parameter formats and visibility risks of write operations.
+meeting-join - Must read references/lark-vc-agent-meeting-events.md before using to understand the source of
+meeting-events, pagination, error codes (10005 / 20001 / 20002) and the hard constraint of "bot is still in the meeting".meeting_id - Must read references/lark-vc-agent-meeting-leave.md before using to understand the source of
+meeting-leaveand visibility of write operations.meeting_id
Permission List
| Shortcut | Required scope |
|---|---|
| |
| |
| |
Extensions
- Query ended meetings, participant snapshots, search historical meetings →
lark-vc - Meeting minutes, transcripts → of
+noteslark-vc - Lark Minutes outputs (AI summary / transcription / chapters) →
lark-minutes - Send outputs to groups / private chats after meetings →
lark-im - Authentication, identity switching, scope management →
lark-shared