How to Run a Content Calendar With
Grok Bot: It Queues Your Posts, You Press Post
75 min, plus two supervised weeks
Before this: How to Build a Grok Bot That Turns Your Blog or Videos Into a Week of Social Posts
Next: How to Build an AI Team With Grok Bot: a Chief of Staff and 3 Specialist Bots
A month of posts planned in one Google Sheet. The Bot drafts each post, tracks what's approved, and at post time pings you with the final text, image and a link to the platform. You press Post.
Checked October 17, 2026. Researched and drafted with help from
Grok Bot, one of the agents covered.
Why build this
In I4 you turned one piece of content into a batch of social post drafts. That's the writing. The hard part is everything around it: deciding what goes out when, keeping track of what's approved, and remembering to actually post.
This build turns a Google Sheet into your content calendar. The Bot fills it with a month of ideas, drafts each post, and moves each one from Idea → Draft → Approved → Posted. At post time it hands you a ready-to-go post. You publish it yourself.
Why it's Advanced: it runs for weeks, keeps state in a Sheet, juggles several platforms and a calendar, and touches public posts under your name. A wrong post is public and permanent. That's why the Bot queues and you press Post.
What you'll build
ONCE A MONTH (you + Bot)
Plan: themes, dates, platforms -> rows in the "Content" Sheet (Status: Idea)
EVERY MONDAY 9:00 AM (routine)
Draft this week's posts from Idea rows -> Status: Draft
Ping you: "5 drafts ready for review"
YOU (any time)
Review in chat or in the Sheet -> "approve C-012, C-013" -> Status: Approved
AT EACH POST TIME (routine)
Ping you: final text + image link + platform link
YOU
Open the platform -> paste -> press Post -> reply "posted C-012"
Bot sets Status: Posted, adds the date and link
Who it's for
- Small-business owners posting on 2–4 platforms.
- Creators who batch content but forget to post.
- Marketing teams of one.
- You've built I4: Social posts from your content and you like the drafts it writes.
What you'll need
Grok Bot on The X Subscription Premium ($30/month) or higher, or a paid Cursor plan, or a linked older SuperGrok subscription.
Grok Bot isn't included in the Free or Plus plans. (Plans checked Oct 17, 2026.)- Your Social Drafts Bot and its skill from I4.
- Google Sheets and Google Drive plugins.
- Your platforms (for example LinkedIn, Instagram, Facebook, TikTok, Threads, Bluesky) and how often you want to post on each.
- Optional: Slack, if someone else approves posts.
What you'll get
- The Content Sheet layout, with status columns.
- A monthly planning prompt.
- The Monday drafting routine and the post-time ping routine.
- How to approve in one line.
- An optional "open the composer" helper, where the Bot pastes the post and stops before Post.
- Platform notes: lengths, image sizes and what to check.
- Troubleshooting and 3 variations.
Time
About 75 minutes, then two supervised weeks.
At a glance
| Item | Details |
|---|---|
| Apps | Google Sheets (queue) · Google Drive (images) · Slack (optional) · your social platforms (you post) |
| Plan | |
| Risk level | Medium: public posts under your name. Mitigated: the Bot never presses Post |
| Prerequisite | I4: Social posts from your content |
Quick questions
Will it post for me? No. It queues, drafts and reminds. At post time it gives you the final post and a link. You press Post.
Why not let it post automatically? Posts are public and permanent, and they're under your name. Some sites also block cloud computers. And
Grok Bot's help pages don't document any plugin that posts to social platforms, so this guide doesn't rely on posting.
Can it make the images? It can draft image ideas and alt text. Make images with
Grok Imagine,
Gemini or your design tool, then drop them in a Drive folder. The Bot links them in the Sheet.
Do I need a paid scheduling tool? No. If you already use one, see the "scheduler" variation: the Bot makes a file in your scheduler's import format, and you upload it.
Can my team approve posts? Yes. Use the Slack variation, or share the Sheet and have them set Status to Approved.
Before you start: 10-minute safety setup
- Ask first rules. Open Settings → General → Auto-review and make sure these exist:
Ask first before posting, publishing, or submitting anything on any website or social platform.Ask first before deleting rows or clearing cells in Google Sheets.Ask first before posting any Slack message.
- Allow once only for anything public.
- Local computer off. Settings → General → Bot → Execution on Local Computer → Never allow.
- Time zone. Settings → General → Bot → Timezone. Post times depend on it.
- Notifications on for this Bot, so post-time pings reach your phone.
Step 1: Make the Content Sheet
Create a Google Sheet named Content Calendar with a tab Content and these columns:
| Column | Name | Example |
|---|---|---|
| A | ID | C-012 |
| B | Post date | 2026-11-04 |
| C | Post time | 11:30 |
| D | Platform | |
| E | Theme | Customer story |
| F | Status | Idea / Draft / Approved / Posted / Skipped |
| G | Draft text | (Bot fills) |
| H | Image link | Drive link |
| I | Alt text | (Bot fills) |
| J | Posted link | (you or Bot fills after posting) |
| K | Notes | "Mention the Nov sale" |
Make a Drive folder Content Images and name images by ID (C-012.png).
Step 2: Set up the Bot
Open your Social Drafts Bot (from I4), or make a new one called Content Desk. Add to the description:
Job: Run my content calendar in the Google Sheet "Content Calendar", tab "Content".
Voice: [paste your voice notes from I4]
Platforms and rhythm: [LinkedIn Tue/Thu 11:30; Instagram Mon/Wed/Fri 18:00; Facebook Wed 12:00]
Standing rules:
- Never post, publish or submit anything on any platform. I press Post.
- You may add rows and fill Draft text, Alt text and Status. Never delete rows or change rows marked Posted.
- Status only moves forward: Idea -> Draft -> Approved -> Posted (or Skipped). Only I move a post to Approved.
- Before every post-time ping, re-read the row. If it isn't Approved, don't ping; tell me it's waiting.
- Follow each platform's length limit. Mark anything time-sensitive (sales, dates) in Notes and re-check it before the ping.
- Never invent facts, prices, quotes or customer names. Use [CHECK] if unsure.
Step 3: Connect the apps
Connect apps → check Google Sheets (read and edit cells) and Google Drive (search and read) are installed and signed in. Add Slack if a teammate approves posts.
Step 4: Plan the month (by hand, once a month)
Plan next month's content in the Content sheet.
Inputs: my platforms and rhythm, these themes [list], these dates [launches, holidays, sales], and these source pieces [links to blog posts, videos, newsletters].
Add one row per post with ID, date, time, platform, theme, Notes. Status: Idea.
Spread themes evenly. No two posts on the same platform with the same theme in one week.
Show me the plan as a table before adding rows.
Check the table. Say add them. Sheets edits are allowed (adding rows isn't deleting), but your Ask first rule still protects clearing and deleting.
Step 5: The Monday drafting routine
First test by hand:
For every Idea row with a post date in the next 7 days:
- write the draft in my voice for that platform (use my I4 skill)
- add alt text if there's an image link
- set Status to Draft
Then list them here: ID, platform, date, time, the draft.
Then save and schedule:
Save a skill called "Draft this week's posts" from what you just did.
Every Monday at 9:00 AM my time, run it and notify me: "[N] drafts ready for review."
If there are no Idea rows for the week, say so.
Step 6: Approve in one line
When drafts are ready, in chat:
approve C-012, C-013, C-015. C-014: make it shorter and drop the hashtag. Skip C-016.
The Bot sets Status to Approved or Skipped, redrafts C-014 and shows it again.
Step 7: The post-time ping
Create a routine that runs every 30 minutes, weekdays and weekends, 7:00 AM to 9:00 PM my time.
On each run: find rows with Status Approved whose post date and time are within the next 30 minutes.
For each one, post here and notify me:
"Time to post C-012 on LinkedIn (11:30):
[final text]
Image: [Drive link] | Alt text: [alt text]
Open: [platform's post page link]
Reply 'posted C-012 [link]' when it's live."
Never post anything yourself. If nothing is due, don't post a message.
When you reply posted C-012 https://…, the Bot sets Status to Posted and fills Posted link.
Usage tip: every run spends usage, even when nothing is due. If your rhythm is fixed, use exact times instead: Every Tuesday and Thursday at 11:25 AM (keep routines at least 5 minutes apart). Check Settings → Usage & Billing after the first week.
Optional: the "open the composer" helper
Some people want one less step. The Bot can open the platform in its own cloud browser, paste the post and stop.
- In chat:
Open LinkedIn in your browser so I can sign in.Then use Take over to sign in yourself. The Bot never sees your password. - At post time:
Open LinkedIn's post composer, paste C-012's text and attach the image. Stop before Post and show me a screenshot. - Check the screenshot. Then take over and press Post yourself.
Know the risks:
- Some sites block cloud computers. If a platform blocks it, skip this helper.
- A signed-in browser on the Bot's computer is shared by all your Bots. Sign out when you're done, or keep this helper to one Bot.
- Your Ask first rule for posting stays on. Never choose Always allow for posting.
Your supervised two weeks
- No post went live without you.
- Statuses moved forward only; no Posted row changed.
- Pings arrived on time, in your time zone.
- Each draft fit its platform (length, links, hashtags).
- Dates and prices in posts were still true at post time.
Make it yours: 3 variations
Already use a scheduler (Buffer, Later, Hootsuite, Meta Business Suite):
Each Monday, export Approved rows for next week as a CSV in the format my scheduler imports: [paste its column names]. Save it in /workspace/content/ and send me the file.
You upload the CSV yourself. Each scheduler's import format changes; check its help page.
Team approval in Slack:
After drafting, prepare a Slack message for #content with each draft and its ID. Show it to me first; I'll approve the post.
Teammates reply "approve C-012", and you pass that to the Bot.
Repurpose engine: add a column "Source link". Monthly: For each new blog post or video this month, add 4 Idea rows (one per platform) linked to it.
Safety settings recap
| Setting | Where | Choose |
|---|---|---|
| Ask first: posting anywhere | Settings → General → Auto-review | Ask first before posting, publishing, or submitting anything on any website or social platform. |
| Ask first: Sheet deletes | Settings → General → Auto-review | Ask first before deleting rows or clearing cells in Google Sheets. |
| Ask first: Slack | Settings → General → Auto-review | Ask first before posting any Slack message. |
| Logins | Take over | You type passwords; sign out after |
| Local computer | Settings → General → Bot | Never allow |
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
| Ping for a post you didn't approve | Status rule ignored | Only ping for rows where Status is exactly "Approved". |
| Pings at the wrong time | Time zone | Check Settings → General → Bot → Timezone; times in the Sheet are in that zone |
| Usage drops fast | 30-minute checks all day | Use exact post times instead |
| Composer helper blocked | Site blocks cloud computers | Skip the helper; post from your phone |
| Drafts too long for a platform | Missing limit | Add each platform's limit to the description |
| Posted rows changed | Loose edit rule | Add: Never edit any column on a Posted row. |
Same job in other agents
Gemini Spark (now "Task" in
Gemini): can work in Google Sheets and Docs and run weekly schedules, so the Sheet queue and Monday drafts work. Gaps: Google AI Pro or Ultra; personal Google account; not in the EEA, UK, Switzerland or Nigeria. Posting to social platforms is not verified.
Dots (OpenAI): OpenAI's examples include drafting social posts. Set custom rules to Ask before taking action. Gaps:
ChatGPT Pro or Business Premium; posting to social platforms is not verified.
Muse (Meta): a natural fit for Instagram and Facebook drafts. Gaps: reported US and Canada only; direct posting from Muse is not verified.
Hermes Agent: xlsx skill for the queue; can message you at post time. Gaps: command-line setup; runs only while its computer is on.
Next step
Make this Bot your team's content specialist:
A3: Build an AI Team With Grok Bot.
Get the free safety checklist
7 rules for letting an agent act for you, plus a note when prices or features change. We re-check every month. Read the 7 rules.