Module 01 · Building Your Content Engine
Setting Up an AI Content Calendar in Sheets and ChatGPT
Open lesson + course map
On this lesson
Course outline
Module 1 · Building Your Content Engine
Module 2 · Trend Analysis
Module 3 · Content Production With AI
Module 4 · Platform-Specific Growth Tactics
An AI content calendar is a publishing queue with clear decisions attached. Google Sheets stores the plan; ChatGPT proposes topics and hooks from your niche promise. Neither tool decides what deserves publication.
By the end, you will have an eight-column Sheet, a human approval gate, and a filled 14-day sample calendar that separates ideas from approved work.
// concept
Build the Eight-Column Sheet
Create a blank Google Sheet and put these headers in row 1, in this exact order:
| Column | Header | What belongs there |
|---|---|---|
| A | Date | Publish or production date: YYYY-MM-DD |
| B | Platform | Instagram, TikTok, LinkedIn, YouTube, or Internal |
| C | Format | Reel, carousel, text, Short, production, or review |
| D | Topic | The useful subject, not “tips” |
| E | Hook | The exact opening line |
| F | Status | Idea, Needs Review, Approved, In Production, Scheduled, Published, or Rejected |
| G | Link | Real URL after publication |
| H | Result | One consistent observation after review |
Select F2:F100, then use Data > Data validation > Add rule and add the seven statuses. Google also documents Insert > Dropdown. Check its current help page if your interface differs. Freeze row 1 and wrap text. Keep Link blank until a real URL exists. Choose one result format, such as 48h: saves __; replies __; 48 hours is your comparison rule, not a claim about platform distribution.
Place two queue counters above or beside the table. These formulas assume the 14-day plan occupies rows 2 to 15:
=COUNTIF(F2:F15,"Published")
=COUNTIF(F2:F15,"Approved")+COUNTIF(F2:F15,"In Production")+COUNTIF(F2:F15,"Scheduled")Label them Published count and Approved pipeline; they are not growth scores.
// concept
Make Approval a Human-Only Status
Every ChatGPT suggestion enters as Needs Review. Only a person changes it to Approved; that is the gate before filming or design begins.
Generate 20 candidates, then reject 6 to 10: a deliberate 30–50% curation pass for this exercise, not an industry benchmark. Reject a row when any answer is “no”:
- Does the idea directly serve the niche promise?
- Can you support any factual claim with information you already have or can verify?
- Is the hook meaningfully different from other hooks in these two weeks?
- Can you produce it with the available people, footage, and time?
- Does it avoid engagement bait, false urgency, and unproved results?
- Does its English, Urdu, or Roman Urdu fit the audience?
Keep weak rows as Rejected so next week’s prompt can avoid them. Move approved work through In Production and Scheduled; use Published only after checking the URL. ChatGPT never approves or reports results.
// concept
Batch Ideas with a Weekly ChatGPT Prompt
First write a niche promise naming the audience, problem, and help: “For busy Karachi office workers, show homemade lunch options, clear ordering steps, and preparation.” Never paste names, phone numbers, addresses, orders, CNIC data, or private messages into ChatGPT.
Use this weekly planning prompt and replace the bracketed fields:
You are helping me propose candidates for a 14-day social content calendar.
NICHE PROMISE:
[one sentence naming the audience, problem, and useful content]
CONTENT PILLARS:
1. [pillar]
2. [pillar]
3. [pillar]
PRIMARY PLATFORM: [platform]
SECONDARY PLATFORM: [platform]
AVAILABLE ASSETS: [for example: phone camera, product photos, 2 hours on Sunday]
LANGUAGE MIX: [English / Urdu / Roman Urdu and where each is used]
RECENTLY COVERED: [topics or hooks not to repeat]
SEASONAL SLOT: [verified event/date, or "none"]
Generate 20 candidates. Return only:
ID | Platform | Format | Topic | Exact hook | Evidence or asset needed
Rules:
- Tie every candidate to the niche promise and one pillar.
- Do not invent trends, customer quotes, discounts, results, or event dates.
- Mark any claim that requires checking as VERIFY.
- Include four low-production ideas for a difficult week.
- Vary the hook mechanism; do not repeat the same numbered-list opening.
- These are proposals for human review, not approved posts.Copy accepted candidates into Sheets, add dates, set Needs Review, and leave Link and Result blank. The workflow needs ordinary text output; check the current official page if your plan or interface differs.
On Android, make the Sheet available offline. Use one connected session to run the prompt and paste accepted rows; update hooks and statuses offline during load-shedding, then reconnect before sharing. Use split screen if available, or transfer accepted ideas from a plain-text note.
// worked_example
Worked Example
This hypothetical sample is for an unnamed Karachi home kitchen. Its promise is: “Help office workers choose lunch by showing the menu, ordering steps, and preparation without health claims.” Instagram is primary; TikTok receives selected videos.
The editor supplied:
CONTENT PILLARS: menu clarity; ordering help; preparation process
AVAILABLE ASSETS: phone camera, menu cards, kitchen B-roll, 2 hours on Sunday
LANGUAGE MIX: simple English captions; natural Roman Urdu in spoken clips
RECENTLY COVERED: generic "Monday motivation" and discount posts
SEASONAL SLOT: noneDraft one included this candidate:
07 | Instagram | Reel | Healthy lunch | The healthiest lunch in Karachi is here | customer resultsIt failed: “healthiest” is unsupported, the topic is broad, and no customer results exist. The editor replaced it with a filmable detail:
07 | Instagram | Reel | How one lunch box is packed | Rice, curry, salad: here is how we keep each part separate | packing B-rollAfter rejecting similar candidates, the editor built this 14-day sample. Internal rows protect production and review time.
| Date | Platform | Format | Topic | Hook | Status | Link | Result |
|---|---|---|---|---|---|---|---|
| 2026-08-03 | Carousel | Weekly menu | Sample: “Five weekdays, one clear menu.” | Approved | — | — | |
| 2026-08-04 | TikTok | Short | Packing | Sample: “See how each part stays separate.” | In Production | — | — |
| 2026-08-05 | Internal | Production | Film B-roll | Sample: “Capture hands, labels, lids; no faces.” | Approved | — | — |
| 2026-08-06 | Reel | Ordering | Sample: “Kal ka lunch chahiye? Process yeh hai.” | Needs Review | — | — | |
| 2026-08-07 | Story | Menu question | Sample: “Which detail should we explain?” | Approved | — | — | |
| 2026-08-08 | Internal | Review | Check assets | Sample: “Remove clips showing order slips.” | Approved | — | — |
| 2026-08-09 | TikTok | Short | Portion view | Sample: “The box, viewed directly above.” | Needs Review | — | — |
| 2026-08-10 | Carousel | First order | Sample: “New here? Save these three steps.” | Approved | — | — | |
| 2026-08-11 | Reel | Label routine | Sample: “These labels get checked before packing.” | Needs Review | — | — | |
| 2026-08-12 | Internal | Production | Menu photos | Sample: “Shoot one menu and three close-ups.” | Approved | — | — |
| 2026-08-13 | TikTok | Short | Packing | Sample: “Packed in 20 seconds.” | Rejected | — | — |
| 2026-08-14 | Carousel | Delivery area | Sample: “Check your area before ordering.” | Needs Review | — | — | |
| 2026-08-15 | Story | Menu choice | Sample: “Daal or chicken: what should we explain?” | Needs Review | — | — | |
| 2026-08-16 | Internal | Review | Record results | Sample: “Enter chosen metrics; leave gaps blank.” | Approved | — | — |
August 13 is Rejected: “20 seconds” could imply packing time, not video length. Replace it with “Watch one box go from empty to sealed” and return it to Needs Review.
// failure_cases
Failure Cases to Diagnose
7 cases to diagnose
Every row says `Idea`
add the status dropdown and review before production.
The Sheet contains topics but no opening lines
“menu,” “career advice,” or “new product” cannot be filmed as written. Require an exact hook in column E.
One hook shape repeats
add it to
RECENTLY COVEREDand reject near-copies.Pasted rows become `Approved`
paste as
Needs Review; a person checks evidence and capacity.Links appear before publication
placeholders can be mistaken for live proof. Keep column G blank until the post resolves publicly.
Results mix unlike measures
choose one result format per platform; record
N/Awhen unavailable.Seasonal ideas use guessed dates
remove the date and keep a
Seasonal slotplaceholder until an official calendar or announcement confirms timing.
// pakistan_angle
Pakistan Angle
Ramzan and Eid can change production capacity, but never ask ChatGPT to guess lunar dates. Add Ramzan week 1 or Eid ordering cutoff, then attach the date after the relevant Pakistan announcement and your business schedule are confirmed.
On unreliable mobile data, batch ChatGPT work once and use Sheets offline. Never paste WhatsApp exports, phone numbers, easypaisa or JazzCash receipts, CNIC images, or delivery addresses. Use a non-identifying order code only when necessary.
Plan Roman Urdu only where it fits, and read the hook aloud: Kal ka lunch chahiye? Process yeh hai. Treat times around load-shedding, Maghrib, or Isha as hypotheses to test in current account analytics, not universal rules.
// hands_on
Hands-On Exercise
7 steps
Build your own two-week calendar:
Create the eight headers and seven-value status dropdown.
Add both
COUNTIFqueue formulas.Write your niche promise, three pillars, platforms, assets, and language mix.
Generate 20 candidates; use a verified seasonal slot or
none.Reject 6–10 and paste survivors as
Needs Review.Cover 14 dates, including production/review blocks; approve only feasible rows.
Make the Sheet offline and change a status without a connection. Done means 14 dates are covered, every post has a hook, AI rows passed review, and links/results await real evidence.
// completion_rubric
Completion Rubric
6 checks — tick as you verify
// sources
Sources
// check_yourself
Check yourself
4 questions · answers and options are taken word-for-word from this course
1 / 4 · diagnose
Your work shows this failure mode: “Every row says `Idea`.” What does the lesson tell you to do about it?