← RavenpostCONTENT HISTORY
WHAT CHANGED
Update to Ravenpost
Snapshot Oct 28, 2026 · 13:12 UTC · version 1.0.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Save Ravenpost and check future changes in Following.
Up to 10 plugins free · no card required.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Get images and video into Ravenpost's media library and into the right shape for each network — upload from a URL, a local path or a direct presigned upload, reformat to feed, square, landscape, story or reel canvases, and cut one image into several platform sizes at once. Use when a post needs a picture or video, when the user hands over a file or link to post, when an image is the wrong aspect ratio for Instagram or TikTok, or when they ask what sizes a platform wants.",
"included_files": [],
"name": "prepare-post-media",
"skill_md_contents": "---\nname: prepare-post-media\ndescription: Get images and video into Ravenpost's media library and into the right shape for each network — upload from a URL, a local path or a direct presigned upload, reformat to feed, square, landscape, story or reel canvases, and cut one image into several platform sizes at once. Use when a post needs a picture or video, when the user hands over a file or link to post, when an image is the wrong aspect ratio for Instagram or TikTok, or when they ask what sizes a platform wants.\n---\n\n# Prepare media for a post\n\nMedia lives in a per-workspace library and is referenced by id: upload once,\nreuse the id in as many posts as you like. **Settle the workspace first**\n(`list_workspaces`) — a media id from one workspace is refused in another, and\na storage key is refused outright.\n\nFull argument list:\n[`../publish-a-social-post/references/tools.md`](../publish-a-social-post/references/tools.md).\nPer-platform media rules:\n[`../publish-a-social-post/references/platforms.md`](../publish-a-social-post/references/platforms.md).\n\n## You cannot make the picture\n\nThese tools **ingest** files; nothing here generates an image or a video. If a\npost needs media and the user has not provided any, ask for it. Do not describe\nan image you intend to produce, and do not fetch a stock photo from the open web\non the user's behalf — that is someone else's licence, and they did not ask for it.\n\n## Getting a file in\n\n| Situation | Tool | Notes |\n|---|---|---|\n| The file is already online | `upload_media` with `url` | The usual case, and the cheapest |\n| A large file, or anything in production | `create_media_upload` → HTTP `PUT` the bytes → `attach_media` | Bytes go straight to storage, never through this conversation |\n| A small image you already hold as bytes | `upload_media` with `base64` | Images only; avoid for video |\n| A local path | `upload_media` with `path` | A development server only — it reads its own disk. The hosted server does not offer the argument at all |\n| It is already in the library | `list_media` | Reuse the id instead of uploading twice |\n\nThe presigned route is three calls on purpose: `create_media_upload` returns an\n`uploadUrl` and a `storageKey`, you PUT the raw bytes to that URL with the\nmatching `Content-Type`, then `attach_media` records it with the **same**\n`workspaceId` you presigned in.\n\n## Shaping it\n\nImages are reformatted on the way in; pass `format`:\n\n- `feed_square` (1:1), `feed_portrait` (4:5 — the largest an Instagram feed shows),\n `landscape` (1.91:1), `story` (9:16, also what a reel or a TikTok photo wants),\n `original` (untouched).\n- `fit`: `cover` crops to fill (default), `contain` pads so nothing is cut off.\n- `crop`: `smart` finds the subject (default), `centre` is predictable — better\n for posters, screenshots and flat graphics composed around their middle.\n\n`image_formats` returns the live list with target dimensions.\n\n**One image, several networks:** `create_variants` cuts one library image into\nany of `feed_portrait`, `feed_square`, `landscape` and `story` in one call and\nreturns the new ids. Variants inherit the source's alt text and folder, the\nsource is left alone, and two formats with the same dimensions produce one file.\nThis is the right move when a post goes to an Instagram feed and a TikTok at\nonce — pass each destination the id that fits it.\n\n## Video is stored as-is\n\nVideo is never re-encoded: `format`, `fit` and `crop` are ignored, and the file\nis recorded exactly as uploaded (mp4, mov or webm). Cut it before uploading.\nThree consequences worth saying out loud before the post fails:\n\n- **Instagram video must be posted as `REEL` or `STORY`.** An `IMAGE` or\n `CAROUSEL` post carrying a video is rejected at publish time.\n- **Bluesky takes no video at all**, and **YouTube takes nothing but video**\n (one per post, no images).\n- **TikTok refuses PNG images** — JPEG or WebP — and it refuses them\n *asynchronously*, minutes after the upload appeared to work. Convert before\n uploading rather than debugging it afterwards.\n\n## Alt text\n\nAlt text belongs to the asset, not the post: written once, it rides along to X,\nBluesky, Threads and Mastodon on every post that uses the file. Set it in the\nRavenpost media library.\n"
}SHA-256 of public snapshot: 1a83d25bc5ba6986ad3b35cc13c85f9462411a500025135e8a37ea68276516fa