@wagemule/daemon 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -1
- package/dist/main.cjs +246 -42
- package/dist/main.cjs.map +3 -3
- package/dist/skills/larksuite/lark-approval/SKILL.md +56 -0
- package/dist/skills/larksuite/lark-attendance/SKILL.md +57 -0
- package/dist/skills/larksuite/lark-base/SKILL.md +349 -0
- package/dist/skills/larksuite/lark-base/references/dashboard-block-data-config.md +350 -0
- package/dist/skills/larksuite/lark-base/references/examples.md +140 -0
- package/dist/skills/larksuite/lark-base/references/formula-field-guide.md +735 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-advperm-disable.md +83 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-advperm-enable.md +80 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-base-copy.md +74 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-base-create.md +68 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-base-get.md +39 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-cell-value.md +151 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-arrange.md +83 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-create.md +108 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-delete.md +46 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-get.md +57 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-list.md +53 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-block-update.md +84 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-create.md +73 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-delete.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-get.md +59 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-list.md +52 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard-update.md +69 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-dashboard.md +240 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-data-analysis-sop.md +88 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-data-query.md +451 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-create.md +104 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-delete.md +51 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-get.md +42 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-list.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-search-options.md +48 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field-update.md +166 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-field.md +23 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-create.md +87 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-delete.md +64 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-get.md +68 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-list.md +73 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-create.md +118 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-delete.md +68 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-list.md +84 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions-update.md +92 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-questions.md +23 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form-update.md +82 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-form.md +24 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-history.md +16 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-batch-create.md +58 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-batch-update.md +53 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-delete.md +62 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-history-list.md +86 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-share-link-create.md +72 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-upload-attachment.md +50 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record-upsert.md +64 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-record.md +29 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-create.md +89 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-delete.md +83 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-get.md +87 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-list.md +81 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-role-update.md +94 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-shortcut-field-properties.md +481 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-create.md +62 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-delete.md +51 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-get.md +46 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-list.md +43 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table-update.md +49 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-table.md +20 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-create.md +50 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-delete.md +48 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-card.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-filter.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-group.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-sort.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-timebar.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get-visible-fields.md +28 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-get.md +38 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-list.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-rename.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-card.md +55 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-filter.md +181 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-group.md +65 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-sort.md +63 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-timebar.md +51 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view-set-visible-fields.md +46 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-view.md +44 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-create.md +180 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-disable.md +94 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-enable.md +94 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-get.md +147 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-guide.md +718 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-list.md +124 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-schema.md +935 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow-update.md +167 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workflow.md +23 -0
- package/dist/skills/larksuite/lark-base/references/lark-base-workspace.md +18 -0
- package/dist/skills/larksuite/lark-base/references/lookup-field-guide.md +510 -0
- package/dist/skills/larksuite/lark-base/references/role-config.md +539 -0
- package/dist/skills/larksuite/lark-calendar/SKILL.md +154 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-agenda.md +78 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-create.md +109 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-freebusy.md +124 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-room-find.md +113 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-rsvp.md +42 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-schedule-meeting.md +265 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-suggestion.md +125 -0
- package/dist/skills/larksuite/lark-calendar/references/lark-calendar-update.md +105 -0
- package/dist/skills/larksuite/lark-contact/SKILL.md +45 -0
- package/dist/skills/larksuite/lark-contact/references/lark-contact-get-user.md +19 -0
- package/dist/skills/larksuite/lark-contact/references/lark-contact-search-user.md +124 -0
- package/dist/skills/larksuite/lark-doc/SKILL.md +69 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-create.md +89 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-fetch.md +141 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-md.md +71 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-media-download.md +50 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-media-insert.md +114 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-media-preview.md +41 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-search.md +217 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-update.md +252 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-whiteboard.md +100 -0
- package/dist/skills/larksuite/lark-doc/references/lark-doc-xml.md +169 -0
- package/dist/skills/larksuite/lark-doc/references/style/lark-doc-create-workflow.md +56 -0
- package/dist/skills/larksuite/lark-doc/references/style/lark-doc-style.md +106 -0
- package/dist/skills/larksuite/lark-doc/references/style/lark-doc-update-workflow.md +54 -0
- package/dist/skills/larksuite/lark-drive/SKILL.md +343 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-add-comment.md +169 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-apply-permission.md +77 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-create-folder.md +73 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-create-shortcut.md +103 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-delete.md +79 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-download.md +31 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-export-download.md +50 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-export.md +119 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-import.md +154 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-move.md +120 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-pull.md +137 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-push.md +162 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-reactions.md +113 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-search.md +239 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-status.md +137 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-task-result.md +302 -0
- package/dist/skills/larksuite/lark-drive/references/lark-drive-upload.md +101 -0
- package/dist/skills/larksuite/lark-event/SKILL.md +145 -0
- package/dist/skills/larksuite/lark-event/references/lark-event-im.md +86 -0
- package/dist/skills/larksuite/lark-im/SKILL.md +162 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-create.md +162 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-identity.md +55 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-list.md +113 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-messages-list.md +142 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-search.md +136 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-chat-update.md +84 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-flag-cancel.md +67 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-flag-create.md +67 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-flag-list.md +100 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-mget.md +95 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-reply.md +222 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-resources-download.md +94 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-search.md +217 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-messages-send.md +223 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-reactions.md +297 -0
- package/dist/skills/larksuite/lark-im/references/lark-im-threads-messages-list.md +111 -0
- package/dist/skills/larksuite/lark-mail/SKILL.md +648 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-decline-receipt.md +115 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-draft-create.md +123 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-draft-edit.md +400 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-forward.md +232 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-message.md +230 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-messages.md +108 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-reply-all.md +206 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-reply.md +242 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-send-receipt.md +120 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-send.md +216 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-share-to-chat.md +87 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-signature.md +98 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-template-create.md +129 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-template-update.md +150 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-thread.md +111 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-triage.md +122 -0
- package/dist/skills/larksuite/lark-mail/references/lark-mail-watch.md +94 -0
- package/dist/skills/larksuite/lark-markdown/SKILL.md +46 -0
- package/dist/skills/larksuite/lark-markdown/references/lark-markdown-create.md +86 -0
- package/dist/skills/larksuite/lark-markdown/references/lark-markdown-fetch.md +79 -0
- package/dist/skills/larksuite/lark-markdown/references/lark-markdown-overwrite.md +85 -0
- package/dist/skills/larksuite/lark-minutes/SKILL.md +139 -0
- package/dist/skills/larksuite/lark-minutes/references/lark-minutes-download.md +137 -0
- package/dist/skills/larksuite/lark-minutes/references/lark-minutes-search.md +206 -0
- package/dist/skills/larksuite/lark-minutes/references/lark-minutes-upload.md +104 -0
- package/dist/skills/larksuite/lark-okr/SKILL.md +133 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-contentblock.md +359 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-cycle-detail.md +84 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-cycle-list.md +90 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-entities.md +329 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-image-upload.md +116 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-create.md +81 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-delete.md +47 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-get.md +62 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-list.md +80 -0
- package/dist/skills/larksuite/lark-okr/references/lark-okr-progress-update.md +81 -0
- package/dist/skills/larksuite/lark-openapi-explorer/SKILL.md +153 -0
- package/dist/skills/larksuite/lark-shared/SKILL.md +138 -0
- package/dist/skills/larksuite/lark-sheets/SKILL.md +345 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-data.md +197 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-images.md +59 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-cell-style-and-merge.md +141 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-dropdown.md +133 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-filter-views.md +193 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-float-images.md +125 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-formula.md +88 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-row-column-management.md +151 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-sheet-management.md +164 -0
- package/dist/skills/larksuite/lark-sheets/references/lark-sheets-spreadsheet-management.md +134 -0
- package/dist/skills/larksuite/lark-skill-maker/SKILL.md +85 -0
- package/dist/skills/larksuite/lark-slides/SKILL.md +525 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--all_hands_meeting.xml +1999 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--annual_gala.xml +1160 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--company_intro.xml +1376 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/administration--corporate_culture.xml +1765 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/hr--employee_training.xml +912 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/hr--employee_training_workshop.xml +1504 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/hr--onboarding.xml +933 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_communication.xml +1367 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_logo_design.xml +1347 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--brand_operations_plan.xml +1309 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--business_plan.xml +1646 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--marketing_plan.xml +1469 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--marketing_strategy.xml +1484 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--product_whitepaper.xml +1455 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/marketing--roadshow_business_plan.xml +1506 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/misc--book_sharing.xml +1338 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/misc--club_event_plan.xml +4885 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/misc--student_career_plan.xml +1854 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--dark_general.xml +3763 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--dept_annual_report.xml +1192 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--light_general.xml +3378 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--project_kickoff.xml +3152 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--quarterly_review.xml +1253 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--work_report.xml +1099 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--work_summary.xml +4420 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/office--work_summary_report.xml +1523 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--brand_logo_design.xml +1347 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--brand_operations_plan.xml +1309 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--marketing_plan.xml +1469 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/operations--product_promotion.xml +687 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--experience_sharing.xml +2242 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--personal_resume.xml +2047 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--promotion_defense.xml +1099 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--promotion_report.xml +1039 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--self_intro.xml +696 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/personal--teaching_sharing.xml +3013 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--business_case_analysis.xml +1341 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--market_analysis.xml +898 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_analysis.xml +1537 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_intro.xml +2838 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_promotion.xml +687 -0
- package/dist/skills/larksuite/lark-slides/assets/templates/product--product_promotion_2.xml +687 -0
- package/dist/skills/larksuite/lark-slides/references/examples.md +261 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-create.md +137 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-edit-workflows.md +142 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-media-upload.md +128 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-replace-slide.md +239 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-create.md +221 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +123 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-get.md +110 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +186 -0
- package/dist/skills/larksuite/lark-slides/references/lark-slides-xml-presentations-get.md +98 -0
- package/dist/skills/larksuite/lark-slides/references/slide-templates.md +201 -0
- package/dist/skills/larksuite/lark-slides/references/slides_demo.xml +226 -0
- package/dist/skills/larksuite/lark-slides/references/slides_xml_schema_definition.xml +3004 -0
- package/dist/skills/larksuite/lark-slides/references/template-catalog.md +464 -0
- package/dist/skills/larksuite/lark-slides/references/template-index.json +1853 -0
- package/dist/skills/larksuite/lark-slides/references/xml-format-guide.md +369 -0
- package/dist/skills/larksuite/lark-slides/references/xml-schema-quick-ref.md +215 -0
- package/dist/skills/larksuite/lark-slides/scripts/layout_lint.py +349 -0
- package/dist/skills/larksuite/lark-slides/scripts/layout_lint_test.py +159 -0
- package/dist/skills/larksuite/lark-slides/scripts/template_tool.py +970 -0
- package/dist/skills/larksuite/lark-slides/scripts/template_tool_test.py +177 -0
- package/dist/skills/larksuite/lark-task/SKILL.md +165 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-assign.md +38 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-comment.md +28 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-complete.md +27 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-create.md +57 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-followers.md +35 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-get-my-tasks.md +55 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-get-related-tasks.md +53 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-reminder.md +36 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-reopen.md +27 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-search.md +41 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-set-ancestor.md +32 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-subscribe-event.md +86 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-create.md +35 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-members.md +36 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-search.md +38 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-tasklist-task-add.md +38 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-update.md +37 -0
- package/dist/skills/larksuite/lark-task/references/lark-task-upload-attachment.md +59 -0
- package/dist/skills/larksuite/lark-vc/SKILL.md +168 -0
- package/dist/skills/larksuite/lark-vc/references/lark-vc-notes.md +126 -0
- package/dist/skills/larksuite/lark-vc/references/lark-vc-recording.md +153 -0
- package/dist/skills/larksuite/lark-vc/references/lark-vc-search.md +176 -0
- package/dist/skills/larksuite/lark-vc-agent/SKILL.md +121 -0
- package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-events.md +247 -0
- package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-join.md +133 -0
- package/dist/skills/larksuite/lark-vc-agent/references/lark-vc-agent-meeting-leave.md +111 -0
- package/dist/skills/larksuite/lark-whiteboard/SKILL.md +144 -0
- package/dist/skills/larksuite/lark-whiteboard/references/connectors.md +102 -0
- package/dist/skills/larksuite/lark-whiteboard/references/content.md +40 -0
- package/dist/skills/larksuite/lark-whiteboard/references/image.md +80 -0
- package/dist/skills/larksuite/lark-whiteboard/references/lark-whiteboard-query.md +49 -0
- package/dist/skills/larksuite/lark-whiteboard/references/lark-whiteboard-update.md +100 -0
- package/dist/skills/larksuite/lark-whiteboard/references/layout.md +374 -0
- package/dist/skills/larksuite/lark-whiteboard/references/schema.md +357 -0
- package/dist/skills/larksuite/lark-whiteboard/references/style.md +318 -0
- package/dist/skills/larksuite/lark-whiteboard/references/typography.md +73 -0
- package/dist/skills/larksuite/lark-whiteboard/routes/dsl.md +107 -0
- package/dist/skills/larksuite/lark-whiteboard/routes/mermaid.md +27 -0
- package/dist/skills/larksuite/lark-whiteboard/routes/svg.md +54 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/architecture.md +433 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/bar-chart.md +187 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/comparison.md +135 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/fishbone.md +238 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/flowchart.md +185 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/flywheel.md +195 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/funnel.md +101 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/line-chart.md +214 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/mermaid.md +130 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/milestone.md +139 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/organization.md +173 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/photo-showcase.md +126 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/pyramid.md +99 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/swimlane.md +371 -0
- package/dist/skills/larksuite/lark-whiteboard/scenes/treemap.md +216 -0
- package/dist/skills/larksuite/lark-wiki/SKILL.md +111 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-delete-space.md +205 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-move.md +183 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-copy.md +72 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-create.md +127 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-node-list.md +88 -0
- package/dist/skills/larksuite/lark-wiki/references/lark-wiki-space-list.md +68 -0
- package/dist/skills/larksuite/lark-workflow-meeting-summary/SKILL.md +104 -0
- package/dist/skills/larksuite/lark-workflow-standup-report/SKILL.md +120 -0
- package/package.json +2 -1
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# 完整操作示例
|
|
2
|
+
|
|
3
|
+
本文档提供与 CLI schema 一致的调用示例,XML 内容均遵循 [slides_xml_schema_definition.xml](slides_xml_schema_definition.xml)。
|
|
4
|
+
|
|
5
|
+
> **重要**:创建 PPT 请优先使用 `slides +create`;实际页面内容请使用 `xml_presentation.slide.create` 逐页添加。
|
|
6
|
+
|
|
7
|
+
## 目录
|
|
8
|
+
|
|
9
|
+
- [示例 1: 使用 Shortcut 创建空白演示文稿](#示例-1-使用-shortcut-创建空白演示文稿)
|
|
10
|
+
- [示例 2: 创建后添加第一页](#示例-2-创建后添加第一页)
|
|
11
|
+
- [示例 3: 读取 XML 内容](#示例-3-读取-xml-内容)
|
|
12
|
+
- [示例 4: 在指定页面前插入新幻灯片](#示例-4-在指定页面前插入新幻灯片)
|
|
13
|
+
- [示例 5: 删除幻灯片](#示例-5-删除幻灯片)
|
|
14
|
+
- [示例 6: 从文件读取 XML 后添加页面](#示例-6-从文件读取-xml-后添加页面)
|
|
15
|
+
- [示例 7: +replace-slide + block_insert 给已有页加图](#示例-7-replace-slide--block_insert-给已有页加图)
|
|
16
|
+
- [示例 8: +replace-slide + block_replace 替换一个块](#示例-8-replace-slide--block_replace-替换一个块)
|
|
17
|
+
|
|
18
|
+
## 示例 1: 使用 Shortcut 创建空白演示文稿
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
lark-cli slides +create --title "项目汇报"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
预期返回结构:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"data": {
|
|
29
|
+
"xml_presentation_id": "slides_example_presentation_id",
|
|
30
|
+
"title": "项目汇报",
|
|
31
|
+
"revision_id": 1
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 示例 2: 创建后添加第一页
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
PRESENTATION_ID=$(lark-cli slides +create --title "季度复盘" | jq -r '.data.xml_presentation_id')
|
|
40
|
+
|
|
41
|
+
lark-cli slides xml_presentation.slide create --as user --params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" --data '{
|
|
42
|
+
"slide": {
|
|
43
|
+
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><style><fill><fillColor color=\"rgb(245, 245, 245)\"/></fill></style><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"72\" width=\"760\" height=\"90\"><content textType=\"title\"><p>2024 Q3 季度复盘</p></content></shape><shape type=\"text\" topLeftX=\"80\" topLeftY=\"190\" width=\"520\" height=\"220\"><content textType=\"body\"><p>关键结论</p><ul><li><p>收入增长 30%</p></li><li><p>重点项目全部上线</p></li><li><p>用户满意度持续提升</p></li></ul></content></shape><shape type=\"rect\" topLeftX=\"660\" topLeftY=\"180\" width=\"180\" height=\"140\"><fill><fillColor color=\"rgba(100, 149, 237, 0.25)\"/></fill><border color=\"rgb(100, 149, 237)\" width=\"2\"/></shape></data><note><content textType=\"body\"><p>讲述时先给结论,再补充数据。</p></content></note></slide>"
|
|
44
|
+
}
|
|
45
|
+
}'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 示例 3: 读取 XML 内容
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
lark-cli slides xml_presentations get --as user --params '{
|
|
52
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
53
|
+
}'
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
提取 XML 内容:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
lark-cli slides xml_presentations get --as user --params '{
|
|
60
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
61
|
+
}' | jq -r '.data.xml_presentation.content'
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
预期返回结构:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"code": 0,
|
|
69
|
+
"data": {
|
|
70
|
+
"xml_presentation": {
|
|
71
|
+
"presentation_id": "slides_example_presentation_id",
|
|
72
|
+
"revision_id": 3,
|
|
73
|
+
"content": "<presentation xmlns=\"http://www.larkoffice.com/sml/2.0\" height=\"540\" width=\"960\">...</presentation>"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"msg": "success"
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 示例 4: 在指定页面前插入新幻灯片
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
lark-cli slides xml_presentation.slide create --as user --params '{
|
|
84
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
85
|
+
}' --data '{
|
|
86
|
+
"slide": {
|
|
87
|
+
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新增页面</p></content></shape><shape type=\"text\" topLeftX=\"80\" topLeftY=\"200\" width=\"800\" height=\"180\"><content textType=\"body\"><p>这是新增页面的正文。</p></content></shape></data></slide>"
|
|
88
|
+
},
|
|
89
|
+
"before_slide_id": "sld_before_target"
|
|
90
|
+
}'
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
预期返回结构:
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"code": 0,
|
|
98
|
+
"data": {
|
|
99
|
+
"slide_id": "slide_example_id",
|
|
100
|
+
"revision_id": 100
|
|
101
|
+
},
|
|
102
|
+
"msg": "success"
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 示例 5: 删除幻灯片
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
lark-cli slides xml_presentation.slide delete --as user --params '{
|
|
110
|
+
"xml_presentation_id": "slides_example_presentation_id",
|
|
111
|
+
"slide_id": "slide_example_id"
|
|
112
|
+
}'
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
预期返回结构:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"code": 0,
|
|
120
|
+
"data": {
|
|
121
|
+
"revision_id": 101
|
|
122
|
+
},
|
|
123
|
+
"msg": "success"
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 示例 6: 从文件读取 XML 后添加页面
|
|
128
|
+
|
|
129
|
+
先准备 `slide.xml`:
|
|
130
|
+
|
|
131
|
+
```xml
|
|
132
|
+
<slide xmlns="http://www.larkoffice.com/sml/2.0">
|
|
133
|
+
<data>
|
|
134
|
+
<shape type="text" topLeftX="80" topLeftY="80" width="800" height="120">
|
|
135
|
+
<content textType="title">
|
|
136
|
+
<p>从文件加载</p>
|
|
137
|
+
</content>
|
|
138
|
+
</shape>
|
|
139
|
+
</data>
|
|
140
|
+
</slide>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
先创建演示文稿:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
PRESENTATION_ID=$(lark-cli slides +create --title "从文件添加页面" | jq -r '.data.xml_presentation_id')
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
再用 `jq` 组装请求体,从文件添加页面:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
lark-cli slides xml_presentation.slide create --as user \
|
|
153
|
+
--params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" \
|
|
154
|
+
--data "$(jq -n --arg content "$(cat slide.xml)" '{slide:{content:$content}}')"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 示例 7: +replace-slide + block_insert 给已有页加图
|
|
158
|
+
|
|
159
|
+
只想在已有页上加一张图、不动其他元素——走 shortcut `+replace-slide`,`block_insert` 追加到页末(或用 `insert_before_block_id` 指定位置)。
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
PID="slides_example_presentation_id"
|
|
163
|
+
SID="slide_example_id"
|
|
164
|
+
|
|
165
|
+
# 1. 上传图片拿 file_token
|
|
166
|
+
TOKEN=$(lark-cli slides +media-upload --file ./pic.png --presentation "$PID" --as user \
|
|
167
|
+
| jq -r '.data.file_token')
|
|
168
|
+
|
|
169
|
+
# 2. block_insert 到页面末尾(省略 insert_before_block_id)
|
|
170
|
+
# 注:<img .../> 是自闭合标签,CLI 不会展开(只有 <shape/> 会被补 <content/>)
|
|
171
|
+
lark-cli slides +replace-slide --as user \
|
|
172
|
+
--presentation "$PID" --slide-id "$SID" \
|
|
173
|
+
--parts "$(jq -n --arg token "$TOKEN" \
|
|
174
|
+
'[{action:"block_insert",insertion:("<img src=\""+$token+"\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>")}]')"
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
预期返回:
|
|
178
|
+
|
|
179
|
+
```json
|
|
180
|
+
{
|
|
181
|
+
"ok": true,
|
|
182
|
+
"data": {
|
|
183
|
+
"xml_presentation_id": "slides_example_presentation_id",
|
|
184
|
+
"slide_id": "slide_example_id",
|
|
185
|
+
"parts_count": 1,
|
|
186
|
+
"revision_id": 102
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## 示例 8: +replace-slide + block_replace 替换一个块
|
|
192
|
+
|
|
193
|
+
已知某块的 3 位 short element ID(从 `slide.get` 返回 XML 里读),整块换掉。`replacement` 根元素的 `id` 会由 CLI 自动注入为 `block_id`,无需手写;若写了 `<shape/>` 自闭合形式,CLI 也会自动补 `<content/>`。
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
lark-cli slides +replace-slide --as user \
|
|
197
|
+
--presentation slides_example_presentation_id \
|
|
198
|
+
--slide-id slide_example_id \
|
|
199
|
+
--parts '[
|
|
200
|
+
{
|
|
201
|
+
"action": "block_replace",
|
|
202
|
+
"block_id": "bab",
|
|
203
|
+
"replacement": "<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"
|
|
204
|
+
}
|
|
205
|
+
]'
|
|
206
|
+
# CLI 实际发送的 replacement 根元素会带 id="bab",即使手写时省略了
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
失败时(3350001 错误,CLI 在 error 字段中给出 hint):
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"ok": false,
|
|
214
|
+
"error": {
|
|
215
|
+
"type": "api_error",
|
|
216
|
+
"code": 3350001,
|
|
217
|
+
"message": "API error: [3350001] invalid param",
|
|
218
|
+
"hint": "common causes: (1) block_id not found in current slide ..."
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
整批作为原子事务,任一 part 失败则整批不生效;按 `failed_part_index` 定位修正后重发。
|
|
224
|
+
|
|
225
|
+
## 常见处理技巧
|
|
226
|
+
|
|
227
|
+
### 获取最新 revision_id
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
lark-cli slides xml_presentations get --as user --params '{
|
|
231
|
+
"xml_presentation_id": "slides_example_presentation_id"
|
|
232
|
+
}' | jq '.data.xml_presentation.revision_id'
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 批量插入多页
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
#!/bin/bash
|
|
239
|
+
|
|
240
|
+
PRESENTATION_ID="slides_example_presentation_id"
|
|
241
|
+
|
|
242
|
+
slides=(
|
|
243
|
+
'<slide xmlns="http://www.larkoffice.com/sml/2.0"><data><shape type="text" topLeftX="80" topLeftY="80" width="800" height="120"><content textType="title"><p>页面 1</p></content></shape></data></slide>'
|
|
244
|
+
'<slide xmlns="http://www.larkoffice.com/sml/2.0"><data><shape type="text" topLeftX="80" topLeftY="80" width="800" height="120"><content textType="title"><p>页面 2</p></content></shape></data></slide>'
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
for slide_xml in "${slides[@]}"; do
|
|
248
|
+
payload=$(jq -n --arg content "$slide_xml" '{slide:{content:$content}}')
|
|
249
|
+
lark-cli slides xml_presentation.slide create --as user --params "{\"xml_presentation_id\":\"$PRESENTATION_ID\"}" --data "$payload"
|
|
250
|
+
done
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### 本地校验 XML 基本语法
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
xmllint --noout presentation.xml
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 真实示例
|
|
260
|
+
|
|
261
|
+
- [slides_demo.xml](slides_demo.xml) 提供了更完整的页面示例,包含 `theme`、渐变填充、图片、图标和备注内容。
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
|
|
2
|
+
# slides +create(创建飞书幻灯片)
|
|
3
|
+
|
|
4
|
+
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
5
|
+
|
|
6
|
+
创建一个新的飞书幻灯片演示文稿,可选一步添加页面内容。
|
|
7
|
+
|
|
8
|
+
## 命令
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# 创建空白 PPT
|
|
12
|
+
lark-cli slides +create --title "项目汇报"
|
|
13
|
+
|
|
14
|
+
# 创建 PPT + 添加 slide 页面
|
|
15
|
+
lark-cli slides +create --title "项目汇报" --slides '[
|
|
16
|
+
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>封面</p></content></shape></data></slide>",
|
|
17
|
+
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>第二页</p></content></shape></data></slide>"
|
|
18
|
+
]'
|
|
19
|
+
|
|
20
|
+
# 以应用身份创建(自动授权当前用户)
|
|
21
|
+
lark-cli slides +create --title "项目汇报" --as bot
|
|
22
|
+
|
|
23
|
+
# 预览(不执行)
|
|
24
|
+
lark-cli slides +create --title "项目汇报" --slides '[...]' --dry-run
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 返回值
|
|
28
|
+
|
|
29
|
+
工具成功执行后,返回一个 JSON 对象,包含以下字段:
|
|
30
|
+
|
|
31
|
+
- **`xml_presentation_id`**(string):演示文稿的唯一标识符,后续添加页面时需要此 ID
|
|
32
|
+
- **`title`**(string):演示文稿标题
|
|
33
|
+
- **`url`**(string,可选):演示文稿的在线链接,如有返回则务必展示给用户(需要 drive 相关权限;若获取失败则不返回此字段)
|
|
34
|
+
- **`revision_id`**(integer):演示文稿版本号
|
|
35
|
+
- **`slide_ids`**(string[],可选):仅传 `--slides` 时返回,成功添加的页面 ID 列表
|
|
36
|
+
- **`slides_added`**(integer,可选):仅传 `--slides` 时返回,成功添加的页面数量
|
|
37
|
+
- **`images_uploaded`**(integer,可选):仅 `--slides` 中含 `@<本地路径>` 占位符时返回,已上传的去重后图片数量
|
|
38
|
+
- **`permission_grant`**(object,可选):仅 `--as bot` 时返回,说明是否已自动为当前 CLI 用户授予可管理权限
|
|
39
|
+
|
|
40
|
+
> [!IMPORTANT]
|
|
41
|
+
> 不传 `--slides` 时,`slides +create` 只创建空白演示文稿。创建后需要使用 `xml_presentation.slide create` 逐页添加 slide 内容。
|
|
42
|
+
>
|
|
43
|
+
> 传了 `--slides` 时,CLI 先创建空白演示文稿,再逐页调用 `xml_presentation.slide create` 添加页面。如果某一页添加失败,CLI 会停止并报错,已创建的演示文稿和已添加的页面会保留。
|
|
44
|
+
>
|
|
45
|
+
> 如果演示文稿是**以应用身份(bot)创建**的,如 `lark-cli slides +create --as bot`,CLI 会**尝试为当前 CLI 用户自动授予该演示文稿的 `full_access`(可管理权限)**。
|
|
46
|
+
>
|
|
47
|
+
> 以应用身份创建时,结果里会额外返回 `permission_grant` 字段,明确说明授权结果:
|
|
48
|
+
> - `status = granted`:当前 CLI 用户已获得该演示文稿的可管理权限
|
|
49
|
+
> - `status = skipped`:本地没有可用的当前用户 `open_id`,因此不会自动授权
|
|
50
|
+
> - `status = failed`:演示文稿已创建成功,但自动授权用户失败
|
|
51
|
+
>
|
|
52
|
+
> **不要擅自执行 owner 转移。** 如果用户需要把 owner 转给自己,必须单独确认。
|
|
53
|
+
|
|
54
|
+
## 参数
|
|
55
|
+
|
|
56
|
+
| 参数 | 必填 | 说明 |
|
|
57
|
+
|------|------|------|
|
|
58
|
+
| `--title` | 否 | 演示文稿标题(不传则默认 "Untitled") |
|
|
59
|
+
| `--slides` | 否 | slide 内容 JSON 数组,每个元素是一个 `<slide>` XML 字符串(最多 10 个;超过 10 页请先用 `+create` 创建空白 PPT,再用 `xml_presentation.slide create` 逐页添加) |
|
|
60
|
+
|
|
61
|
+
## `--slides` 参数格式
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
[
|
|
65
|
+
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\">...第1页XML...</slide>",
|
|
66
|
+
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\">...第2页XML...</slide>"
|
|
67
|
+
]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
JSON string 数组,每个元素是一页 slide 的完整 XML。CLI 内部负责包装成 API 所需的 `{"slide": {"content": "..."}}` 格式并逐页调用。
|
|
71
|
+
|
|
72
|
+
### 本地图片:`@<path>` 占位符
|
|
73
|
+
|
|
74
|
+
`<img>` 元素的 `src` 属性如果以 `@` 开头,CLI 会把它当作本地文件路径,自动上传到当前演示文稿,并把占位符替换为返回的 `file_token`。
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
lark-cli slides +create --as user --title "图测试" --slides '[
|
|
78
|
+
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><img src=\"@./assets/chart.png\" topLeftX=\"100\" topLeftY=\"100\" width=\"320\" height=\"180\"/></data></slide>"
|
|
79
|
+
]'
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
行为:
|
|
83
|
+
|
|
84
|
+
- 路径相对于**当前工作目录**(CWD)解析;**必须是 CWD 内的相对路径**(如 `./pic.png`、`./assets/x.png`)
|
|
85
|
+
- 同一份图被多次引用时**只上传一次**(按路径去重)
|
|
86
|
+
- `src` 不以 `@` 开头的会原样保留,但**只允许写 `slides +media-upload` 拿到的 `file_token`**;**禁止写 http(s) 外链 URL**:飞书 slides 渲染端不会代理外链图片,外链 src 通常显示破图。要用网图必须先下载到 CWD 内、再走上传流程
|
|
87
|
+
- 单张图片最大 20 MB(slides upload API 不支持分片上传)
|
|
88
|
+
- 校验阶段就会检查所有占位符文件存在及大小;缺文件或超限直接报错,不会创建空白 PPT 占位
|
|
89
|
+
- 创空白 PPT → 上传所有图 → 替换 token → 逐页创建 slide,按这个顺序执行
|
|
90
|
+
|
|
91
|
+
> [!IMPORTANT]
|
|
92
|
+
> **路径必须在 CWD 内**:`@/abs/path/x.png` 或 `@../up/x.png` 这种会被 CLI 拒绝(报 `unsafe file path`)。如果素材在别的目录,先 `cd` 过去再执行。
|
|
93
|
+
|
|
94
|
+
### 给已有 PPT 加带图新页
|
|
95
|
+
|
|
96
|
+
`+create --slides` 只在新建 PPT 时使用 `@` 占位符。给已有 PPT 加带图新页要分两步(CLI 没封装这个组合):
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# 1) 上传图片
|
|
100
|
+
TOKEN=$(lark-cli slides +media-upload --as user \
|
|
101
|
+
--file ./pic.png --presentation $PRES_ID | jq -r .data.file_token)
|
|
102
|
+
|
|
103
|
+
# 2) 用返回的 file_token 创建带图新页
|
|
104
|
+
lark-cli slides xml_presentation.slide create --as user \
|
|
105
|
+
--params "{\"xml_presentation_id\":\"$PRES_ID\"}" \
|
|
106
|
+
--data "{\"slide\":{\"content\":\"<slide xmlns=\\\"http://www.larkoffice.com/sml/2.0\\\"><data><img src=\\\"$TOKEN\\\" topLeftX=\\\"100\\\" topLeftY=\\\"100\\\" width=\\\"200\\\" height=\\\"200\\\"/></data></slide>\"}}"
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 创建后续步骤
|
|
110
|
+
|
|
111
|
+
如果没有使用 `--slides`,`slides +create` 返回的 `xml_presentation_id` 用于后续操作:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 第 1 步:创建空白 PPT
|
|
115
|
+
PRES_ID=$(lark-cli slides +create --title "项目汇报" | jq -r '.data.xml_presentation_id')
|
|
116
|
+
|
|
117
|
+
# 第 2 步:添加页面(使用返回的 xml_presentation_id)
|
|
118
|
+
lark-cli slides xml_presentation.slide create --as user \
|
|
119
|
+
--params "{\"xml_presentation_id\":\"$PRES_ID\"}" \
|
|
120
|
+
--data '{
|
|
121
|
+
"slide": {
|
|
122
|
+
"content": "<slide xmlns=\"http://www.larkoffice.com/sml/2.0\">...</slide>"
|
|
123
|
+
}
|
|
124
|
+
}'
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 常见错误
|
|
128
|
+
|
|
129
|
+
| 错误码 | 含义 | 解决方案 |
|
|
130
|
+
|--------|------|----------|
|
|
131
|
+
| 400 | 参数错误 | 检查参数格式是否正确 |
|
|
132
|
+
| 403 | 权限不足 | 检查是否拥有 `slides:presentation:create` 和 `slides:presentation:write_only` scope |
|
|
133
|
+
|
|
134
|
+
## 相关命令
|
|
135
|
+
|
|
136
|
+
- [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) — 添加幻灯片页面
|
|
137
|
+
- [xml_presentations get](lark-slides-xml-presentations-get.md) — 读取 PPT 内容
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# 编辑已有 PPT:读-改-写闭环
|
|
2
|
+
|
|
3
|
+
编辑走 **shortcut [`+replace-slide`](lark-slides-replace-slide.md)**(块级替换 / 插入),配合 `xml_presentation.slide.get` 读原页拿 `block_id`。
|
|
4
|
+
|
|
5
|
+
> 生成 XML 前**必读** [xml-schema-quick-ref.md](xml-schema-quick-ref.md)。
|
|
6
|
+
|
|
7
|
+
## 决策树:block_replace vs block_insert
|
|
8
|
+
|
|
9
|
+
| 需求 | 推荐 action | 理由 |
|
|
10
|
+
|------|------------|------|
|
|
11
|
+
| 已知某块的 `block_id`,要换这块内容(改标题、换图、挪坐标) | `block_replace` | 精准替换,原子性好;`replacement` 根 `id` 由 CLI 自动注入为 `block_id` |
|
|
12
|
+
| 只加 1~N 个元素、不动现有布局 | `block_insert` | 新增不覆盖,可选 `insert_before_block_id` 指定位置 |
|
|
13
|
+
| 一次动多个元素(如:换标题 + 加图) | 单次 `--parts` 里拼多条 | 整批作为原子事务,任一失败整批不生效;`block_replace` 和 `block_insert` 可混用 |
|
|
14
|
+
|
|
15
|
+
> **没有字段级 patch**:即便只想改一个 `shape` 的 `topLeftX`,也得把整个块的新 XML 写出来用 `block_replace`。这不是"微调",是块级重写。
|
|
16
|
+
|
|
17
|
+
## 最小读-改-写闭环
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
PID="xml_presentation_id_here"
|
|
21
|
+
SID="slide_id_here"
|
|
22
|
+
|
|
23
|
+
# 1. 读原页,从 XML 里挑出要改的块的 3 位 short id(如 bUn / bab)
|
|
24
|
+
lark-cli slides xml_presentation.slide get --as user \
|
|
25
|
+
--params "{\"xml_presentation_id\":\"$PID\",\"slide_id\":\"$SID\"}"
|
|
26
|
+
|
|
27
|
+
# 2. 用 +replace-slide 直接改那个块(不需要搬原 XML)
|
|
28
|
+
lark-cli slides +replace-slide --as user \
|
|
29
|
+
--presentation "$PID" --slide-id "$SID" \
|
|
30
|
+
--parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`slide_id` / 页序不会变。`block_replace` 的 `replacement` 根元素 `id` 会自动注入为 `block_id`,用户手写 XML 时不需要自己加。
|
|
34
|
+
|
|
35
|
+
## `revision_id` 参数
|
|
36
|
+
|
|
37
|
+
`--revision-id` 默认 `-1`,表示基于当前最新版执行。传具体版本号时,服务端以该版本为 base 应用变更:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 读时拿当前 revision_id
|
|
41
|
+
REV=$(lark-cli slides xml_presentation.slide get --as user \
|
|
42
|
+
--params "{\"xml_presentation_id\":\"$PID\",\"slide_id\":\"$SID\"}" \
|
|
43
|
+
| jq '.data.revision_id')
|
|
44
|
+
|
|
45
|
+
# 写时传该版本号,服务端以此为 base
|
|
46
|
+
lark-cli slides +replace-slide --as user \
|
|
47
|
+
--presentation "$PID" --slide-id "$SID" --revision-id "$REV" \
|
|
48
|
+
--parts '[{"action":"block_replace","block_id":"bUn","replacement":"<shape type=\"rect\" topLeftX=\"100\" topLeftY=\"100\" width=\"200\" height=\"100\"/>"}]'
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
注意:传不存在的版本号(超过当前 revision)会返回 3350002 not found;不确定时用 `-1` 即可。
|
|
52
|
+
|
|
53
|
+
## `--tid` 事务锁
|
|
54
|
+
|
|
55
|
+
跨请求的并发事务 ID,多人协作长事务才用得上。**单人单次调用留空**即可。
|
|
56
|
+
|
|
57
|
+
## 两种 action 详解
|
|
58
|
+
|
|
59
|
+
### block_replace — 整块替换
|
|
60
|
+
|
|
61
|
+
适合"已知块 ID,要换这块整体内容"的场景。`replacement` 根元素的 `id="<block_id>"` 由 CLI 自动注入(用户手写的 XML 如果没带 `id` 直接省略即可;如果带了错的会被覆盖为正确值)。
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
lark-cli slides +replace-slide --as user \
|
|
65
|
+
--presentation "$PID" --slide-id "$SID" \
|
|
66
|
+
--parts '[{"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"}]'
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
字段说明:
|
|
70
|
+
|
|
71
|
+
| 字段 | 必填 | 说明 |
|
|
72
|
+
|------|------|------|
|
|
73
|
+
| `action` | 是 | 固定为 `block_replace` |
|
|
74
|
+
| `block_id` | 是 | 目标块的 3 位 short element ID(从 `slide.get` 返回的 XML 里读)|
|
|
75
|
+
| `replacement` | 是 | 新 XML 片段;根元素 `id` 会被 CLI 自动注入为 `block_id` |
|
|
76
|
+
|
|
77
|
+
### block_insert — 整块插入
|
|
78
|
+
|
|
79
|
+
适合"只想加一个元素,不动现有元素"的场景(典型:给已有页加图)。
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
lark-cli slides +replace-slide --as user \
|
|
83
|
+
--presentation "$PID" --slide-id "$SID" \
|
|
84
|
+
--parts "$(jq -n --arg token "$FILE_TOKEN" \
|
|
85
|
+
'[{action:"block_insert",insertion:("<img src=\""+$token+"\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>"),insert_before_block_id:"baa"}]')"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
字段说明:
|
|
89
|
+
|
|
90
|
+
| 字段 | 必填 | 说明 |
|
|
91
|
+
|------|------|------|
|
|
92
|
+
| `action` | 是 | 固定为 `block_insert` |
|
|
93
|
+
| `insertion` | 是 | 要插入的完整 XML 片段 |
|
|
94
|
+
| `insert_before_block_id` | 否 | 插到这个块之前;省略(不提供此字段)则追加到页面末尾 |
|
|
95
|
+
|
|
96
|
+
> **`<img>` 必须用 `file_token`**,不能用外链 URL——先 `slides +media-upload --file ./pic.png --presentation $PID` 拿 token。
|
|
97
|
+
|
|
98
|
+
### 批量 parts
|
|
99
|
+
|
|
100
|
+
一次 `--parts` 最多 200 条,按数组顺序串行执行。`block_replace` 和 `block_insert` 可以在同一批次混用。举例:一次性把标题块替换、然后在末尾追加一个装饰图。
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
lark-cli slides +replace-slide --as user \
|
|
104
|
+
--presentation "$PID" --slide-id "$SID" \
|
|
105
|
+
--parts '[
|
|
106
|
+
{"action":"block_replace","block_id":"bab","replacement":"<shape type=\"text\" topLeftX=\"80\" topLeftY=\"80\" width=\"800\" height=\"120\"><content textType=\"title\"><p>新标题</p></content></shape>"},
|
|
107
|
+
{"action":"block_insert","insertion":"<img src=\"<file_token>\" topLeftX=\"700\" topLeftY=\"400\" width=\"180\" height=\"100\"/>"}
|
|
108
|
+
]'
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
整批作为原子事务:任一条失败整批不生效。失败时后端通常返回 3350001;若响应中带 `failed_part_index` / `failed_reason` 字段,shortcut 会原样透传。
|
|
112
|
+
|
|
113
|
+
## 大 --parts 用 jq 或 stdin 组装
|
|
114
|
+
|
|
115
|
+
`--parts` 支持 `@file`(读文件)和 `-`(stdin)作为值来源,适合批量 XML 场景:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 从文件读
|
|
119
|
+
lark-cli slides +replace-slide --as user --presentation "$PID" --slide-id "$SID" \
|
|
120
|
+
--parts @parts.json
|
|
121
|
+
|
|
122
|
+
# 从 stdin 读
|
|
123
|
+
cat parts.json | lark-cli slides +replace-slide --as user --presentation "$PID" --slide-id "$SID" \
|
|
124
|
+
--parts -
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 错误排查
|
|
128
|
+
|
|
129
|
+
| 现象 | 原因 | 对策 |
|
|
130
|
+
|------|------|------|
|
|
131
|
+
| 3350001,hint 含 "block_id not found" | `parts[i].block_id` 在当前页不存在 | 重新 `slide.get` 拿最新 XML,按里面的 short ID 再填 |
|
|
132
|
+
| 3350002 not found | `--revision-id` 传了不存在的版本号 | 用 `-1` 或实际存在的 `revision_id` |
|
|
133
|
+
| `<img>` 不显示 / 显示破图 | `src` 写了外链 URL | 换成通过 `+media-upload` 拿到的 `file_token` |
|
|
134
|
+
| 3350001(block_replace 返回) | 正常情况下 CLI 已自动注入 `id` 和 `<content/>`;如果仍报错,确认 `block_id` 在当前页存在(重新 `slide.get`),检查 XML 结构是否合法;坐标是否超出 960×540 范围 | — |
|
|
135
|
+
|
|
136
|
+
## 相关文档
|
|
137
|
+
|
|
138
|
+
- [lark-slides-replace-slide.md](lark-slides-replace-slide.md) — +replace-slide shortcut 参数详情
|
|
139
|
+
- [lark-slides-xml-presentation-slide-get.md](lark-slides-xml-presentation-slide-get.md) — slide.get 参考(拿 `block_id` / `revision_id`)
|
|
140
|
+
- [lark-slides-xml-presentation-slide-replace.md](lark-slides-xml-presentation-slide-replace.md) — 底层 replace API 参考(一般直接用 shortcut 即可)
|
|
141
|
+
- [lark-slides-media-upload.md](lark-slides-media-upload.md) — 上传图片拿 file_token
|
|
142
|
+
- [xml-schema-quick-ref.md](xml-schema-quick-ref.md) — XML 元素和属性速查
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
|
|
2
|
+
# slides +media-upload(上传本地图片到飞书幻灯片)
|
|
3
|
+
|
|
4
|
+
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和安全规则。
|
|
5
|
+
|
|
6
|
+
把本地图片上传到指定演示文稿的 drive 媒体库,返回 `file_token`。**返回的 token 作为 `<img src="...">` 的值塞进 slide XML 即可显示图片。**
|
|
7
|
+
|
|
8
|
+
## 命令
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# 直接传 xml_presentation_id
|
|
12
|
+
lark-cli slides +media-upload --as user \
|
|
13
|
+
--file ./pic.png \
|
|
14
|
+
--presentation slidesXXXXXXXXXXXXXXXXXXXXXX
|
|
15
|
+
|
|
16
|
+
# 传 slides URL 也行
|
|
17
|
+
lark-cli slides +media-upload --as user \
|
|
18
|
+
--file ./chart.png \
|
|
19
|
+
--presentation "https://xxx.feishu.cn/slides/slidesXXXXXXXXXXXXXXXXXXXXXX"
|
|
20
|
+
|
|
21
|
+
# 传 wiki URL(CLI 自动 wiki.spaces.get_node 解析为真实 token,校验 obj_type=slides)
|
|
22
|
+
lark-cli slides +media-upload --as user \
|
|
23
|
+
--file ./pic.png \
|
|
24
|
+
--presentation "https://xxx.feishu.cn/wiki/wikcnXXXXXX"
|
|
25
|
+
|
|
26
|
+
# 预览(不实际上传)
|
|
27
|
+
lark-cli slides +media-upload --file ./pic.png --presentation $PRES_ID --dry-run
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 返回值
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"file_token": "boxcnXXXXXXXXXXXXXXXXXXXXXX",
|
|
35
|
+
"file_name": "pic.png",
|
|
36
|
+
"size": 12345,
|
|
37
|
+
"presentation_id": "slidesXXXXXXXXXXXXXXXXXXXXXX"
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
- **`file_token`**:把它写进 `<img src="...">`
|
|
42
|
+
- **`file_name` / `size`**:上传文件元信息
|
|
43
|
+
- **`presentation_id`**:解析后的真实 `xml_presentation_id`(wiki URL 解析后会变化)
|
|
44
|
+
|
|
45
|
+
## 参数
|
|
46
|
+
|
|
47
|
+
| 参数 | 必填 | 说明 |
|
|
48
|
+
|------|------|------|
|
|
49
|
+
| `--file` | 是 | 本地图片路径,**必须是 CWD 内的相对路径**(如 `./pic.png`)。**最大 20 MB**(slides upload API 不支持分片上传) |
|
|
50
|
+
| `--presentation` | 是 | `xml_presentation_id`、`/slides/<token>` URL,或 `/wiki/<token>` URL |
|
|
51
|
+
|
|
52
|
+
> [!IMPORTANT]
|
|
53
|
+
> **路径必须在 CWD 内**:`--file /abs/path/x.png` 或 `--file ../up/x.png` 会被 CLI 拒绝(报 `unsafe file path`)。如果素材在别的目录,先 `cd` 过去再执行。
|
|
54
|
+
|
|
55
|
+
## 使用流程
|
|
56
|
+
|
|
57
|
+
### 给已有 PPT 加带图新页
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 1) 上传图片
|
|
61
|
+
TOKEN=$(lark-cli slides +media-upload --as user \
|
|
62
|
+
--file ./pic.png \
|
|
63
|
+
--presentation $PRES_ID | jq -r .data.file_token)
|
|
64
|
+
|
|
65
|
+
# 2) 用 file_token 创建带图新页
|
|
66
|
+
lark-cli slides xml_presentation.slide create --as user \
|
|
67
|
+
--params "{\"xml_presentation_id\":\"$PRES_ID\"}" \
|
|
68
|
+
--data "{\"slide\":{\"content\":\"<slide xmlns=\\\"http://www.larkoffice.com/sml/2.0\\\"><data><img src=\\\"$TOKEN\\\" topLeftX=\\\"100\\\" topLeftY=\\\"100\\\" width=\\\"320\\\" height=\\\"180\\\"/></data></slide>\"}}"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 新建带图 PPT(推荐用 `+create --slides` 的 `@` 占位符,一步到位)
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# 不需要单独 +media-upload,写 src="@<本地路径>" 即可
|
|
75
|
+
lark-cli slides +create --as user --title "图测试" --slides '[
|
|
76
|
+
"<slide xmlns=\"http://www.larkoffice.com/sml/2.0\"><data><img src=\"@./pic.png\" topLeftX=\"100\" topLeftY=\"100\" width=\"320\" height=\"180\"/></data></slide>"
|
|
77
|
+
]'
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
详见 [+create 文档](lark-slides-create.md#本地图片path-占位符)。
|
|
81
|
+
|
|
82
|
+
### 给已有 PPT 的已有页加图
|
|
83
|
+
|
|
84
|
+
拿到 `file_token` 后走 [`+replace-slide`](lark-slides-replace-slide.md) 的 `block_insert`,不用搬原 XML、不改 `slide_id`、不打乱页序:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
PRES_ID=xxx
|
|
88
|
+
SID=yyy # 要加图的那一页
|
|
89
|
+
|
|
90
|
+
# 1) 上传图片拿 file_token
|
|
91
|
+
TOKEN=$(lark-cli slides +media-upload --as user \
|
|
92
|
+
--file ./pic.png --presentation $PRES_ID | jq -r '.data.file_token')
|
|
93
|
+
|
|
94
|
+
# 2) block_insert 到页末(或用 insert_before_block_id 指定插入位置)
|
|
95
|
+
lark-cli slides +replace-slide --as user \
|
|
96
|
+
--presentation "$PRES_ID" --slide-id "$SID" \
|
|
97
|
+
--parts "$(jq -n --arg token "$TOKEN" \
|
|
98
|
+
'[{action:"block_insert",insertion:("<img src=\""+$token+"\" topLeftX=\"500\" topLeftY=\"100\" width=\"200\" height=\"150\"/>")}]')"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
注意事项:
|
|
102
|
+
|
|
103
|
+
1. **`<img>` 坐标避开现有元素** —— 先读现有元素 bbox 挑空白区;空间不够就先用 `block_replace` 挪动/缩小现有元素后再放图
|
|
104
|
+
2. **`<img>` 的 `width:height` 对齐原图比例** —— 比例不一致会被裁剪,参见 [xml-schema-quick-ref.md](xml-schema-quick-ref.md) `<img>` 说明
|
|
105
|
+
|
|
106
|
+
## 工作原理
|
|
107
|
+
|
|
108
|
+
`+media-upload` 内部调用 `POST /open-apis/drive/v1/medias/upload_all`(单次上传,最大 20 MB),固定使用:
|
|
109
|
+
|
|
110
|
+
- `parent_type=slide_file`(slides 后端唯一接受的取值,已实测验证)
|
|
111
|
+
- `parent_node=<xml_presentation_id>`
|
|
112
|
+
|
|
113
|
+
**不要尝试用 `slides_image`、`slide_image` 等 parent_type**——后端会返回 1061001 / 1061002 错误。这是 slides 的特殊约定。
|
|
114
|
+
|
|
115
|
+
## 常见错误
|
|
116
|
+
|
|
117
|
+
| 错误码 | 含义 | 解决方案 |
|
|
118
|
+
|--------|------|----------|
|
|
119
|
+
| 1061002 | params error / 不支持的 parent_type | 不要用原生 API 自己拼 parent_type;用 `+media-upload` 即可 |
|
|
120
|
+
| 1061004 | forbidden:当前身份对该演示文稿无编辑权限 | 确认当前身份(user 或 bot)对目标 PPT 有编辑权限。bot 模式常见原因:PPT 不是该 bot 创建的——可用 `+create --as bot` 新建,或以 user 身份给 bot 授权 `lark-cli drive permission.members create --as user ...` |
|
|
121
|
+
| 1061044 | parent node not exist | `--presentation` 给的 token 不对,或不是 slides 类型 |
|
|
122
|
+
| 403 | 权限不足 | 检查 `docs:document.media:upload` scope;wiki URL 还需要 `wiki:node:read` |
|
|
123
|
+
|
|
124
|
+
## 相关命令
|
|
125
|
+
|
|
126
|
+
- [+create](lark-slides-create.md) — 新建 PPT(支持 `@` 占位符自动上传图片)
|
|
127
|
+
- [+replace-slide](lark-slides-replace-slide.md) — 给已有页加图 / 换图(`block_insert` / `block_replace`)
|
|
128
|
+
- [xml_presentation.slide create](lark-slides-xml-presentation-slide-create.md) — 创建 slide 页面(拿到 file_token 后塞进 XML)
|