Purpose

This SOP walks you through building a Claude agent that repurposes your saved posts to LinkedIn on its own. It opens a Google Sheet of content you have already written, takes the next post it has not used yet, rewrites it for LinkedIn in your voice, schedules it through Buffer, and writes down what it did. Every day, with you nowhere near it.

Who this is for: Founders sitting on a backlog of posts worth reusing, who never actually repurpose them because doing it by hand every day does not happen.

The whole thing runs unattended because of four parts: memory, access, skill and judgment. The rest of this SOP is those four parts, then the prompt that ties them together.

Tools needed:

  • Claude with scheduled tasks (Co-Work), running inside a project
  • A Google Sheet with two tabs, connected to Claude
  • Buffer with your LinkedIn channel connected
  • Slack, connected to Claude
  • A voice skill and a LinkedIn skill (or a handful of rules pasted into the prompt)
01

The Four Parts

Every agent that runs without you is built from the same four things. Name them and the rest of this stops feeling technical.

Memory

The sheet. One tab is what it knows about your content, the other is what it remembers doing. It reads the first, checks the second, and never has to ask you what has been done, because it wrote the answer down itself last time.

Access

The keys. Sheets gives it memory, Buffer gives it the ability to act, Slack gives it a way to reach you. Turn off any one and the agent still runs, it just goes blind, or mute, or cannot act.

Skill

The training. One skill is how you sound, the other is how LinkedIn wants a post structured. Without them it still repurposes, it just sounds like Claude summarising your caption.

Judgment

The decision loop. A fixed sequence it runs the same way every day: find the next post, write it, schedule it, record it. It never improvises. Full loop is in Step 5.

Note

The skills are the reason this agent can publish without you approving each post. They lock the voice and the structure so the output is safe to send every time. Take them out and you would want a human check on every post.

02

Build the Memory

Make a Google Sheet with two tabs. This is the agent's entire memory.

  1. Posts tab. One row per saved post. A column holding the full post text, the caption or script you want reused. A title or ID column helps but is optional.
  2. Used Posts tab. Leave it empty. The agent writes here. Give it three columns: Original Post, Date Used, LinkedIn Version.
  3. Fill the Posts tab with your backlog. Anything you would be happy to see go out again.
  4. Share the sheet so Claude can read and write to it, and copy the link.

The model is simple. It reads the Posts tab top to bottom, skips anything that already appears in Used Posts, and takes the first one left. It never double-posts because it checks its own record before it does anything.

Tip

The starter prompt in Step 6 will create the Used Posts tab for you if it is missing. Build it yourself anyway, so the columns are the shape you want rather than whatever the agent guesses.

03

Connect the Access

Three connections. Each one does exactly one job.

  1. Google Sheets. Claude reads the Posts tab and writes to Used Posts. Connect it and confirm Claude can open your sheet.
  2. Buffer. Claude schedules the finished post. Connect Buffer and check that your LinkedIn channel shows as connected inside it.
  3. Slack. Claude messages you when there is nothing left to post or when something breaks. Connect Slack and decide which channel or DM it should use.
Connection What it gives the agent What breaks without it
Google Sheets Memory Goes blind. It cannot tell what it has already posted, so it repeats itself or freezes.
Buffer The ability to act It can write the post but cannot publish it.
Slack A way to reach you Goes mute. You never hear when it runs dry or fails.
Note

The agent keeps running with any one of these missing. It just loses that one sense. Nothing crashes, which is exactly why a missing connection can go unnoticed for a while.

04

Install the Skills

Two skills. One holds your voice, one holds LinkedIn's structure. Install both into the Claude project the scheduled task runs in.

  1. Your voice skill (in this build, ai-savvy-voice). The words you never use, how you open, paragraph length, what your call to action sounds like. This is the line between your voice and Claude summarising your caption.
  2. Your LinkedIn skill (in this build, aisavvy-linkedin). How a LinkedIn post is built: the hook line, the line breaks and whitespace, the length, where the link goes. This is how the output reads native rather than pasted.
Tip

No voice skill yet? Paste 5 to 10 core rules straight into the prompt as a fallback. It works, it is just less consistent run to run. Building a proper one is covered in the Create a voice skill SOP.

Important

These two skills are why the agent can publish without approval. They are the quality bar. If you skip them, add an approval step to the loop and check every post before it goes out.

05

The Decision Loop

This is the sequence it runs the same way every day. It does not improvise around it.

  1. Open the sheet. Find the first row in the Posts tab that is not in Used Posts.
  2. Nothing left? Send a Slack message and stop. Found one? Continue.
  3. Take that post, load the two skills, write the LinkedIn version.
  4. Schedule it to Buffer for 8pm Dubai time, today.
  5. Did Buffer confirm it is scheduled? No: stop, and leave the row untouched so tomorrow's run retries it. Yes: write the row into Used Posts with the date and the LinkedIn version.
  6. Run again tomorrow at the same time.
Important

Step 5 is the safety catch. A post is only recorded as used after Buffer confirms. If scheduling fails, the row stays exactly where it was and the next run picks it up again. Nothing gets silently dropped.

06

The Prompt

Start with the simple version. Paste it into a scheduled task in Claude and fill in your sheet link.

Starter prompt
Open my content sheet: [paste your Google Sheet link]

The Posts tab has all my saved posts. The Used Posts tab is where you keep
track of every post you've already repurposed. If the Used Posts tab doesn't
exist yet, create it.

1. Find the first post in the Posts tab that isn't already in Used Posts.
   Never use the same post twice.
2. If every post has already been used, send me a Slack message saying there
   are no new posts to repurpose, and stop there.
3. Rewrite the post for LinkedIn using my voice skill and my LinkedIn
   repurposing skill.
