Repurpose existing content into a native Instagram post. Take a LinkedIn, blog, YouTube script, or X tweet or thread and rebuild it for Instagram: a long piece becomes a carousel or a caption, re-hooked before the 125-char fold, off-platform artifacts stripped (X @-handles, link in bio), published via Publora on approval. Use to adapt content across platforms into Instagram. Not for writing from scratch (use ig-caption-writer or ig-carousel-planner), not for auditing a draft (ig-humanizer --mode audit).
npx skills add https://github.com/sergebulaev/instagram-skills --skill ig-repurposer
Turn something you already made into a post that reads like it was born on
Instagram. Repurposing is not copy-paste. A post that killed on LinkedIn or a
thread that flew on X will die on Instagram if you paste it: wrong hook, wrong
container, wrong rhythm, no media, and artifacts ("link in bio", @-handles,
hashtag walls) that scream off-platform.
This skill transforms, it does not generate. It reads your source, keeps the
idea, and rebuilds the delivery for Instagram.
Not for a blank-page draft (use ig-caption-writer for a single caption,
ig-carousel-planner for a slide-by-slide carousel) and not for reviewing an
already-Instagram draft (use ig-humanizer --mode audit).
Voice profile first (all drafts). If ../../references/voice-profile.md has filled: yes, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that ig-humanizer --mode profile can learn their voice from a few posts, then proceed with the generic voice rules.
transcript, a bullet list, a link to read. Ask for the source, the media the
user has (Instagram needs an image or video), and the goal (saves / shares /
comments / follows) if not given.
claim, the one story, or the one number worth keeping. Most repurposing fails
because it keeps the words instead of the point.
list, or a build -> carousel, one point per slide (hand structure to
ig-carousel-planner, hook slide to payoff slide). A long video -> a carousel
that delivers the payoff, not a summary.
behind "more". Line one (or the hook slide) must land the whole punch on its
own. The source's hook almost never survives; write a new first line using a
2026 Instagram formula (see ../../references/hook-formulas.md), picked by the
goal.
beats. Carousel: one idea per slide, no wall. Cut the source's connective
tissue; Instagram rewards the front-loaded payoff.
platform, "smash subscribe", "read more below", X @-handles that only exist
there, and any "as I wrote on LinkedIn" throat-clearing. A repurposed post
should not admit it was repurposed.
video, or slide set the user will attach. A caption with no media is not
publishable.
ig-hashtag-strategist or apply a3-5 sized set yourself (see ../../references/hashtag-strategy.md). Place them
as one block at the END of the caption or in the first comment, never as a
mid-text wall.
ig-humanizer V3 on the result: 2026 AI vocab byparagraph density, em dashes above the cap (about one per 100 words, never
swapped for a period), stacked rule-of-three triads, generic openers and
reveal bridges. Fix only a paragraph that reads machine-flat; never
manufacture variance. Keep the user's real numbers and named entities from
the source.
10. Approval card. Show: source -> Instagram mapping (what became what), the
container (single caption or N-slide carousel), formula used, the hook (flag
if over 125 chars), hashtag set, the media the user must attach, primary goal.
11. On approval. Publish via `lib.publish(kind="post",
draft_text=<approved caption>, target_url="https://www.instagram.com/",
media=[<local file paths>], platforms=[<INSTAGRAM_PLATFORM_ID>],
scheduled_time=<iso_or_None>). For a Reel pass kind="reel"`. The wrapper
runs the Publora draft then upload then schedule flow. With no media or no
Publora key it returns a copy-paste block and a reminder to attach the media.
slide) or, if it is one sharp claim, a single caption. LinkedIn tolerates
warm-up; Instagram does not. The LinkedIn hook is usually too long; rewrite it
for the 125-char fold.
per slide, hook slide first, payoff slide last. Do not paste the whole piece
into one caption.
its intro. Build the carousel around "here's what I found", not a scene-by-scene
recap.
thread becomes a carousel, one tweet per slide with its own micro-point. Strip
X @-handles and thread numbering.
Global voice rules: see root SKILL.md Voice rules. Additional skill-specific
rules:
never the meaning or the numbers.
125-char fold. If it needs the second line, rewrite it.
spine.
reminding the user to attach the image, video, or slides.
@-handles, thread numbering).
../../references/hook-formulas.md - the 10 Instagram formula skeletons to re-hook with../../references/algorithm-heuristics.md - 2026 Instagram ranking rules (fold, timing, signals)../../references/hashtag-strategy.md - the 3-5 sized hashtag recipe../../references/media-workflow.md - the draft, upload, schedule flowig-caption-writer - write a fresh single caption from scratchig-carousel-planner - structure a slide-by-slide carousel (repurposer hands long builds here)ig-hashtag-strategist - build the sized hashtag setig-humanizer - scrub AI tells, plus --mode audit to review the resultTake sergebulaev/ig-repurposer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.