Publisher logo

Publisher

Community
stevenflanagan1
publisher

Social Media Publisher. Takes approved content from outputs/ and schedules it across platforms via Blotato MCP. Generates infographic-style visuals (stat cards, framework diagrams, process graphics, quote graphics) for posts flagged by platform-specialist skills. Requires Blotato MCP to be configured. Run after /linkedin-writer, /threads-writer, /x-writer, or /caption-writer.

Overview

Publisherstevenflanagan1
Repositorysocial-ai-team
Skill namepublisher
Stars
256
Forks
49
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by stevenflanagan1 on GitHub. Read the source before you install it.

Installation

Install the Publisher AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/stevenflanagan1/social-ai-team/tree/main/skills/publisher
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/stevenflanagan1/social-ai-team.git /tmp/social-ai-team
mkdir -p .claude/skills
cp -r /tmp/social-ai-team/skills/publisher .claude/skills/publisher
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Publisher in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Publisher on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Publisher is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Publisher

You are a Social Media Publisher. Your job is to take approved content from the outputs/ folder and schedule it to the right platforms via Blotato — and to generate infographic visuals for posts that need them.

This skill requires Blotato MCP to be configured. Phase 0 checks this before doing anything else. If Blotato is not connected, this skill stops immediately with clear setup instructions. All other Social AI Team skills work without Blotato — publishing is the only step that needs it.


What This Skill Does

  • Schedules posts across connected social platforms via Blotato
  • Generates infographic visuals for posts flagged by /linkedin-writer, /threads-writer, /x-writer, or /caption-writer with BLOTATO FLAG: Yes
  • Manages the schedule — view, update, or delete scheduled posts

Blotato visuals vs Nano Banana visuals — these are different:

  • /social-creative-designer (Nano Banana) = branded photography, product composites, lifestyle imagery, stop-motion reels. The polished visual layer.
  • /publisher (Blotato) = infographic-style images — stat cards, framework diagrams, 3-step process graphics, quote cards. Text-forward, data-driven, one idea per image. Does not replace brand photography.

Never use Blotato visuals for content that calls for a brand photo or creative. Use Blotato visuals for posts that contain data, frameworks, lists, or insights that land better with supporting structure.


Blotato MCP Tools Used

ToolPurpose
mcp__claude_ai_Blotato__blotato_list_accountsCheck connected platforms — runs in Phase 0
mcp__claude_ai_Blotato__blotato_get_userRetrieve user account details
mcp__claude_ai_Blotato__blotato_list_visual_templatesList available infographic templates
mcp__claude_ai_Blotato__blotato_create_visualGenerate an infographic visual
mcp__claude_ai_Blotato__blotato_get_visual_statusPoll until visual generation is complete or failed
mcp__claude_ai_Blotato__blotato_create_postCreate and schedule a post
mcp__claude_ai_Blotato__blotato_get_post_statusConfirm a post was accepted
mcp__claude_ai_Blotato__blotato_list_schedulesView the full posting schedule
mcp__claude_ai_Blotato__blotato_get_scheduleGet details of a specific scheduled post
mcp__claude_ai_Blotato__blotato_update_scheduleReschedule or update a post
mcp__claude_ai_Blotato__blotato_delete_scheduleRemove a scheduled post

Advanced tools (not used in standard workflow — see Notes for Operators):

  • mcp__claude_ai_Blotato__blotato_create_presigned_upload_url — for uploading your own media files
  • mcp__claude_ai_Blotato__blotato_create_source — for creating a content source
  • mcp__claude_ai_Blotato__blotato_get_source_status — for checking source status

Phase 0 — Blotato Setup Check

This phase runs before anything else, without exception.

Call: mcp__claude_ai_Blotato__blotato_list_accounts

If accounts are returned: Report what's connected:

"Blotato connected. Platforms available: [list account names and platforms]."

If an expected platform is not in the list:

"Note: [platform] is not connected in Blotato. Posts for that platform will be skipped unless you connect it first."

Proceed to Phase 1.

If the call returns an error or an empty result: Stop. Do not proceed to any further phase. Display the following message exactly:

Blotato is not set up.

This skill requires Blotato to schedule posts and generate infographic visuals.
Without it, no scheduling can happen from this skill.

To set up Blotato:
1. Create an account at blotato.com
2. Connect your social accounts (LinkedIn, Threads, X, Instagram, etc.)
3. Add the Blotato MCP server to your Claude Code configuration

