bulk-publish

bulk-publish is a skill for Claude Code, Codex from azeemkafridi/bulkpublish-api. It costs 38 tokens per session (972 once invoked), scanned A, original, MIT.

A set of tools for uploading images and videos, browsing or removing uploaded files, and creating many social media posts at once.

In plain words
What is it for?
It helps manage a media library, upload files from a computer or public URL, and attach them to batch social posts while checking platform media requirements.
Why use it?
It avoids uploading media and preparing each post separately when publishing content across multiple channels.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Not installable: its command points at a path on the author’s own machine, so it runs nowhere else. The line is /Users/me/photo.png).

Good fit It helps manage a media library, upload files from a computer or public URL, and attach them to batch social posts while checking platform media requirements.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

There is no command for this one: it runs only inside a plugin, and the catalogue could not identify which plugin ships it. The source is linked below.

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for bulk-publish

README.md
[![agentmods](https://agentmods.dev/badge/skills/azeemkafridi/bulkpublish-api/bulk-publish/github.svg)](https://agentmods.dev/skills/azeemkafridi/bulkpublish-api/bulk-publish)
Your own site
<a href="https://agentmods.dev/skills/azeemkafridi/bulkpublish-api/bulk-publish"><img src="https://agentmods.dev/badge/skills/azeemkafridi/bulkpublish-api/bulk-publish/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for bulk-publish

Your own site · 80×15
<a href="https://agentmods.dev/skills/azeemkafridi/bulkpublish-api/bulk-publish"><img src="https://agentmods.dev/badge/skills/azeemkafridi/bulkpublish-api/bulk-publish.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 38 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 972 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00038 $0.00972
Opus 5 $0.00019 $0.00486
Sonnet 5 $0.00008 $0.00194
Haiku 4.5 $0.00004 $0.00097

Measured 9d ago against content hash 51fdc7f5d8cd, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

bulk-publish scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/social-media-content-skills/bulk-publish/SKILL.md · 73 lines

How it starts

The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.

BulkPublish — Media & Bulk Publishing Reference

upload_media parameters

url       (string, optional) — public URL to download from
filePath  (string, optional) — absolute local file path (e.g. /Users/me/photo.png)
filename  (string, optional) — override filename, otherwise derived from url/path

Provide either url OR filePath, not both.

Supported formats

Type Formats Max size
Image JPEG, PNG, WebP, GIF 100MB
Video MP4, MOV, WebM 100MB (up to 1GB via multipart — see below)

Response

Returns: id (use this in mediaFileIds when creating posts), fileName, mimeType, sizeBytes, width, height, duration (video), originalUrl, thumbnailUrl, previewUrl.

Other media tools

Tool Use for Key params
list_media Browse uploaded files search, page, limit
get_media Single file details mediaId
delete_media Remove a file mediaId

Media requirements by platform

Platform Image Video Notes
Instagram Reels MP4, 9:16 3-90 seconds
Instagram Stories JPEG/PNG, 9:16 MP4, 9:16 1080x1920 recommended
Instagram Carousel JPEG/PNG 2-10 images
TikTok MP4 1-10 minutes
YouTube MP4 Requires title in platformSpecific
Pinterest JPEG/PNG, 2:3 MP4 1000x1500 recommended
Facebook/X/LinkedIn JPEG/PNG MP4 Most formats accepted

Large files — multipart upload (REST API)

For videos over 100MB (up to 1GB), use the chunked multipart flow. No MCP tool yet — call the REST API directly (Authorization: Bearer bp_your_key, base https://app.bulkpublish.com):

  1. POST /api/media/multipart/create — body {contentType, sizeBytes} (exact size) → {r2Key, uploadId, partSize, partUrls, expiresIn}. partSize is fixed at 10MB (10485760); partUrls is one presigned PUT URL per part, in order; URLs expire in 3600s.
  2. PUT each 10MB slice of the file to its partUrl and save the ETag response header per part. A failed part can be retried alone — a network drop never restarts the whole file.
  3. POST /api/media/multipart/complete — body {r2Key, uploadId, parts: [{partNumber, etag}], fileName, mimeType, sizeBytes, width?, height?, duration?}{file} (same media object as a normal upload; its id goes in mediaFileIds). Failed assembly auto-aborts the upload.

Read the full file on GitHub · 73 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 73 lines · 38 tokens per session scan A 51fdc7f5d8cd

Subscribe to this mod's changes

bulk-publish is a skill published in the GitHub repository azeemkafridi/bulkpublish-api (1 stars, last pushed 6d ago), licensed MIT. It adds 38 tokens to every session and 972 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.