# Use Claude or ChatGPT to Write and Publish Social Media Posts

You want to describe a post in plain English -- "write a LinkedIn post about the top 3 AI trends this week and publish it to my account" -- and have it happen. No copying text from ChatGPT into a scheduling tool. No downloading images and re-uploading them. No switching between five browser tabs.

This is the fastest-growing category of automation question across [n8n](https://community.n8n.io), [Make.com](https://community.make.com), and [Claude](https://community.anthropic.com) communities. Users are connecting LLM nodes (OpenAI, Claude, Gemini) to publishing APIs, building AI agents with MCP tools, and packaging reusable Claude Code skills for social media management. The common thread: everyone wants an AI that writes the content AND publishes it, end-to-end.

Here are three ways to set this up, from simplest to most automated.

## Option 1: Claude Desktop or Claude.ai with Blotato MCP

The [Blotato MCP Server](/api/mcp.md) connects Claude to your social media accounts through the Model Context Protocol. You type natural language commands. Claude calls the Blotato API to create visuals, write posts, and publish them.

### Setup

1. Connect your social accounts in [Blotato Settings](https://my.blotato.com/settings).
2. Add the Blotato MCP server to Claude Desktop or Claude.ai (see [Setup Guide](/api/mcp/setup.md)).
3. Start giving commands.

### Example prompts

**Research and publish:**

> Research the top 3 AI trends this week. Write a LinkedIn post summarizing the findings. Generate a carousel image. Publish to my LinkedIn account and schedule to my next free slot.

**Repurpose content:**

> Take this YouTube video \[URL] and turn it into 5 platform-specific posts: a Twitter thread, a LinkedIn post, an Instagram carousel caption, a TikTok caption, and a Threads post. Publish all of them.

**Daily content:**

> Read my latest blog post at \[URL]. Extract the key takeaways. Write a post for each of my connected platforms. Schedule each post to the next free slot in my content calendar.

Claude handles every step: researching, writing, generating visuals, and publishing. Each step maps to a Blotato API call that Claude makes through the MCP server.

For more example prompts, see: [MCP Example Prompts](/api/mcp/examples.md)

## Option 2: n8n or Make.com with an LLM node

This approach uses a traditional automation workflow with an LLM node for content generation and Blotato nodes for publishing. The workflow runs on a schedule without any manual input.

### How it works

1. A trigger fires (daily schedule, RSS feed, Google Sheets update).
2. An LLM node (OpenAI, Claude, or Gemini) generates post text based on a prompt you define.
3. A Blotato Create Visual node generates an image or video.
4. Blotato Publish Post nodes send the content to each platform.

### Step-by-step: n8n workflow

1. Install the [Blotato community node](https://help.blotato.com/api/n8n/n8n-blotato-node) in n8n.
2. Add a **Schedule Trigger** node. Set it to run daily.
3. Add an **OpenAI** node (or Claude, Gemini, etc.). Set the prompt to generate a social media post about a topic. Example system prompt: "You are a social media content writer. Write a short post about \[topic]. Write for LinkedIn (professional tone, 3-5 short paragraphs). End with a question to drive engagement."
4. Add a Blotato **Create Visual** node. Select a carousel or image template. Pass the LLM output into the `prompt` field so the visual matches the post content.
5. Add a Blotato **Get Visual Status** node. Poll until status is `done`.
6. Add Blotato **Publish Post** nodes for each platform. Pass the LLM-generated text into the `text` field and the visual URL into `mediaUrls`.
7. Set `useNextFreeSlot: true` on each Publish node to schedule posts across your content calendar.
8. Activate the workflow.

### Step-by-step: Make.com scenario

1. Add a **Schedule** trigger module (daily or weekly).
2. Add an **OpenAI** module (or Claude/Anthropic module). Configure your prompt to generate post text.
3. Add an HTTP module to call `POST https://backend.blotato.com/v2/videos/from-templates` with a template ID and the LLM output as the `prompt`. Set `inputs` to `{}`.
4. Add a polling loop (Repeater + HTTP GET) to check visual status until `done`.
5. Add a Router module, then one HTTP module per platform calling `POST https://backend.blotato.com/v2/posts`. Pass the LLM text and visual URL.
6. Activate the scenario.

## Option 3: Claude Code with Blotato skills

Claude Code runs in your terminal and connects to Blotato through the MCP server or direct API calls. You create reusable "skills" -- markdown files that define repeatable workflows.

### Example: a `/post` skill

Create a skill file that Claude Code executes when you type `/post`:

1. Ask what you want to post about.
2. Research the topic using Blotato's [Create Source](/api/create-source.md) endpoint with `sourceType: "perplexity-query"`.
3. Write platform-specific posts for each connected account.
4. Generate a visual using the [Create Visual](/api/create-video.md) endpoint.
5. Publish to all platforms using the [Publish Post](/api/publish-post.md) endpoint with `useNextFreeSlot: true`.

For a full tutorial on building Claude Code skills for social media, see: [Claude Code Integration](/api/claude-code.md)

## Choosing between the three options

| Approach                        | When to use                                                                                            | Runs automatically                 |
| ------------------------------- | ------------------------------------------------------------------------------------------------------ | ---------------------------------- |
| Claude + MCP (Option 1)         | You want to interact with the AI conversationally. You review and approve each post before publishing. | No -- you initiate each session.   |
| n8n / Make.com + LLM (Option 2) | You want a fully automated pipeline that runs on a schedule. Posts publish without your involvement.   | Yes -- runs on a timer or trigger. |
| Claude Code + Skills (Option 3) | You want reusable commands in your terminal. You type `/post` and the AI handles the rest.             | No -- you initiate each command.   |

All three approaches use the same Blotato API under the hood. The difference is how you trigger the workflow and whether a human reviews the output before publishing.

## Adding a human review step

If you want to review AI-generated content before it goes live:

1. Set `isDraft: true` when creating visuals. Review and edit them in the [Blotato dashboard](https://my.blotato.com) before publishing.
2. Use `useNextFreeSlot: true` when publishing. This schedules the post for a future time slot, giving you time to review in the dashboard before it goes live.
3. In n8n or Make, add a Slack/email notification step before publishing. Send the generated content for approval. Use a webhook to receive the approval signal and trigger the publish step.

## Writing prompts that produce platform-specific content

The LLM prompt determines the quality of the output. Generic prompts produce generic posts. Here is a structure that works across platforms:

```
Write a {platform} post about {topic}.

Tone: {professional/casual/educational}
Length: {character limit for the platform}
Format: {paragraph/bullet points/numbered list}
End with: {a question/a CTA/a bold statement}

Context: {paste relevant source material, data points, or talking points}
```

For automated workflows, store the prompt template in your n8n/Make workflow and inject the topic dynamically from an RSS feed, Google Sheet, or Blotato Source extraction.

Use the [Create Source](/api/create-source.md) endpoint with `sourceType: "text"` and `customInstructions` to rewrite one post for multiple platforms:

```json
{
  "source": {
    "sourceType": "text",
    "text": "Your original post text here"
  },
  "customInstructions": "Rewrite this for Twitter. Keep it under 280 characters. Make the first line a hook."
}
```

Run this for each platform with different instructions. This replaces having separate LLM calls per platform.

## Forum threads referenced

These are the community discussions that prompted this post:

* [AI-Generated Social Media Posts from Google Drive to Canva](https://community.n8n.io/t/ai-generated-social-media-posts-from-google-drive-canva-best-practice/237310) (n8n)
* [Free Workflow: AI Content Repurposing -- 1 Blog Post to 4 Platforms](https://community.n8n.io/t/free-workflow-ai-content-repurposing-1-blog-post-4-platforms-twitter-linkedin-instagram-facebook/282971) (n8n)
* [I Automated Instagram Carousel Creation with n8n: One Telegram Message In, 6 Slides Out](https://community.n8n.io/t/i-automated-instagram-carousel-creation-with-n8n-one-telegram-message-in-6-finished-slides-out/278336) (n8n)
* [100% AI Powered Automated Social Media System](https://community.make.com/t/100-ai-powered-automated-social-media-system-step-by-step-tutorial/41202) (Make)
* [How To Automate Social Media Content Repurposing with Airtable, Dumpling AI, Claude AI and Make.com](https://community.make.com/t/how-to-automate-social-media-content-repurposing-with-airtable-dumpling-ai-claude-ai-and-make-com/66439) (Make)
* [AI Social Media System Posts to 9 Platforms](https://community.make.com/t/ai-social-media-system-posts-to-9-platforms/76840) (Make)
* [I Automated My Content Pipeline with Claude Code](https://dev.to/igorgridel/i-automated-my-content-pipeline-with-claude-code-heres-everything-1a58) (DEV Community)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.blotato.com/blog/use-ai-write-publish-social-media-posts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
