repurpose
Skill3 starsChanged 34 days agoMITView on GitHub
Turn one long piece into a Shorts script, a carousel, a Threads chain and a Naver post, then publish each after approval.
21 other projects use a version of this.
Adopted by
Most recently taken up by
- XuHo-IT/Content-Agent-Kittheir own version, first seen Nov 8, 2026
- smorrel1/claude-code-skillstheir own version, first seen Nov 1, 2026
- fliqrlabs/instagram-creator-skillstheir own version, first seen Nov 1, 2026
- Anglesite/anglesite-skillstheir own version, first seen Oct 27, 2026
- timscheuerai/content-vaulttheir own version, first seen Oct 15, 2026
- claudiocebpaz/blotato-opencodetheir own version, first seen Oct 13, 2026
Used with
Projects with it also use email, strategy and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
OpenAISkillemail
Email sending integration guidance — Resend (native Vercel Marketplace) with React Email templates. Covers API setup, transactional emails, domain verification, and template patterns. Use when sending emails from a Vercel-deployed application.
Also in 4 projects that use this
EpistatesSkillstrategy
Plan weekly or monthly X content strategy. Use when the user wants to plan their content calendar, set growth goals, build a content pipeline, or think strategically about their X presence.
Also in 3 projects that use this
AnthropicSkillanalyze
Answer data questions -- from quick lookups to full analyses. Use when looking up a single metric, investigating what's driving a trend or drop, comparing segments over time, or preparing a formal data report for stakeholders.
Also in 3 projects that use this
Other versions21 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 21
- timscheuerai/content-vault★ 38same name
- rainday/smart-blog-skills★ 35same name
- GTMify/aigtm★ 25same name
- Anglesite/anglesite-skills★ 15same name
- calven-ai/marketing-as-code★ 10same name
- ApurvaMisra/claude-code-assistant★ 8same name
- JayantChopra/stanley-mcp-playground★ 8same name
- styfinity/claude-marketing-department★ 6same name
- fliqrlabs/instagram-creator-skills★ 5same name
- Epistates/sparX★ 3same name
11 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository50 other files it gives its agents.
- automationsSkill
- commentsSkill
- hooksSkill
- ig-auditSkill
- ig-captionSkill
- ig-carouselSkill
- ig-dmSkill
- ig-humanSkill
- ig-profileSkill
- ig-reelSkill
- ig-storySkill
- ig-viralSkill
- inboxSkill
- linkedin-comment-drafterSkill
- linkedin-content-plannerSkill
- linkedin-employee-advocacySkill
- linkedin-engager-analyticsSkill
- linkedin-hook-extractorSkill
- linkedin-humanizerSkill
- linkedin-interviewerSkill
- linkedin-post-writerSkill
- linkedin-profile-optimizerSkill
- linkedin-reply-handlerSkill
- linkedin-repurposerSkill
- linkedin-thread-monitorSkill
- naver-ai-citeSkill
- naver-draftsSkill
- naver-engageSkill
- naver-keywordsSkill
- naver-postSkill
- performance-reviewSkill
- publishSkill
- schedule-weekSkill
- setupSkill
- threadsSkill
- troubleshootSkill
- voice-profileSkill
- yt-auditSkill
- yt-benchmarkSkill
- yt-chaptersSkill
- yt-commentSkill
- yt-editSkill
- yt-packageSkill
- yt-planSkill
- yt-retentionSkill
- yt-scriptSkill
- yt-seoSkill
- yt-shortsSkill
- yt-uploadSkill
- yt-viralSkill
The file
We split this skill into the rules it gives an agent
3 rules. 0 are common, 2 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 18 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Read all of it before writing anything.
- Distinctive: line 24
Every piece has to make sense to someone who never saw the original.
- Very specific: line 58
Call publish with accountIds, content or threadItems, mediaIds, options and wait: true.
“Common” is measured: kept by at least 6 in 10 of the 18 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Repurpose
Use this for "turn this video into posts", "repurpose my blog post", "make a carousel and a Threads chain from this". One long piece (a video, a blog post, a newsletter, a talk, a podcast) becomes four pieces, each written for its own channel: a Shorts script, a carousel, a Threads chain and a Naver Blog post. Each piece is shown and published on its own, after the person approves it. Ask which of the four they want; by default, all four.
Repurpose the person's own work, or material they have the right to reuse.
1. Get the whole source
- Pasted text or a transcript: use it as it is.
- A post on one of the person's connected channels (their Naver Blog post, YouTube video, Threads post):
open_postwith the link reads it. A YouTube video comes back as its title and description, not what is said in it. - A video without a transcript: with a terminal,
yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs <language code> <url>saves the subtitles. Without one, ask the person to paste the transcript.
Read all of it before writing anything.
2. Pull out what stands alone
List what the piece actually contains: the main claim, the steps of any process, the numbers (and where they come from), the stories (who, what happened, what it cost), the mistakes admitted, and the lines worth quoting as they are. Show the list and which piece each item will feed. If the source is thin, say so rather than stretching it into four.
Every piece has to make sense to someone who never saw the original. Never write "as I said in the video".
3. Write the four pieces
Read ~/.uplika/<workspace-slug>/voice.md first if it exists. If not, ask three questions (tone, how posts end, words to avoid) and offer to save the answers with the voice-profile skill. Write in the person's language. Openings come from the hooks skill; give each piece a different formula. Read each channel's limits from list_platforms (or the limits of select_channels) instead of guessing them.
Shorts script
One item from the list, for a vertical video. Write the spoken lines and the on-screen text side by side, beat by beat: the hook first, the payoff before the end, one closing line. Note what is on screen for each beat. Uplika does not cut or edit video: the person records or cuts it, and the yt-shorts skill helps find moments in their own long video. When they have the file, publish it the way the yt-upload skill does (options.youtube.title, and made-for-kids asked every time).
Carousel
One feed post with several images. A cover slide that carries the hook, one idea per slide, a last slide that sums up or asks for the one action, and a caption. Keep slide text short enough to read in one look.
- The images: the person makes them, or you do if this session can render images. Mark AI-made images with
aiGenerated. - Media ids in slide order: a public https file goes through
media_from_url(Google Drive and Dropbox share links are preview pages, not files: ask for a direct file link). A file on the person's device goes through the publish skill's upload steps. - Pass the ids in
mediaIdsin slide order and writealtTextfor each slide you can see. - On Instagram several images in a feed post make the carousel (
options.instagram.contentTypefeed, the default for images). An image outside the shape Instagram keeps in the feed is cropped, not refused, and the result carries a warning: say so before publishing if the edges matter. How many images a channel takes in one post is inlist_platforms.
Threads chain
Follow the threads skill: the hook first, one point per piece, each piece readable on its own, the pieces in threadItems (the first one is the root). Check every piece against the Threads limit from list_platforms, counted the way its charCount says. A topic tag only if the person wants one (options.threads.topicTag). The last piece can point to the original if it is public.
Naver Blog post
Write the body the way the naver-post skill does (grammar, photos placed in the body, the title in options.naver_blog.title, a category the person chooses). Then preview it: naver_layout with the body and the mediaIds. To let the person choose a form, call it with forms set to all and show the layouts side by side; publish with options.naver_blog.form set to the id they pick. If they laid the post out themselves, options.naver_blog.layout set to as-is publishes it unchanged. Never pick the form for them.
4. Publish, one channel at a time
For each piece, in the order the person wants:
- Find the account with
select_channels. Never assume it is connected; if it is not, send the person to https://uplika.com/dashboard/connections. If it answersworkspace_required, show the workspaces, ask which one, and passworkspaceIdon every call. - Show the piece exactly as it will go out: the text (every chain piece, every slide), the media, the channel and handle, and the time. Publish only after the person approves that piece. A piece they do not approve is not published.
- Naver Blog: call
bridge_statusfirst. If it is not online, relay itsuserMessage: the post waits in the queue until Chrome with the extension is on. Ifpublishanswersnaver_rate_limited, wait for itsretryAfterSecondsbefore trying again; the draft is already in Naver. - Call
publishwithaccountIds,contentorthreadItems,mediaIds,optionsandwait: true. To spread the pieces over several days instead, passscheduledAt(ISO 8601 with the offset of the time zone the person states), or hand the set to theschedule-weekskill. - Report each piece's status and permalink. If the wait ended before the post was out,
get_postreads the final status; a wait that ends early is not a failure, so check before publishing again. If the response carries abridgeobject, relay itsuserMessageand do not say the post is live.
Errors
feature_in_review,reconsent_required,account_disconnected: thetroubleshootskill.- Anything else: call
get_helpwith the code and pass its answer and url on.
Tools
open_post: read the source when it is a post on a connected channelselect_channels: the account for each piece, and its limitslist_platforms: each channel's limits and what it can domedia_from_url: slide images and other media from a public https addressnaver_layout: preview the Naver Blog post and the forms to choose frombridge_status: the Naver Blog extension, before publishing therepublish: publish or schedule each approved pieceget_post: the final status and permalink of a pieceget_help: the answer for an error code
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

