Creative Bible Skill
You are building a Creative Bible — a comprehensive ad creation system that gives a brand everything they need to produce unlimited ad variations. The system maps WHO the customer is × WHERE they are in the buying journey × HOW to reach them = the AD.
This is not a one-off copywriting exercise. It's a reusable strategic asset. Every cell in the output should be specific enough to hand to a media buyer or scriptwriter and have them produce a real ad from it.
Before You Start
Read these reference files based on what phase you're in:
references/template-guide.md— The 12-sheet template structure, what goes where, column mappings, merged cell locations. Read this before writing any code that touches the template.references/quality-standards.md— The audit checklist. What counts as fabricated, shallow, or AI-sounding. Read this before writing any content AND again before delivering.
The blank template is at assets/Creative_Bible_Template.xlsx. Copy it to the user's workspace before filling.
The Four Phases
Phase 1: Competitive Intelligence
Before filling the Bible, you need raw material. Research the brand's primary competitor(s):
- Competitor positioning — Visit their website. Extract: headline copy, pricing, feature language, how they describe themselves. Use WebFetch or browser tools.
- Customer sentiment — Search Reddit, G2, Trustpilot, YouTube comments for the competitor's name. Collect exact quotes — the actual words people typed. Frustrated users are gold. Satisfied users reveal what's working.
- Competitor landscape — Who else is in the space? How do they position? What models/workflows do they use? Build a quick comparison.
- Market gaps — What are people asking for that nobody provides? What complaints have no answer? These become your brand's angles.
Save research to a structured document (Word or Markdown) in the user's workspace. This document feeds everything that follows.
Why this matters: The Bible's quality depends entirely on the quality of the research underneath it. Generic research → generic Bible. Specific, quote-heavy research → Bible that sounds like it was written by someone who actually understands the market.
Phase 2: Awareness Stage Mapping
Map the competitor's (and by extension, the brand's) potential customers across Eugene Schwartz's five awareness stages:
| Stage | What They Know | Your Job |
|---|---|---|
| Unaware | Don't know they have a problem | Disrupt their belief |
| Problem Aware | Know the problem, haven't found a fix | Validate frustration, shift blame |
| Solution Aware | Actively comparing options | Differentiate your mechanism |
| Product Aware | Seen your product, sitting on fence | Prove it works, handle objections |
| Most Aware | Used it or nearly bought | Give a reason to act now |
For each stage:
- Estimate what percentage of the market sits there (ground this in real data — search for adoption stats, not guesses)
- Write what message would land
- Suggest budget allocation
Save as a separate document. This feeds Sheets 3 and 4 of the Bible.
Phase 3: Fill the Creative Bible
This is the core of the skill. Copy the template from assets/Creative_Bible_Template.xlsx to the user's workspace, then fill every sheet using Python (openpyxl).
Read references/template-guide.md now if you haven't.
The fill order matters — later sheets reference earlier ones:
- Sheet 1 (The System) — Brand name, product, price, differentiator, founder story
- Sheet 2 (Customers) — 10 customer avatars with problems, emotional states, language
- Sheet 3 (Awareness) — 5 stages × 6-8 messages each + audience distribution percentages
- Sheet 4 (Sophistication) — Assess current market level + 6 approaches per level
- Sheet 5 (Angles) — Brand-specific examples for all 8 angle types
- Sheet 6 (Message Strategies) — 50 brand-specific examples (col I) matching the 50 universal frameworks
- Sheet 7 (Hooks) — 100 hooks across 10 categories (see template guide for row mapping)
- Sheet 8 (Script Formulas) — 8 full example scripts in the brand's voice
- Sheet 9 (Formats) — Brand-specific notes for each ad format
- Sheet 10 (Proof) — Proof arsenal: hard proof, soft proof, founder proof
- Sheet 11 (Language Bank) — Customer language: what they say vs. what they mean + search terms
- Sheet 12 (Objections) — Top 5 objections × 4 crusher approaches each
Implementation approach:
- Use openpyxl to read and write. The template has formatting, merged cells, and structure — preserve all of it.
- Write content programmatically via Python scripts. For large fills (100 hooks, 50 MS examples), batch them in a single script.
- The template has merged cell ranges for category headers in Sheets 7 and 11. Never write to merged cells — only write to regular data cells. See
references/template-guide.mdfor exact merged cell locations.
Content generation principles:
- Every example should be specific to THIS brand. Not generic marketing advice. Not "[insert benefit here]."
- Script examples should sound spoken, not written. Read them aloud in your head. If they sound like a press release, rewrite.
- Hooks should vary in structure. Not every hook should be a question. Not every hook should start with "What if."
- Message strategy examples (Sheet 6, col I) should be actual ad copy, not descriptions of what an ad would be. Write the words someone would say on camera or read in a caption.
Phase 4: Quality Audit
After filling, run the verification script (scripts/verify_bible.py) to check for unfilled placeholders. Then do a manual audit.
Read references/quality-standards.md now.
The audit checks three categories:
1. Fabricated Claims Scan for specific numbers, percentages, testimonials, or case studies that weren't sourced from the research phase. Common patterns:
- Made-up user counts ("10,000+ users")
- Invented performance stats ("40% lower CPAs")
- Fake testimonials ("One agency told us they saved...")
- Unverifiable ratings ("4.8 stars")
If you can't point to where the number came from in the research, replace it with something honest. Early-stage brands should lean on founder credibility, transparency, and mechanism — not fabricated social proof.
2. AI Slop Content that sounds like it was generated by a language model rather than written by a human who understands the market. Patterns:
- Vague buzzword hooks ("a method that makes competitors obsolete")
- Generic urgency ("the window is closing fast")
- Formulaic curiosity gaps ("the one thing nobody tells you about X")
- LinkedIn-post energy ("the cost of NOT doing X is higher than...")
- Overly polished corporate language where casual language would be more authentic
Replace with specific, grounded claims that reference actual product features, real competitor data, or the founder's genuine perspective.
3. Structural Issues
- Angle examples that don't match their angle type
- Language bank entries in wrong categories
- MS examples that describe ads instead of being actual ad copy
- Search terms section containing aspiration language instead of actual Google queries
Fix everything flagged, then re-run the verification script to confirm zero placeholders remain.
Important Notes
The template has merged cells. Rows that are category headers (like "QUESTION HOOKS" in Sheet 7) span multiple columns as merged ranges. If you try to write to a cell that's part of a merged range but not the top-left cell, openpyxl will throw
MergedCell object attribute 'value' is read-only. Always checkreferences/template-guide.mdfor merged cell locations before writing.Hook numbering ≠ row numbering. Each hook category in Sheet 7 has 2 merged header rows before 10 data rows. Hook #1 is at row 8, but hook #51 is at row 73 (not row 51). Use the
hook_to_row()function inscripts/fill_helpers.py.The user may skip phases. If they already have competitive research, jump to Phase 3. If they just want to fill the template with information they provide, skip research entirely. Be flexible.
The user may have their own template. If they provide a different Creative Bible template, examine its structure first before filling. The scripts are built for the standard template — adapt if needed.
Save frequently. After each sheet or batch of sheets, save the workbook. Don't try to fill all 12 sheets in a single massive script — if it fails halfway, you lose everything.