4. Schedule it in Buffer to my LinkedIn channel for 8pm Dubai time today.
5. Once Buffer confirms it's scheduled, add the original post to the Used
   Posts tab with today's date and the LinkedIn version you wrote.

Once that has run clean a few times, tighten it into the production version. Same six steps, plus the rules that matter when nobody is watching the run.

Production prompt
You are running my daily LinkedIn repurposing routine. Run it end to end,
on your own.

RULE ZERO
Nobody is watching this run. Never ask a question, never wait for approval,
never stop because something is missing. If a step has a fallback, take it.

1. OPEN THE MEMORY
Open my content sheet: [paste your Google Sheet link]
The Posts tab is my backlog. The Used Posts tab is your record of everything
already repurposed. If Used Posts does not exist, create it with columns:
Original Post, Date Used, LinkedIn Version.

2. PICK ONE POST
Read the Posts tab top to bottom. Take the first post that does not already
appear in Used Posts. Never repurpose the same post twice.
Process exactly one post per run.
If every post has already been used, send me a Slack message saying there
are no new posts to repurpose, and stop.

3. WRITE THE LINKEDIN VERSION
Load my voice skill and my LinkedIn skill. Rewrite the post as a LinkedIn
post using both.
Never invent numbers, client results, testimonials, or dates. Use only what
is in the original. If a detail is missing, cut the claim.
Return only the finished post. No alternate hooks, no commentary, no labels.

4. SCHEDULE IT
Schedule the post in Buffer to my LinkedIn channel for 8pm Dubai time today.
If 8pm Dubai has already passed, use 8pm tomorrow.
Wait for Buffer to confirm it is scheduled.

5. RECORD IT
Only after Buffer confirms: add a row to Used Posts with the original post,
today's date, and the LinkedIn version you wrote.
If Buffer did not confirm, do not touch Used Posts. Leave the row so the
next run picks it up again.

6. REPORT
Tell me which post you used and the Buffer confirmation, or that there was
nothing to post.

Everything you need to fill in:

Placeholder What to put here Example
[paste your Google Sheet link] The share link to your two-tab content sheet docs.google.com/spreadsheets/d/...
my voice skill Your voice skill's name, or 5 to 10 rules inline ai-savvy-voice
my LinkedIn skill Your LinkedIn structure skill's name aisavvy-linkedin
8pm Dubai time Your daily publish slot 8:00 PM GST
07

Schedule and Test

Set the task to run once a day, then run it once yourself before you walk away.

  1. Schedule the task for a time comfortably before your publish slot, for example every day at 7:00 PM Dubai so the 8pm slot is always still ahead.
  2. Run it manually once, now. This first run is where you approve the permissions it needs for Sheets, Buffer, and Slack.
  3. Watch the output. Confirm it picked the right post, it sounds like you, the LinkedIn structure is right, and it went to the correct channel.
  4. Open Buffer and check the post is queued for 8pm.
  5. Open the sheet and check the row was written into Used Posts.
Warning

Skip the manual run and the first scheduled run stalls on a permission prompt with nobody there to click it. Approve permissions first, every time you add a new connection.

Troubleshooting

None of these throw an error. They just hand you a worse result than you think you are getting.

Symptom Cause Fix
It says there is nothing to repurpose while the Posts tab is full It is matching posts on the wrong thing, or Used Posts has rows that should not be there. Decide what identifies a post, the full text or an ID column, and make sure both tabs use the same one. Clear any junk rows from Used Posts.
The same post goes out twice The row never made it into Used Posts. Buffer confirmed but the write was skipped, or the run failed after scheduling. Confirm the prompt only records after Buffer confirms, and that it appends a row rather than overwriting.
The post reads generic, like a summary of your caption The skills are not loading. They are not installed in the project the task runs in, or not referenced in the prompt. Install both skills into that project and name them in the prompt. As a stopgap, paste your core voice rules inline.
Posts go out with alternate hooks or working notes attached The rewrite step returned its reasoning alongside the finished post. Add: "Return only the finished post. No alternate hooks, no commentary, no labels."
The run stops and asks you a question A skill or step expects an answer that made sense in a chat window but not on a schedule. Add Rule Zero: "Never ask a question, never wait for approval. If a step has a fallback, take it."
Buffer says scheduled but nothing posts at 8pm The LinkedIn channel is disconnected inside Buffer, or 8pm Dubai had already passed when the task ran. Reconnect the channel in Buffer. Move the scheduled task earlier so the slot is always ahead.

Frequently Asked Questions

Claude with scheduled tasks, a Google Sheet with a Posts tab and a Used Posts tab, Buffer with your LinkedIn channel connected, Slack, and two skills: one for your voice and one for LinkedIn structure. If you do not have the skills yet, a handful of rules pasted into the prompt works as a fallback.
The sheet is the agent's memory. One tab it reads, one tab it writes. Before every post it checks what it has already done, which is how it never repeats itself and never has to ask you what has been published.
It keeps running but loses that one ability. Without Sheets it is blind and cannot track what it has done. Without Buffer it can write the post but not publish it. Without Slack it cannot tell you when it runs out of posts or hits a problem.
Yes, and that is the point of the two skills. They lock the voice and the structure so the output is publishable every run. Without them you would want to check each post, which defeats the purpose of automating it.
Yes. Anything Claude can connect to that holds your LinkedIn account works. Buffer is just the tool in this build. Swap the scheduling step for your tool's equivalent.
Yes. Add a skill for the new platform's structure, connect its channel in Buffer, and give the loop a rewrite and a tracking column for it. Each platform gets its own version and its own record.
It sends the Slack message from step 2 and stops without posting anything. Add more rows to the Posts tab and the next scheduled run picks up where it left off.