← PubloraCONTENT HISTORY

Update to Publora

Snapshot Oct 26, 2026 · 06:08 UTC · version 1.1.3

Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED

Instructions updated for publora-media

Full description — Now says: or video to Publora posts from a chat file, public URL or uploaded bytes, and resolve media errors before scheduling. Use when a post needs media, an upload...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Publora and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Full description

Before

Sep 30, 2026 · 22:55 UTC

and video to a Publora post — by public URL or by uploading a local file — and fix media problems that block scheduling. Use when a post needs a picture or clip, when Instagram, TikTok or YouTube refuse a text-only post, or when media er...

After

Oct 26, 2026 · 06:08 UTC

or video to Publora posts from a chat file, public URL or uploaded bytes, and resolve media errors before scheduling. Use when a post needs media, an upload is pending, or an attachment blocks publication.

Skill instructions

Before

Sep 30, 2026 · 22:55 UTC

and video to a Publora post — by public URL or by uploading a local file — and fix media problems that block scheduling. Use when a post needs a picture or clip, when Instagram, TikTok or YouTube refuse a text-only post, or when me...

After

Oct 26, 2026 · 06:08 UTC

or video to Publora posts from a chat file, public URL or uploaded bytes, and resolve media errors before scheduling. Use when a post needs media, an upload is pending, or an attachment blocks publication. For personal posts, use the...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -1,78 +1,97 @@
 ---
 name: publora-media
 description: >
-  Attach images and video to a Publora post — by public URL or by uploading a
-  local file — and fix media problems that block scheduling. Use when a post
-  needs a picture or clip, when Instagram, TikTok or YouTube refuse a text-only
-  post, or when media errors stop a post from being scheduled.
+  Attach images or video to Publora posts from a chat file, public URL or
+  uploaded bytes, and resolve media errors before scheduling. Use when a post
+  needs media, an upload is pending, or an attachment blocks publication.
 ---
 
 # Media in Publora
 
-Two ways in, and one of them is much shorter.
+For personal posts, use the paths below. Agency client posts use
+`company_reserve_media`, `company_complete_media`, `company_delete_media`
+and `company_list_post_media`; follow the Agency flow in
+`publora-publishing`. Never mix their media IDs or post IDs.
+
+Finish the media work before scheduling. An attachment operation does not
+authorize publication or rescheduling.
+
+## File from the conversation
+
+1. Create a personal draft with `create_post`, omitting `scheduledTime`
+   and `publishNow`, or use the existing authorized draft.
+2. Call `attach_media` with its `postGroupId` and the real file reference
+   accepted by the current host's `file` parameter. Optional `fileName`
+   changes the stored filename.
+3. Verify the attachment is ready with `get_post`.
+
+The host resolves the file to a temporary download URL for Publora. Do not
+invent a URL, paste base64, or send a sandbox path as a download URL. If the
+host exposes an absolute-local-path file parameter, supply an actual file
+there. If it cannot resolve the file, use a public URL or upload the bytes.
+
+One file per call. No PUT or `complete_media` is needed for this path.
+`attach_media` leaves the post in draft and demotes an already scheduled post.
+Explain that effect before changing a scheduled post; restore only the schedule
+the user has authorized. Retrying the same attachment uses the same post,
+file identity, filename and idempotency key.
 
-## By URL, when the file is already on the web
+## Public file URL
 
-Pass `mediaUrls` to `create_post` or `update_post`. Publora downloads the files
-server-side, so nothing is uploaded from the conversation.
+Pass `mediaUrls` to `create_post` or `update_post`. Publora fetches and
+stores the file on its servers.
 
-```
-create_post
-  platforms: ["<platformId>"]
-  content: "<caption>"
-  mediaUrls: ["https://example.com/image.png"]
-  scheduledTime: "2026-08-12T09:00:00Z"
-```
-
-Requirements that actually bite:
-
-- **Direct file URLs only.** A Google Drive or Dropbox share page is a web page,
-  not a file, and the download fails.
+- Use direct public HTTPS file URLs, not Google Drive/Dropbox share pages.
 - Images: jpeg, png, gif, webp, tiff, avif, up to 25 MB.
 - Videos: mp4, mov, webm, up to 150 MB.
