kevinbadi/ai-os-skills · Archived

post-publish-folder

Publish text and image posts to social platforms from a local folder. Drop images with caption files or just text files, and this skill publishes to LinkedIn, Twitter, Facebook, and Instagram. Trigger when asked to publish posts, schedule content, or automate social posting.

First seen Apr 8, 2026

Installation

$ npx skills add kevinbadi/ai-os-skills --skill post-publish-folder

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from kevinbadi/ai-os-skills · top by installs.

npx skills add kevinbadi/ai-os-skills

Browse all from kevinbadi/ai-os-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 55
License MIT
Default branch main
Open issues 0
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,673 B
  • docs SUMMARY.md 302 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 4 installs

SKILL.md

Post Publish — Folder Method

Publish your text and image posts to social platforms from a local folder.

Drop content into ~/Posts/. This skill picks up images with caption files (or plain text files), and publishes to LinkedIn, Twitter/X, Facebook, and Instagram.

For creators who write their own posts and want automated cross-platform publishing.


Watch Folder

Default: ~/Desktop/Posts/

The skill scans this folder for:

  • Image posts: .jpg, .png, .webp with matching .txt caption file
  • Text-only posts: .txt files (for platforms that support text-only)

Folder Structure

~/Posts/
  ├── monday-motivation.jpg           ← image to post
  ├── monday-motivation.txt           ← caption for the image
  ├── weekly-update.txt               ← text-only post
  ├── carousel/                       ← carousel folder
  │   ├── slide-1.jpg
  │   ├── slide-2.jpg
  │   └── caption.txt                 ← caption for carousel
  ├── old-post.jpg                    
  ├── old-post.txt
  └── old-post.published.json         ← sidecar (marks as published)

Caption Files

Create a .txt file with the same name as your image:

  • Image: product-launch.jpg
  • Caption: product-launch.txt

The caption file contains your post text. Use --- to separate platform-specific captions:

This is my LinkedIn post. More professional tone.
#business #startup

---twitter---
Short punchy version for Twitter/X 🚀

---instagram---
Full caption for Instagram with more hashtags
.
.
.
#instagram #content #creator

If no platform separators, the same caption is used everywhere.


Usage

# Publish the next unpublished post
node skills/post-publish-folder/scripts/post-publish-folder.js

# Publish to specific platforms only
node skills/post-publish-folder/scripts/post-publish-folder.js --platforms "linkedin,twitter"

# Publish a specific file
node skills/post-publish-folder/scripts/post-publish-folder.js --file "~/Posts/my-post.jpg"

# Preview without publishing
node skills/post-publish-folder/scripts/post-publish-folder.js --dry-run

# Custom watch folder
node skills/post-publish-folder/scripts/post-publish-folder.js --folder "~/Desktop/social-posts"

# Publish ALL unpublished posts (batch mode)
node skills/post-publish-folder/scripts/post-publish-folder.js --all --limit 5

# Schedule for later
node skills/post-publish-folder/scripts/post-publish-folder.js --schedule "2026-03-20T09:00:00"

Flags

Flag Description
--file PATH Publish a specific image or text file
--folder PATH Override watch folder (default: ~/Posts/)
--platforms LIST Comma-separated: linkedin,twitter,facebook,instagram
--schedule DATETIME ISO datetime to schedule publish
--all Publish all unpublished posts in folder
--limit N Max posts in --all mode (default: 10)
--dry-run Preview post, skip publishing

Supported Platforms

Platform Image Posts Text-Only Carousels
LinkedIn
Twitter/X
Facebook
Instagram

Environment Variables

Variable Required Description
LATEAPIKEY Yes Late API key for publishing
INSFORGECONNECTIONSTRING No Database for post tracking

Carousels

Create a subfolder with numbered images:

~/Posts/carousel-post/
  ├── 1.jpg (or slide-1.jpg, 01.jpg)
  ├── 2.jpg
  ├── 3.jpg
  └── caption.txt

The skill detects carousel folders and posts as multi-image posts.

Output

After publishing, each post gets a .published.json sidecar:

{
  "source_file": "monday-motivation.jpg",
  "caption_file": "monday-motivation.txt",
  "media_url": "https://cdn.getlate.dev/media/...",
  "late_post_id": "post_abc123",
  "published_at": "2026-03-13T12:00:00Z",
  "published_platforms": ["linkedin", "twitter", "facebook", "instagram"],
  "captions": { "linkedin": "...", "twitter": "...", ... }
}

Cron Schedule (Recommended)

Check for new posts 3x/day:

0 9,13,17 * * * node skills/post-publish-folder/scripts/post-publish-folder.js