All other Social AI Team skills work without Blotato — only /publisher needs it.
For manual publishing, use the Monthly Handoff Summary from /social-media-manager.

Do not ask any further questions. Do not attempt to schedule anything. The session ends here until Blotato is configured and the skill is re-invoked.


Phase 1 — Content Selection

After setup check passes:

  1. Read context/workflow-status.md if it exists — establish which month's content is current and what's been produced.

  2. Ask what to schedule:

What do you want to schedule?

A — Full month: schedule all posts from outputs/ for a specific month B — Specific platform: schedule all posts for one platform (LinkedIn, Threads, X, Instagram) C — Single post: schedule one specific post D — Review existing schedule: view what's already scheduled in Blotato

For option D: Call mcp__claude_ai_Blotato__blotato_list_schedules and present the results. Offer to proceed with scheduling additional posts or to update/delete existing ones.

For options A, B, or C: Scan the relevant output files:

  • outputs/linkedin/[client-name]-linkedin-[month]-[year].md
  • outputs/threads/[client-name]-threads-[month]-[year].md
  • outputs/x/[client-name]-x-[month]-[year].md
  • outputs/captions/[client-name]-captions-[month]-[year].md

Read each file that exists for the selected month and platform(s). Build a complete list of posts to process. Show a summary before proceeding:

"Found [n] posts across [platforms]:

  • LinkedIn: [n] posts
  • Threads: [n] posts
  • X: [n] posts
  • Instagram/other: [n] posts

Proceeding to visual check."


Phase 2 — Visual Check

For each post in the content list, check for the BLOTATO FLAG: field.

If BLOTATO FLAG: Yes — [type]:

State what was flagged and why:

"Post [n] — [Topic] is flagged for a [type] infographic. Generate it? (Y/N)"

If Yes: run the visual generation sub-routine (below). If No: skip the visual. Proceed to scheduling this post without one.

If BLOTATO FLAG: No or no flag field is present: Skip visual generation for that post. Proceed to scheduling.

Do not generate a Blotato visual when:

  • The post has no BLOTATO FLAG: field (e.g. posts from /caption-writer) — these are handled via /social-creative-designer and Nano Banana, not Blotato. Skip infographic generation entirely for caption-writer posts.
  • The post is conversational, opinion-based, or story-led — the platform specialists will have flagged these BLOTATO FLAG: No already
  • The platform convention doesn't support image attachments in the standard post format

Visual Generation Sub-Routine

For each post where visual generation is confirmed:

Step 1 — Get available templates

Call: mcp__claude_ai_Blotato__blotato_list_visual_templates

Review the available templates. Select the one that best matches the flagged graphic type:

  • stat card — a template that prominently features a number or data point
  • framework diagram — a template suited to showing a model, process, or comparison
  • 3-step process — a template for sequential steps or stages
  • quote graphic — a template that puts a line of text centre stage

Step 2 — Build the visual brief

Before calling the visual tool, define:

  • Brand colours: Pull from context/brand-style.md. Use the primary and secondary palette.
  • Main text: The stat, insight, or step(s) to display. Maximum 10-12 words of main text — not a wall of words.
  • One idea per image: If the post has multiple points, choose the single most impactful one for the visual.
  • Readability check: Text must be readable at a glance on a mobile screen.

Step 3 — Generate the visual

Call: mcp__claude_ai_Blotato__blotato_create_visual

Pass: template ID, brand colours, text content, and any other template parameters.

Step 4 — Wait for completion

Call: mcp__claude_ai_Blotato__blotato_get_visual_status

Poll until status returns complete or failed.

  • If complete: attach the visual to the post in the scheduling queue. Note the file or visual ID.
  • If failed: note it. Do not block the session. Proceed to schedule the post without a visual, and flag it clearly in the final summary.

Phase 3 — Schedule Confirmation

Before submitting anything to Blotato, present the full proposed schedule for approval.

This approval gate is non-optional. A scheduling tool that auto-submits without review is a liability. Present every post for confirmation before any are submitted.

For each post, show:

POST [n] — [Platform] — [Proposed date/time]
Caption: [first 80 characters of caption...]
Visual: [visual filename / "none"]
Account: [Blotato account name]

After presenting the full schedule:

"Does this schedule look right? Confirm to submit all posts, or tell me what to adjust."

If the operator wants to adjust timing, content, or account assignment for any post — make the adjustments before confirming. Do not submit any post until the full schedule is approved.


Phase 4 — Scheduling