-- Up to 10 files per post.
-
-If a URL cannot be fetched, the whole call fails and the response names the
-file and the HTTP status behind it. Report that to the user rather than
-retrying the same URL — an expired or private link will not start working.
-
-## By upload, when the file is local
-
-Three steps per file, in order:
-
-1. `get_upload_url` with a **unique** file name → returns a presigned URL and a
-   `mediaId`. Reusing a name returns the same slot instead of adding a new one,
-   which is how several files silently collapse into one.
-2. `PUT` the bytes to that URL.
-3. `complete_media` for that `mediaId` — Publora inspects the bytes and marks
-   the file ready.
-
-Create the post as a draft first (no `scheduledTime`), attach the media, then
-`update_post` with `status: "scheduled"` and the time. Scheduling before the
-media is ready fails validation.
-
-## Networks that require media
-
-Instagram, TikTok and YouTube cannot take a text-only post. If the user wants
-one of those without a file, say so and offer either to attach something or to
-drop that network — do not schedule and hope.
-
-## Covers and network options
-
-`platformSettings` carries the extras: an Instagram Reels cover image, a
-YouTube title, tags and privacy, TikTok viewer setting. A cover URL follows the
-same rule as any media URL — public, direct, https.
-
-## When media blocks scheduling
-
-Two errors show up in practice:
-
-- **Too many media slots, or a slot that was never uploaded.** Call `get_post`
-  and read its `media` array: each entry carries a status. Remove the offending
-  file with `delete_media`.
-- **A reference to a file that no longer exists.** `prune_media_reference`
-  clears a dangling reference that `delete_media` cannot, because the underlying
-  record is already gone.
+- Up to 10 files; each target may impose a lower limit or other format rules.
 
-Both are destructive and cannot be undone. Name the exact file you are about to
-remove, and let the user confirm before you remove it.
+`update_post.mediaUrls` appends files; it does not replace existing attachments
+or unfinished upload slots. Inspect `get_post` before adding replacements.
+Report download/validation errors accurately. A private or expired link needs
+repair; a repeated call with the same unusable link will not help.
+For drafts omit publishing fields. Schedule separately after content/media
+approval, using the current `update_post` schema.
+
+## Upload bytes
+
+Use this route only if you can read the bytes and perform the PUT.
+
+1. `get_upload_url` with postGroupId, a unique filename, contentType and type.
+2. PUT the exact bytes to the returned uploadUrl with the same Content-Type.
+   Do not send a Publora credential to storage.
+3. `complete_media` with the returned mediaId.
+4. `get_post` to verify ready before scheduling.
+
+For the same unfinished upload, identical postGroupId/fileName/contentType/type
+reissues the same slot. Use distinct filenames for distinct files.
+
+- `MEDIA_UPLOAD_PENDING`: upload the bytes before retrying completion.
+- `MEDIA_VALIDATION_PENDING`, or `retryable: true` with
+  `WAIT_AND_RETRY_SAME_MEDIA`: wait retryAfterSec, then repeat
+  `complete_media` with the same mediaId. Do not reserve another slot.
+- Follow the server's nextAction for other failures. Never label pending
+  media ready or schedule while validation is incomplete.
+
+## Repairing attachments
+
+Read `get_post.media` to identify the exact attachment and state.
+
+- Use `delete_media` for an existing duplicate or unfinished reservation
+  only when the user's request authorizes discarding that specific file.
+- Use `prune_media_reference` for `MEDIA_REFERENCE_MISSING` when the
+  reference remains but the MediaFile record is absent or inaccessible.
+- Deleting media from a scheduled post demotes it to draft. Inspect the
+  resulting state and restore the authorized schedule only after repair.
+- A failed upload alone is not permission to discard another attachment.
+  When intent is unclear, ask about the exact file before removing it.
+
+## Network requirements
+
+Instagram and TikTok require media; YouTube requires a video, not just an
+image. Check each target's format and count limits. Offer suitable media or a
+change of target if required; do not silently drop a network.
+
+Use supported `platformSettings` for a Reels cover, YouTube title/privacy or
+TikTok viewer setting. Covers must be public direct HTTPS files of the required
+type. Before scheduling, verify the saved media, content and target settings.
Full technical diff · 2 changed fields

changed /description

