{"id":41184,"plugin_id":"plugin_asdk_app_6aaaf1a529808191a2a15fde824bb013","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T12:57:53.480Z","digest":"d4d9c096f5281891e035b756855ab788bac2fd7a7a94c4f505646a40068390c2","against":null,"payload":{"description":"Add images or videos to the Postiz media library so they can be attached to social media posts, by uploading from a public URL, uploading from the user's device, or generating an image or video. Use when the user wants to attach, upload, or generate media for a post.","included_files":[],"name":"create-post-media","skill_md_contents":"---\nname: create-post-media\ndescription: Add images or videos to the Postiz media library so they can be attached to social media posts, by uploading from a public URL, uploading from the user's device, or generating an image or video. Use when the user wants to attach, upload, or generate media for a post.\n---\n\n# Add media for Postiz posts\n\nPost attachments must be hosted by Postiz. Every method below returns a hosted `path` (and `id`) to use in the `attachments` of `integrationSchedulePostTool`. Pick the method from where the media comes from.\n\n## Media at a public URL\n\nCall `uploadFromUrlTool` with the URL, once per file. Use the returned `path`. If it returns an `error` (for example the URL isn't public or isn't an image or video), tell the user and ask for another link or a file from their device.\n\n## A file on the user's device\n\n1. Call `uploadWidgetTool`. It shows an upload widget and returns a `sessionId`. Ask the user to upload their files in the widget.\n2. Call `uploadWidgetStatusTool` with the `sessionId` to get the uploaded media.\n   - An empty list means nothing was uploaded yet.\n   - A media with status `processing` is still being prepared; call again in a few seconds.\n   - A media with status `ready` can be attached with its `path`.\n\nIf no widget appears (some apps can't show it), ask the user for a public link to the file and use `uploadFromUrlTool` instead.\n\n## Generate an image\n\nCall `generateImageTool` with a clear description of the image. It returns the hosted `path` of the image saved in the media library. Ask the user to describe the image if they haven't; don't invent the subject. If it returns an `error`, such as no generation allowance left on the account, relay it to the user.\n\n## Generate a video\n\nVideo generation runs in the background and takes a few minutes.\n\n1. Call `generateVideoOptions` to see the video types that can be generated and the `customParams` each one needs. Each type's `type` value is its identifier for the next steps.\n2. If a type lists helper `tools` (for example to choose a voice), call `videoFunctionTool` with that `type` value as `identifier` and the tool's `functionName`, and let the user pick from the result.\n3. Call `generateVideoTool` with the `type` value as `identifier`, the `output` (`vertical` for TikTok, Reels, Shorts, and Stories, `horizontal` otherwise), and the `customParams`. It returns a `jobId`. Tell the user the video is being generated.\n4. Call `videoStatusTool` with the `jobId`. While the status is `pending`, wait about 30 seconds and check again. When it is `completed`, use the returned `url` as the attachment. When it is `failed`, relay the error.\n\nGenerated images and videos are saved to the user's Postiz media library even if no post is created.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}