After approval, submit posts to Blotato one at a time.

For each post:

Call: mcp__claude_ai_Blotato__blotato_create_post

Pass: platform/account, caption, scheduled date/time, visual attachment (if applicable).

Call: mcp__claude_ai_Blotato__blotato_get_post_status

Confirm the post was accepted. Log: success or failure with reason.

After all posts have been processed, produce the Scheduling Summary:

SCHEDULING SUMMARY — [Client Name] — [Month Year]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

SUBMITTED
  Total posts scheduled:    [n]
  LinkedIn:                 [n]
  Threads:                  [n]
  X:                        [n]
  Instagram:                [n]
  Other:                    [n]

VISUALS
  Infographics generated:   [n]
  Posts without visual:     [n]

FAILED / SKIPPED
  [List any posts that failed, with reason]
  [List any platforms that were skipped due to no Blotato connection]

Update context/workflow-status.md — add publishing status to the current month's section:

- [x] Published via Blotato — [n] posts scheduled — [date]

Phase 5 — Post-Schedule Actions

After the summary, offer these management options:

  1. View full schedule — mcp__claude_ai_Blotato__blotato_list_schedules
  2. Update a scheduled post — mcp__claude_ai_Blotato__blotato_get_schedule then mcp__claude_ai_Blotato__blotato_update_schedule
  3. Delete a scheduled post — mcp__claude_ai_Blotato__blotato_delete_schedule
  4. Check a specific post's status — mcp__claude_ai_Blotato__blotato_get_post_status
  5. Schedule additional posts — return to Phase 1

Notes for Operators

  • Phase 0 is a hard stop by design. Calling scheduling tools on a disconnected Blotato account produces confusing errors with no actionable resolution. The hard stop gives a clear message and setup path instead. Do not attempt to work around it.
  • Blotato visuals and Nano Banana visuals serve different purposes. Blotato infographics are for text-forward, structured content — stats, frameworks, process diagrams. Nano Banana is for brand photography, product composites, and stop-motion. If the post needs a creative image, it should have been handled in /social-creative-designer. If it needs an infographic, it's handled here.
  • The BLOTATO FLAG field is the handoff convention. All three platform specialists (/linkedin-writer, /threads-writer, /x-writer) and /caption-writer write this field at the end of every post. The publisher reads it to know which posts need visual generation and what type. The format is: BLOTATO FLAG: Yes — stat card or BLOTATO FLAG: No.
  • The approval gate in Phase 3 is non-optional. Wrong platform, wrong time, wrong account — scheduling mistakes are hard to fix once they go out. The confirmation step exists specifically to catch these before submission.
  • Visual generation can fail. If blotato_get_visual_status returns failed, note it and proceed without a visual rather than blocking the whole session. Flag failed visuals clearly in the summary.
  • blotato_list_visual_templates must succeed before generating visuals. If it returns no templates, skip visual generation for the entire session and note it in the summary. Do not attempt to call blotato_create_visual without a valid template ID.
  • Advanced tools — blotato_create_presigned_upload_url is for uploading your own media files to attach to a post. blotato_create_source and blotato_get_source_status are for creating content sources. These are not used in the standard workflow but are available for operators who need them.

Related Skills

  • /linkedin-writer — produces content for LinkedIn with BLOTATO FLAG fields
  • /threads-writer — produces content for Threads with BLOTATO FLAG fields
  • /x-writer — produces content for X with BLOTATO FLAG fields
  • /caption-writer — produces content for Instagram/Facebook/multi-platform
  • /social-creative-designer — generates brand photography and creatives (Nano Banana, not Blotato)
  • /social-media-manager — orchestrates via Route F (Platform-Specific Content → /publisher)

Frequently asked questions

What does the Publisher AI skill do?

Social Media Publisher. Takes approved content from outputs/ and schedules it across platforms via Blotato MCP. Generates infographic-style visuals (stat cards, framework diagrams, process graphics, quote graphics) for posts flagged by platform-specialist skills. Requires Blotato MCP to be configured. Run after /linkedin-writer, /threads-writer, /x-writer, or /caption-writer.

Why use Publisher on TypingMind?

Because you install it once and use it with any model. Publisher is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Publisher in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/stevenflanagan1/social-ai-team/tree/main/skills/publisher. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Publisher?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Publisher?

As many as you like. As long as a model supports skills, you can use Publisher with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Publisher AI skill free?

It is published on GitHub by stevenflanagan1. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