BEFORE
"Attach images and video to a Publora post — by public URL or by uploading a local file — and fix media problems that block scheduling. Use when a post needs a picture or clip, when Instagram, TikTok or YouTube refuse a text-only post, or when media errors stop a post from being scheduled."
AFTER
"Attach images or video to Publora posts from a chat file, public URL or uploaded bytes, and resolve media errors before scheduling. Use when a post needs media, an upload is pending, or an attachment blocks publication.\n"

changed /skill_md_contents

BEFORE
"---\nname: publora-media\ndescription: >\n  Attach images and video to a Publora post — by public URL or by uploading a\n  local file — and fix media problems that block scheduling. Use when a post\n  needs a picture or clip, when Instagram, TikTok or YouTube refuse a text-only\n  post, or when media errors stop a post from being scheduled.\n---\n\n# Media in Publora\n\nTwo ways in, and one of them is much shorter.\n\n## By URL, when the file is already on the web\n\nPass `mediaUrls` to `create_post` or `update_post`. Publora downloads the files\nserver-side, so nothing is uploaded from the conversation.\n\n```\ncreate_post\n  platforms: [\"<platformId>\"]\n  content: \"<caption>\"\n  mediaUrls: [\"https://example.com/image.png\"]\n  scheduledTime: \"2026-08-12T09:00:00Z\"\n```\n\nRequirements that actually bite:\n\n- **Direct file URLs only.** A Google Drive or Dropbox share page is a web page,\n  not a file, and the download fails.\n- Images: jpeg, png, gif, webp, tiff, avif, up to 25 MB.\n- Videos: mp4, mov, webm, up to 150 MB.\n- Up to 10 files per post.\n\nIf a URL cannot be fetched, the whole call fails and the response names the\nfile and the HTTP status behind it. Report that to the user rather than\nretrying the same URL — an expired or private link will not start working.\n\n## By upload, when the file is local\n\nThree steps per file, in order:\n\n1. `get_upload_url` with a **unique** file name → returns a presigned URL and a\n   `mediaId`. Reusing a name returns the same slot instead of adding a new one,\n   which is how several files silently collapse into one.\n2. `PUT` the bytes to that URL.\n3. `complete_media` for that `mediaId` — Publora inspects the bytes and marks\n   the file ready.\n\nCreate the post as a draft first (no `scheduledTime`), attach the media, then\n`update_post` with `status: \"scheduled\"` and the time. Scheduling before the\nmedia is ready fails validation.\n\n## Networks that require media\n\nInstagram, TikTok and YouTube cannot take a text-only post. If the user wants\none of those without a file, say so and offer either to attach something or to\ndrop that network — do not schedule and hope.\n\n## Covers and network options\n\n`platformSettings` carries the extras: an Instagram Reels cover image, a\nYouTube title, tags and privacy, TikTok viewer setting. A cover URL follows the\nsame rule as any media URL — public, direct, https.\n\n## When media blocks scheduling\n\nTwo errors show up in practice:\n\n- **Too many media slots, or a slot that was never uploaded.** Call `get_post`\n  and read its `media` array: each entry carries a status. Remove the offending\n  file with `delete_media`.\n- **A reference to a file that no longer exists.** `prune_media_reference`\n  clears a dangling reference that `delete_media` cannot, because the underlying\n  record is already gone.\n\nBoth are destructive and cannot be undone. Name the exact file you are about to\nremove, and let the user confirm before you remove it.\n"
AFTER
"---\nname: publora-media\ndescription: >\n  Attach images or video to Publora posts from a chat file, public URL or\n  uploaded bytes, and resolve media errors before scheduling. Use when a post\n  needs media, an upload is pending, or an attachment blocks publication.\n---\n\n# Media in Publora\n\nFor personal posts, use the paths below. Agency client posts use\n`company_reserve_media`, `company_complete_media`, `company_delete_media`\nand `company_list_post_media`; follow the Agency flow in\n`publora-publishing`. Never mix their media IDs or post IDs.\n\nFinish the media work before scheduling. An attachment operation does not\nauthorize publication or rescheduling.\n\n## File from the conversation\n\n1. Create a personal draft with `create_post`, omitting `scheduledTime`\n   and `publishNow`, or use the existing authorized draft.\n2. Call `attach_media` with its `postGroupId` and the real file reference\n   accepted by the current host's `file` parameter. Optional `fileName`\n   changes the stored filename.\n3. Verify the attachment is ready with `get_post`.\n\nThe host resolves the file to a temporary download URL for Publora. Do not\ninvent a URL, paste base64, or send a sandbox path as a download URL. If the\nhost exposes an absolute-local-path file parameter, supply an actual file\nthere. If it cannot resolve the file, use a public URL or upload the bytes.\n\nOne file per call. No PUT or `complete_media` is needed for this path.\n`attach_media` leaves the post in draft and demotes an already scheduled post.\nExplain that effect before changing a scheduled post; restore only the schedule\nthe user has authorized. Retrying the same attachment uses the same post,\nfile identity, filename and idempotency key.\n\n## Public file URL\n\nPass `mediaUrls` to `create_post` or `update_post`. Publora fetches and\nstores the file on its servers.\n\n- Use direct public HTTPS file URLs, not Google Drive/Dropbox share pages.\n- Images: jpeg, png, gif, webp, tiff, avif, up to 25 MB.\n- Videos: mp4, mov, webm, up to 150 MB.\n- Up to 10 files; each target may impose a lower limit or other format rules.\n\n`update_post.mediaUrls` appends files; it does not replace existing attachments\nor unfinished upload slots. Inspect `get_post` before adding replacements.\nReport download/validation errors accurately. A private or expired link needs\nrepair; a repeated call with the same unusable link will not help.\nFor drafts omit publishing fields. Schedule separately after content/media\napproval, using the current `update_post` schema.\n\n## Upload bytes\n\nUse this route only if you can read the bytes and perform the PUT.\n\n1. `get_upload_url` with postGroupId, a unique filename, contentType and type.\n2. PUT the exact bytes to the returned uploadUrl with the same Content-Type.\n   Do not send a Publora credential to storage.\n3. `complete_media` with the returned mediaId.\n4. `get_post` to verify ready before scheduling.\n\nFor the same unfinished upload, identical postGroupId/fileName/contentType/type\nreissues the same slot. Use distinct filenames for distinct files.\n\n- `MEDIA_UPLOAD_PENDING`: upload the bytes before retrying completion.\n- `MEDIA_VALIDATION_PENDING`, or `retryable: true` with\n  `WAIT_AND_RETRY_SAME_MEDIA`: wait retryAfterSec, then repeat\n  `complete_media` with the same mediaId. Do not reserve another slot.\n- Follow the server's nextAction for other failures. Never label pending\n  media ready or schedule while validation is incomplete.\n\n## Repairing attachments\n\nRead `get_post.media` to identify the exact attachment and state.\n\n- Use `delete_media` for an existing duplicate or unfinished reservation\n  only when the user's request authorizes discarding that specific file.\n- Use `prune_media_reference` for `MEDIA_REFERENCE_MISSING` when the\n  reference remains but the MediaFile record is absent or inaccessible.\n- Deleting media from a scheduled post demotes it to draft. Inspect the\n  resulting state and restore the authorized schedule only after repair.\n- A failed upload alone is not permission to discard another attachment.\n  When intent is unclear, ask about the exact file before removing it.\n\n## Network requirements\n\nInstagram and TikTok require media; YouTube requires a video, not just an\nimage. Check each target's format and count limits. Offer suitable media or a\nchange of target if required; do not silently drop a network.\n\nUse supported `platformSettings` for a Reels cover, YouTube title/privacy or\nTikTok viewer setting. Covers must be public direct HTTPS files of the required\ntype. Before scheduling, verify the saved media, content and target settings.\n"
Full snapshot data
{
  "description": "Attach images or video to Publora posts from a chat file, public URL or uploaded bytes, and resolve media errors before scheduling. Use when a post needs media, an upload is pending, or an attachment blocks publication.\n",
  "included_files": [],
  "name": "publora-media",
  "skill_md_contents": "---\nname: publora-media\ndescription: >\n  Attach images or video to Publora posts from a chat file, public URL or\n  uploaded bytes, and resolve media errors before scheduling. Use when a post\n  needs media, an upload is pending, or an attachment blocks publication.\n---\n\n# Media in Publora\n\nFor personal posts, use the paths below. Agency client posts use\n`company_reserve_media`, `company_complete_media`, `company_delete_media`\nand `company_list_post_media`; follow the Agency flow in\n`publora-publishing`. Never mix their media IDs or post IDs.\n\nFinish the media work before scheduling. An attachment operation does not\nauthorize publication or rescheduling.\n\n## File from the conversation\n\n1. Create a personal draft with `create_post`, omitting `scheduledTime`\n   and `publishNow`, or use the existing authorized draft.\n2. Call `attach_media` with its `postGroupId` and the real file reference\n   accepted by the current host's `file` parameter. Optional `fileName`\n   changes the stored filename.\n3. Verify the attachment is ready with `get_post`.\n\nThe host resolves the file to a temporary download URL for Publora. Do not\ninvent a URL, paste base64, or send a sandbox path as a download URL. If the\nhost exposes an absolute-local-path file parameter, supply an actual file\nthere. If it cannot resolve the file, use a public URL or upload the bytes.\n\nOne file per call. No PUT or `complete_media` is needed for this path.\n`attach_media` leaves the post in draft and demotes an already scheduled post.\nExplain that effect before changing a scheduled post; restore only the schedule\nthe user has authorized. Retrying the same attachment uses the same post,\nfile identity, filename and idempotency key.\n\n## Public file URL\n\nPass `mediaUrls` to `create_post` or `update_post`. Publora fetches and\nstores the file on its servers.\n\n- Use direct public HTTPS file URLs, not Google Drive/Dropbox share pages.\n- Images: jpeg, png, gif, webp, tiff, avif, up to 25 MB.\n- Videos: mp4, mov, webm, up to 150 MB.\n- Up to 10 files; each target may impose a lower limit or other format rules.\n\n`update_post.mediaUrls` appends files; it does not replace existing attachments\nor unfinished upload slots. Inspect `get_post` before adding replacements.\nReport download/validation errors accurately. A private or expired link needs\nrepair; a repeated call with the same unusable link will not help.\nFor drafts omit publishing fields. Schedule separately after content/media\napproval, using the current `update_post` schema.\n\n## Upload bytes\n\nUse this route only if you can read the bytes and perform the PUT.\n\n1. `get_upload_url` with postGroupId, a unique filename, contentType and type.\n2. PUT the exact bytes to the returned uploadUrl with the same Content-Type.\n   Do not send a Publora credential to storage.\n3. `complete_media` with the returned mediaId.\n4. `get_post` to verify ready before scheduling.\n\nFor the same unfinished upload, identical postGroupId/fileName/contentType/type\nreissues the same slot. Use distinct filenames for distinct files.\n\n- `MEDIA_UPLOAD_PENDING`: upload the bytes before retrying completion.\n- `MEDIA_VALIDATION_PENDING`, or `retryable: true` with\n  `WAIT_AND_RETRY_SAME_MEDIA`: wait retryAfterSec, then repeat\n  `complete_media` with the same mediaId. Do not reserve another slot.\n- Follow the server's nextAction for other failures. Never label pending\n  media ready or schedule while validation is incomplete.\n\n## Repairing attachments\n\nRead `get_post.media` to identify the exact attachment and state.\n\n- Use `delete_media` for an existing duplicate or unfinished reservation\n  only when the user's request authorizes discarding that specific file.\n- Use `prune_media_reference` for `MEDIA_REFERENCE_MISSING` when the\n  reference remains but the MediaFile record is absent or inaccessible.\n- Deleting media from a scheduled post demotes it to draft. Inspect the\n  resulting state and restore the authorized schedule only after repair.\n- A failed upload alone is not permission to discard another attachment.\n  When intent is unclear, ask about the exact file before removing it.\n\n## Network requirements\n\nInstagram and TikTok require media; YouTube requires a video, not just an\nimage. Check each target's format and count limits. Offer suitable media or a\nchange of target if required; do not silently drop a network.\n\nUse supported `platformSettings` for a Reels cover, YouTube title/privacy or\nTikTok viewer setting. Covers must be public direct HTTPS files of the required\ntype. Before scheduling, verify the saved media, content and target settings.\n"
}

SHA-256 of public snapshot: be1dec05437b2564af8122c4704d5eedc9233145f20bff88c0d06c035fa555ce