Go Back
Recipe Name: RCP-005-002-001-CONTENT-CAL - Content Calendar Generator
RCP-005-002-001-CONTENT-CAL
Transforms campaign timeline into specific,
actionable content slots with dates, platforms,
content types, topics, and CTAs. Creates the daily
execution blueprint that turns strategy into
publishable content assignments. Uses {PERSONA_NAME}
persona for calendar development.
Multi-Recipe Combo Stage Single Recipe
Recipe Category CFT-FWK-CAMPAIGN-ARCH - Social Media Campaign Planning Cookbook
Recipe Subcategory Blogging with A.I., Brainstorming with A.I.
Recipe Difficulty Easy
Recipe Tag: Foundational | Introduced in the POC

Requirements

  • Any AI Chat Platform (platform-agnostic recipe) Any of the following: Claude (Anthropic), ChatGPT (OpenAI), Gemini (Google), Grok (X.ai), Perplexity, Microsoft Copilot

How To Start
 

STEP 0: POLICY PRE-CHECK
  • Scan prompt for sensitive categories:
    - Proprietary content strategies
    - Competitive posting patterns
    - Platform-specific algorithm gaming
    IF potential conflict detected:
    #AI->H::PolicyCaution: (Content calendar may
    involve sensitive scheduling strategies)
    #AI->H::Note: (Keep calendar details
    confidential as requested)
STEP 0.5: PERSONA CONTINUITY
  • #AI->H::PersonaStatus: (Continuing with
    {PERSONA_NAME} persona)
    IF CAMPAIGN_PERSONA is defined:
    PERSONA_NAME = CAMPAIGN_PERSONA.PERSONA_NAME
    PERSONA_TITLE = CAMPAIGN_PERSONA.PERSONA_TITLE
    PERSONA_TIER = CAMPAIGN_PERSONA.PERSONA_TIER
    ELSE:
    PERSONA_NAME = "Campaign Strategist"
    PERSONA_TITLE = "Integrated Marketing Campaign
    Strategist"
    PERSONA_TIER = "Beginner"
    ACTIVE_PERSONA = {
    "name": PERSONA_NAME,
    "role": PERSONA_TITLE,
    "current_focus": "Content Calendar Development
    and Batch Planning",
    "calendar_expertise": [
    "Multi-channel content planning",
    "Editorial calendar management",
    "Content batching and efficiency",
    "Platform-specific optimization",
    "CTA strategy and placement"
    ],
    "approach_this_recipe": {
    "methodology": "RACE Framework + Content
    Matrix Planning",
    "output_style": "Calendar grids, content
    matrices, batch planning",
    "quality_check": "Provides confidence
    percentages for content recommendations"
    }
    }
    {PERSONA_NAME} Opening:
    "Let us turn your strategy into a content machine.
    We are taking your campaign timeline and
    translating it into specific pieces of content -
    what to post, when to post it, where to post it,
    and what action you want people to take.
    By the end of this, you will have a calendar you
    can actually execute."
STEP 1: INPUT VALIDATION AND SCOPE DEFINITION
  • #AI->H::Status: (Validating inputs and defining
    calendar scope)
    1.1 REQUIRED INPUT VERIFICATION:
    CHECK campaign_timeline:
    IF not provided OR empty:
    #AI->H::Error: (Campaign Timeline from
    Recipe 5 is required)
    #AI->H::Instruction: (Please run Recipe 5
    first or provide CAMPAIGN_TIMELINE_BLOCK)
    HALT recipe execution
    EXTRACT from campaign_timeline:
    - total_weeks
    - phase_definitions
    - weekly_themes
    - weekly_intensity
    - milestone_registry
    - blog_schedule (if present)
    CHECK channel_strategy:
    IF not provided OR empty:
    #AI->H::Error: (Channel Strategy from
    Recipe 4 is required)
    #AI->H::Instruction: (Please run Recipe 4
    first or provide CHANNEL_STRATEGY_BLOCK)
    HALT recipe execution
    EXTRACT from channel_strategy:
    - platform_playbooks
    - posting_frequencies
    - optimal_posting_times
    - platform_content_formats
    - engagement_tactics
    CHECK content_pillars:
    IF not provided OR empty:
    #AI->H::Error: (Content Pillars from
    Recipe 3 is required)
    #AI->H::Instruction: (Please run Recipe 3
    first or provide CONTENT_PILLAR_BLOCK)
    HALT recipe execution
    EXTRACT from content_pillars:
    - pillar_definitions (5 categories)
    - phase_ratios
    - topic_bank
    - format_recommendations
    1.2 SCOPE DEFINITION:
    PROCESS calendar_scope:
    IF scope == "single-week":
    REQUIRE scope_identifier (e.g., "Week 3")
    calendar_range = 1 week
    #AI->H::Note: (Generating calendar for
    {scope_identifier})
    IF scope == "two-weeks":
    REQUIRE scope_identifier (e.g., "Weeks 3-4")
    calendar_range = 2 weeks
    #AI->H::Note: (Generating calendar for
    {scope_identifier})
    IF scope == "phase":
    REQUIRE scope_identifier (e.g., "Phase 1")
    LOOKUP phase_weeks from campaign_timeline
    calendar_range = phase duration
    #AI->H::Note: (Generating calendar for
    {scope_identifier}: Weeks {start}-{end})
    IF scope == "full-campaign":
    calendar_range = total_weeks
    #AI->H::Caution: (Full campaign calendar will
    be extensive. Consider generating
    phase-by-phase for manageability.)
    #AI->H::Question: (Proceed with full campaign,
    or would you prefer to start with Phase 1?)
    1.3 DETAIL LEVEL CONFIGURATION:
    CONFIGURE detail_level:
    IF detail_level == "topics-only":
    include_in_slot = ["date", "platform", "pillar",
    "topic_direction"]
    estimated_time_per_slot = "2-3 minutes to review"
    IF detail_level == "with-hooks":
    include_in_slot = ["date", "platform", "pillar",
    "topic_direction", "hook_idea", "cta",
    "hashtag_suggestions"]
    estimated_time_per_slot = "5-7 minutes to review"
    IF detail_level == "full-briefs":
    include_in_slot = ["date", "platform", "pillar",
    "topic_direction", "hook_idea", "key_points",
    "cta", "hashtags", "visual_recommendation",
    "cross_post_notes"]
    estimated_time_per_slot = "10-15 minutes"
    {PERSONA_NAME} Scope Summary:
    "Here is what we are building:
    Calendar Scope: {calendar_scope}
    Range: {scope_identifier or 'Full Campaign'}
    Weeks Covered: {calendar_range} weeks
    Detail Level: {detail_level}
    Output Format: {output_format}
    Content Sources Loaded:
    [CHECK] Campaign Timeline ({total_weeks} weeks)
    [CHECK] Channel Strategy ({platform_count} plats)
    [CHECK] Content Pillars ({pillar_count} cats)
    [CHECK/EMPTY] Messaging Matrix (optional)
    Let us build your calendar."
STEP 2: CALENDAR FRAMEWORK CREATION
  • #AI->H::Status: (Creating calendar framework with
    date structure)
    2.1 DATE GRID GENERATION:
    FOR each week in calendar_range:
    RETRIEVE from campaign_timeline:
    - week_number
    - date_range (Mon-Sun)
    - phase
    - weekly_theme
    - intensity_percentage
    - milestones (if any)
    - blog_slot (if any)
    FOR each day (Monday through Sunday):
    CREATE day_slot = {
    "date": specific date,
    "day_of_week": Mon/Tue/Wed/Thu/Fri/Sat/Sun,
    "week_number": week_number,
    "phase": phase_name,
    "theme": weekly_theme,
    "intensity": intensity_percentage,
    "is_milestone_day": check milestone_registry,
    "milestone_name": if applicable,
    "is_blog_day": check blog_schedule,
    "platform_slots": []
    }
    2.2 PLATFORM SLOT ALLOCATION:
    RETRIEVE posting_frequencies from channel_strategy:
    platform_daily_targets = {
    "X/Twitter": calculate_daily_posts(freq, int),
    "LinkedIn": calculate_daily_posts(freq, int),
    "YouTube": calculate_weekly_posts(freq, int),
    "TikTok": calculate_daily_posts(freq, int),
    "Bluesky": calculate_daily_posts(freq, int),
    "Mastodon": calculate_daily_posts(freq, int),
    "Dev.to": calculate_weekly_posts(freq, int),
    "GitHub": calculate_biweekly_posts(freq, int)
    }
    FUNCTION calculate_daily_posts(base_frequency, int):
    adjusted = base_frequency * (intensity / 100)
    RETURN rounded_value with minimum of 1
    2.3 WEEKLY POST DISTRIBUTION:
    FOR each week:
    CALCULATE total_posts_this_week per platform
    DISTRIBUTE posts across days:
    - Prioritize high-engagement days (Tue-Thu)
    - Avoid Sunday unless platform-appropriate
    - Cluster around milestone days
    - Ensure even spread for consistency
    CREATE weekly_distribution_map:
    Monday: {platform: count, platform: count...}
    Tuesday: {platform: count, platform: count...}
    ...
    Sunday: {platform: count, platform: count...}
    2.4 FRAMEWORK OUTPUT:
    GENERATE CALENDAR_FRAMEWORK:
    CALENDAR FRAMEWORK - {scope_identifier}
    Dates: {start_date} to {end_date}
    -------------------------------------------
    WEEKLY POST TARGETS:
    | Week | X | LI | YT | TT | BS | Blog | Other|
    |------|----|----|----|----|----|----- |------|
    | Wk N | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    -------------------------------------------
    {PERSONA_NAME} Framework Analysis:
    "Your calendar framework for {scope_identifier}:
    Total Content Slots: {total_slots} across {weeks}
    Platform Distribution:
    {FOR each platform: X posts total, Y per week}
    High-Activity Days: {list days with most posts}
    Milestone Days: {list any milestone dates}
    Blog Publication Days: {list blog days}
    Framework is set. Now let us fill those slots with
    specific content."
STEP 3: PLATFORM SLOT ASSIGNMENT
  • #AI->H::Status: (Assigning specific platform slots
    with optimal timing)
    3.1 SLOT CREATION LOGIC:
    FOR each day in calendar_range:
    FOR each platform with posts scheduled today:
    RETRIEVE from channel_strategy:
    - optimal_posting_times for platform
    - content_formats preferred
    - engagement_tactics
    FOR each post_slot (1 to posts_today):
    SELECT posting_time:
    IF multiple posts: distribute across
    optimal times
    IF single post: use primary optimal
    CREATE content_slot = {
    "slot_id": generate unique ID,
    "date": specific_date,
    "day": day_of_week,
    "week": week_number,
    "platform": platform_name,
    "posting_time": selected_time,
    "phase": phase_name,
    "weekly_theme": theme,
    "pillar": null,
    "topic": null,
    "content_type": null,
    "hook": null,
    "cta": null,
    "notes": []
    }
    ADD content_slot to day_slot.platform_slots
    3.2 SPECIAL SLOT HANDLING:
    FOR milestone days:
    FLAG all slots on this day as "milestone-related"
    PRIORITIZE milestone messaging for primary plats
    ADD milestone_context to slot notes
    FOR blog publication days:
    CREATE blog_slot = {
    "slot_id": "W{n}-{DAY}-BLOG-1",
    "date": specific_date,
    "platform": "Blog",
    "posting_time": "10:00 AM",
    "content_type": "Long-form article",
    "topic": from blog_schedule,
    "social_amplification": ["X", "LinkedIn"]
    }
    CREATE amplification_slots for each social:
    - Teaser slot (day before)
    - Launch announcement slot (same day)
    - Pull quote slot (day after)
    3.3 PLATFORM SLOT SUMMARY:
    GENERATE SLOT_SUMMARY:
    -------------------------------------------
    | PLATFORM SLOTS - {scope_identifier} |
    -------------------------------------------
    | Platform | Slots | Typical Times |
    |-----------|-------|---------------------|
    | X/Twitter | {cnt} | 9am, 12pm, 5pm |
    | LinkedIn | {cnt} | 8am, 12pm |
    | YouTube | {cnt} | Thursday 3pm |
    | TikTok | {cnt} | 7pm, 9pm |
    | Bluesky | {cnt} | 10am, 3pm |
    | Blog | {cnt} | {blog_day} 10am |
    -------------------------------------------
    | TOTAL | {tot} | |
    -------------------------------------------
STEP 4: CONTENT ASSIGNMENT
  • #AI->H::Status: (Assigning content pillars, topics,
    and formats to each slot)
    4.1 PILLAR DISTRIBUTION LOGIC:
    RETRIEVE phase_ratios from content_pillars:
    Example for current phase:
    - Educational: 40%
    - Behind-the-Scenes: 20%
    - Community: 20%
    - Promotional: 15%
    - Thought Leadership: 5%
    CALCULATE pillar_targets for scope:
    FOR each pillar:
    target_slots = total_slots * (ratio / 100)
    ROUND to nearest integer
    ENSURE sum equals total_slots
    4.2 PILLAR ASSIGNMENT STRATEGY:
    ASSIGN pillars to slots using weighted distribution:
    PRIORITY_RULES:
    1. Milestone days: Promotional or Community
    2. Blog days: Educational pillar (for blog)
    3. Blog amplification: mix based on blog topic
    4. Monday: Educational (start week with value)
    5. Friday: Community or BTS (engagement focus)
    6. Primary platforms: balanced across pillars
    7. Technical platforms: Educational focus
    AVOID:
    - Same pillar consecutive days on same platform
    - Promotional clustering (spread throughout)
    - All educational on low-engagement days
    FOR each content_slot:
    ASSIGN pillar based on rules
    UPDATE slot.pillar = selected_pillar
    INCREMENT pillar_count[selected_pillar]
    4.3 TOPIC ASSIGNMENT:
    RETRIEVE topic_bank from content_pillars
    FOR each content_slot:
    RETRIEVE relevant_topics = topic_bank[pillar]
    FILTER topics by:
    - Alignment with weekly_theme
    - Platform appropriateness
    - Not recently used (avoid repetition)
    SELECT topic using:
    IF milestone_day AND pillar == Promotional:
    topic = milestone-specific content
    IF blog_amplification_slot:
    topic = derived from blog topic
    ELSE:
    topic = best_fit from filtered_topics
    UPDATE slot.topic = selected_topic
    MARK topic as "used this week"
    4.4 CONTENT TYPE ASSIGNMENT:
    RETRIEVE format_recommendations from content_pillars
    RETRIEVE platform_formats from channel_strategy
    PLATFORM_FORMAT_MATRIX:
    -------------------------------------------
    | Platform | Primary Formats |
    |-----------|----------------------------|
    | X/Twitter | Text, Thread, Image, Poll |
    | LinkedIn | Text, Article, Carousel |
    | YouTube | Video (long), Shorts |
    | TikTok | Video (short), Duet |
    | Bluesky | Text, Thread, Image |
    | Dev.to | Article, Tutorial |
    -------------------------------------------
    FOR each content_slot:
    SELECT format based on:
    - Platform primary formats
    - Pillar format preferences
    - Weekly variety (no repeat formats)
    - Resource requirements
    UPDATE slot.content_type = selected_format
    4.5 HOOK GENERATION (if detail >= with-hooks):
    IF detail_level in ["with-hooks", "full-briefs"]:
    FOR each content_slot:
    GENERATE hook_idea based on:
    - Topic direction
    - Platform conventions
    - Weekly theme
    - Pillar messaging approach
    HOOK_PATTERNS by pillar:
    Educational: "Did you know...",
    "Here is how to...", "The mistake..."
    Behind-the-Scenes: "Here is what I am
    working on...", "Real talk:"
    Community: "Question for you:",
    "What is your experience with..."
    Promotional: "Exciting news:",
    "Limited time:", "Join us for..."
    Thought Leadership: "Hot take:",
    "The future of...", "Why I think..."
    UPDATE slot.hook = generated_hook_idea
    4.6 PILLAR BALANCE CHECK:
    AFTER all assignments:
    CALCULATE actual_distribution:
    FOR each pillar:
    actual_pct = (count / total_slots) * 100
    COMPARE to target_ratios:
    FOR each pillar:
    variance = actual_pct - target_pct
    IF ABS(variance) > 5%:
    FLAG for adjustment
    IF imbalance detected:
    #AI->H::Caution: (Pillar distribution
    variance detected)
    #AI->H::Note: ({pillar} is {variance}% off)
    #AI->H::Recommendation: (Consider swapping
    {X} slots from {over} to {under})
    GENERATE PILLAR_BALANCE_REPORT:
    -------------------------------------------
    | PILLAR BALANCE CHECK - {scope_identifier}|
    -------------------------------------------
    | Pillar | Target | Actual | Status |
    |---------------|--------|--------|--------|
    | Educational | 40% | {X}% | OK/! |
    | BTS | 20% | {X}% | OK/! |
    | Community | 20% | {X}% | OK/! |
    | Promotional | 15% | {X}% | OK/! |
    | Thought Lead | 5% | {X}% | OK/! |
    -------------------------------------------
STEP 5: CTA MAPPING
  • #AI->H::Status: (Assigning calls-to-action to each
    content slot)
    5.1 CTA LIBRARY DEFINITION:
    DEFINE CTA_LIBRARY:
    PRIMARY_CTAS (Direct conversion):
    - "Sign up for early access"
    - "Join the waitlist"
    - "Get started today"
    - "Visit our website"
    ENGAGEMENT_CTAS (Community building):
    - "What do you think?"
    - "Share your experience"
    - "Follow for more"
    - "Join the conversation"
    - "Tag someone who needs this"
    CONTENT_CTAS (Content consumption):
    - "Read the full article"
    - "Watch the tutorial"
    - "Check the thread below"
    - "Link in bio"
    SOFT_CTAS (Awareness):
    - "More coming soon"
    - "Stay tuned"
    - "This is just the beginning"
    5.2 CTA ASSIGNMENT LOGIC:
    FOR each content_slot:
    DETERMINE cta_type based on:
    PILLAR-CTA MAPPING:
    - Educational: 60% Engagement, 30% Content,
    10% Primary
    - Behind-the-Scenes: 50% Engagement,
    30% Soft, 20% Primary
    - Community: 80% Engagement, 10% Content,
    10% Primary
    - Promotional: 60% Primary, 25% Content,
    15% Engagement
    - Thought Leadership: 50% Engagement,
    30% Content, 20% Soft
    SELECT specific CTA based on:
    - Platform conventions
    - Content type (Thread: "Check thread below")
    - Phase urgency (closer to launch: more Primary)
    - Daily variety (no repeat CTA twice per day)
    UPDATE slot.cta = selected_cta
    5.3 CTA DISTRIBUTION CHECK:
    CALCULATE cta_distribution:
    - Primary CTAs: {count} ({percentage}%)
    - Engagement CTAs: {count} ({percentage}%)
    - Content CTAs: {count} ({percentage}%)
    - Soft CTAs: {count} ({percentage}%)
    VERIFY balance:
    - Primary should be 15-25% (not too salesy)
    - Engagement should be 40-50% (community focus)
    - Content should be 20-30% (drive consumption)
    - Soft should be 5-15% (awareness building)
    {PERSONA_NAME} CTA Analysis:
    "CTA distribution for {scope_identifier}:
    Balance Check:
    {Show distribution with assessment}
    CTA Strategy:
    - Primary CTAs concentrated on: {days/platforms}
    - Engagement CTAs spread across: {all days}
    - Milestone days receive: {CTA type focus}
    Your content now has clear actions attached to
    every piece."
STEP 6: CALENDAR GENERATION
  • #AI->H::Status: (Generating formatted calendar
    output)
    6.1 DAILY VIEW FORMAT:
    FOR each day in calendar_range:
    GENERATE DAY_VIEW:
    ===============================================
    {DAY_NAME}, {DATE} | Week {N} | Phase: {PHASE}
    Theme: {THEME} | Intensity: {PERCENTAGE}%
    {IF milestone: "MILESTONE: {milestone_name}"}
    ===============================================
    {FOR each content_slot on this day:}
    -------------------------------------------
    | {TIME} | {PLATFORM} [{SLOT_ID}] |
    -------------------------------------------
    | Pillar: {PILLAR} |
    | Type: {CONTENT_TYPE} |
    | Topic: {TOPIC_DIRECTION} |
    | {IF detail >= with-hooks:} |
    | Hook: {HOOK_IDEA} |
    | CTA: {CTA} |
    | {IF detail == full-briefs:} |
    | Key Points: {BULLET_POINTS} |
    | Visual: {VISUAL_RECOMMENDATION} |
    | Hashtags: {HASHTAG_SUGGESTIONS} |
    -------------------------------------------
    {NEXT slot...}
    Day Total: {COUNT} pieces of content
    ===============================================
    6.2 WEEKLY SUMMARY VIEW:
    FOR each week in calendar_range:
    GENERATE WEEKLY_SUMMARY:
    ===============================================
    WEEK {N}: {DATE_RANGE}
    Phase: {PHASE} | Theme: {THEME}
    Intensity: {PERCENTAGE}% | Total: {COUNT}
    ===============================================
    | Day | X | LI | YT | TT | BS | Other| Total|
    |-----|----|----|----|----|----| -----|------|
    | Mon | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    | Tue | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    | Wed | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    | Thu | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    | Fri | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    | Sat | {X}| {X}| ---| {X}| {X}| {X} | {X} |
    | Sun | {X}| ---| ---| {X}| {X}| --- | {X} |
    -------------------------------------------
    | TOT | {X}| {X}| {X}| {X}| {X}| {X} | {X} |
    -------------------------------------------
    HIGHLIGHTS:
    - {milestone if any}
    - {blog if any}
    - {special content notes}
    ===============================================
    6.3 CSV-READY FORMAT (if output_format includes):
    GENERATE CSV_CONTENT:
    slot_id,date,day,week,platform,time,phase,theme,
    pillar,topic,content_type,hook,cta,hashtags,notes
    W1-MON-X-1,2026-01-15,Monday,1,X/Twitter,09:00,
    Phase 1,Awareness,Educational,Topic explained,
    Thread,Did you know...,What do you think?,
    #hashtag1 #hashtag2,Campaign launch day
    #AI->H::Note: (CSV format ready for import into
    scheduling tools or spreadsheets)
STEP 7: BATCH IDENTIFICATION
  • #AI->H::Status: (Grouping content for efficient
    batch creation)
    7.1 BATCH GROUPING LOGIC:
    IDENTIFY content batches for efficient creation:
    BATCH_STRATEGIES:
    1. BY_PLATFORM:
    Group all X/Twitter posts together
    Group all LinkedIn posts together
    Benefit: Stay in platform mindset
    2. BY_PILLAR:
    Group all Educational content together
    Group all Behind-the-Scenes together
    Benefit: Research once, create multiple
    3. BY_FORMAT:
    Group all Threads together
    Group all Videos together (script + shoot)
    Benefit: Efficient production workflow
    4. BY_DAY:
    Create Monday content together
    Create Tuesday content together
    Benefit: Context switching minimization
    RECOMMEND optimal batching based on scope:
    IF single-week: BY_DAY or BY_PLATFORM
    IF phase: BY_PILLAR or BY_FORMAT
    IF full-campaign: BY_FORMAT (especially video)
    7.2 BATCH OUTPUT:
    GENERATE BATCH_CREATION_GUIDE:
    BATCH CREATION GUIDE - {scope_identifier}
    Recommended Strategy: {recommended_strategy}
    ===============================================
    BATCH 1: {BATCH_NAME}
    -------------------------------------------
    Content Count: {X} pieces
    Estimated Creation Time: {X} hours
    Includes:
    - {slot_id}: {brief description}
    - {slot_id}: {brief description}
    - ...
    Preparation Needed:
    - {research/assets needed}
    -------------------------------------------
    BATCH 2: {BATCH_NAME}
    ...
    ===============================================
    BATCH SUMMARY
    ===============================================
    Total Batches: {X}
    Total Content Pieces: {X}
    Estimated Total Creation Time: {X} hours
    Recommended Creation Schedule:
    - Batch 1: {suggested_date/time}
    - Batch 2: {suggested_date/time}
    - ...
    ===============================================
    {PERSONA_NAME} Batching Analysis:
    "For efficient content creation, I recommend the
    {recommended_strategy} approach:
    Why This Strategy:
    {Rationale based on scope and content types}
    Time Investment:
    - {X} batches total
    - Average {Y} hours per batch
    - Full calendar creation: ~{Z} hours
    Pro Tip: Block dedicated creation time for each
    batch. Context-switching kills productivity.
    Batch your creation, then schedule it out. You
    will thank yourself later."
STEP 8: CALENDAR OUTPUT BLOCK
  • #AI->H::Status: (Generating complete calendar
    output block)
    8.1 STRUCTURED OUTPUT BLOCK:
    === CONTENT_CALENDAR_BLOCK ===
    Generated: {date}
    Recipe: RCP-005-002-001-CONTENT-CAL-v2.00a
    CALENDAR METADATA
    -------------------------------------------
    - Scope: {calendar_scope}
    - Range: {scope_identifier}
    - Dates: {start_date} to {end_date}
    - Detail Level: {detail_level}
    - Total Content Slots: {total_slots}
    - Platforms Active: {platform_list}
    CONTENT DISTRIBUTION SUMMARY
    -------------------------------------------
    By Platform:
    - X/Twitter: {count} posts
    - LinkedIn: {count} posts
    - YouTube: {count} videos
    - TikTok: {count} videos
    - Bluesky: {count} posts
    - Blog: {count} articles
    By Pillar:
    - Educational: {count} ({percentage}%)
    - Behind-the-Scenes: {count} ({percentage}%)
    - Community: {count} ({percentage}%)
    - Promotional: {count} ({percentage}%)
    - Thought Leadership: {count} ({percentage}%)
    By CTA Type:
    - Primary (conversion): {count} ({percentage}%)
    - Engagement: {count} ({percentage}%)
    - Content: {count} ({percentage}%)
    - Soft: {count} ({percentage}%)
    DAILY CALENDAR
    -------------------------------------------
    [INSERT FULL DAILY VIEW OUTPUT FROM STEP 6.1]
    WEEKLY SUMMARIES
    -------------------------------------------
    [INSERT WEEKLY SUMMARY OUTPUT FROM STEP 6.2]
    BATCH CREATION GUIDE
    -------------------------------------------
    [INSERT BATCH GUIDE OUTPUT FROM STEP 7.2]
    MILESTONE CONTENT FOCUS
    -------------------------------------------
    {FOR each milestone in scope:}
    MILESTONE: {milestone_name} ({date})
    - Pre-milestone content: {list slot_ids}
    - Milestone day content: {list slot_ids}
    - Post-milestone content: {list slot_ids}
    BLOG AMPLIFICATION SCHEDULE
    -------------------------------------------
    {FOR each blog in scope:}
    BLOG: {blog_topic} (Publishing: {date})
    - Teaser slots: {list slot_ids with dates}
    - Launch slots: {list slot_ids}
    - Follow-up slots: {list slot_ids}
    === END CONTENT_CALENDAR_BLOCK ===
    USAGE INSTRUCTIONS:
    This CONTENT_CALENDAR_BLOCK provides execution-
    ready content assignments for:
    - Recipe 7 (Social Post Creator): Individual
    slots as input
    - Direct scheduling in social media tools
    - Team content creation assignments
    - Progress tracking during campaign
    8.2 QUICK REFERENCE CARD:
    -------------------------------------------
    | CALENDAR QUICK REFERENCE |
    -------------------------------------------
    | RANGE: {start_date} to {end_date} |
    | TOTAL CONTENT: {total_slots} pieces |
    | DETAIL LEVEL: {detail_level} |
    -------------------------------------------
    | DAILY AVERAGE: {average} posts/day |
    | BUSIEST DAY: {day} with {count} posts |
    | QUIETEST DAY: {day} with {count} posts |
    -------------------------------------------
    | CREATION BATCHES: {batch_count} |
    | EST. CREATION TIME: {total_hours} hours |
    | RECOMMENDED: {batch_strategy} approach |
    -------------------------------------------
    #AI->H::Deliverable: (Content Calendar Block
    created - ready for execution or Recipe 7)
    {PERSONA_NAME} Closing Summary:
    "Your content calendar for {scope_identifier} is
    complete.
    What You Have:
    - {total_slots} content slots with assignments
    - Every slot has: platform, time, pillar,
    topic, and CTA
    - Organized into {batch_count} creation batches
    - Estimated {total_hours} hours to create all
    Next Steps:
    1. Option A: Take individual slots to Recipe 7
    (Social Post Creator) to generate actual copy
    2. Option B: Use batch guide to schedule
    creation sessions
    3. Option C: Export CSV to your scheduling tool
    and start creating
    Confidence Assessment: 85%
    This calendar provides a solid execution
    framework. Adjust based on real-time
    performance data.
    Pro Tip: Do not try to create everything at once.
    Batch it, schedule creation time, and maintain
    consistency over perfection."
    #AI->H::RecipeComplete: (
    RCP-005-002-001-CONTENT-CAL-v2.00a
    executed successfully)
    #AI->H::OutputReady: (CONTENT_CALENDAR_BLOCK
    available for execution or downstream recipes)

When to Use This Recipe

Use this recipe after completing the Strategic
Layer (Recipes 1-5). This is the first recipe in
the Execution Layer (SUBCAT-002).
IDEAL TIMING:
- After campaign timeline is complete
- When ready to begin content creation
- Before delegation to team members
- When scheduling tools need populated
PREREQUISITES:
- Campaign Timeline Output Block (Recipe 5)
- Channel Strategy Output Block (Recipe 4)
- Content Pillar Output Block (Recipe 3)
- Scope decision (single-week, phase, etc.)
- Detail level preference
RELATIONSHIP TO OTHER RECIPES:
- Follows: Recipes 1-5 (Strategic Layer)
- Precedes: Recipe 7 (Social Post Creator)
- Precedes: Recipe 8 (Blog Content Planner)
- Precedes: Recipe 9 (Performance Analyzer)

Recipe FAQ

RECOMMENDED RECIPE PERSONA
This recipe works best with the Campaign Strategist
persona (Maggie in the default CRAFT persona set).
The persona should have expertise in:
- Multi-channel message adaptation
- Persona-specific communication
- Brand voice consistency
- Platform culture alignment
- Conversion-focused copywriting
The recipe uses the {PERSONA_NAME} variable to allow
customization for different persona implementations.
Q: Should I generate the full campaign calendar at
once or phase by phase?
A: For manageability, generate phase by phase. Full
campaign calendars are extensive and harder to
review. Phase-by-phase allows for adjustments
based on performance data.
Q: What detail level should I choose?
A: Use "topics-only" for quick planning overviews,
"with-hooks" for creation-ready calendars, and
"full-briefs" for team handoffs or delegation.
Q: How do I handle content that does not fit the
pillar ratios exactly?
A: The recipe flags variances over 5%. Small
variances are acceptable; large ones may need
slot swapping to maintain balance.
Q: Can I update the calendar after generating it?
A: Yes. Regenerate specific weeks or phases as
needed. The modular structure supports partial
updates without regenerating everything.
Q: What if I do not have time for all the content?
A: Reduce intensity in your timeline (Recipe 5),
or focus on Tier 1 platforms only. Quality and
consistency beat volume.
 
EXAMPLE 1: SINGLE WEEK CALENDAR
Scope: Week 3 of campaign
Detail Level: with-hooks
Output Format: structured-text
Execution:
Execute CONTENT_CALENDAR_GENERATOR with:
- campaign_timeline: [Output from Recipe 5]
- channel_strategy: [Output from Recipe 4]
- content_pillars: [Output from Recipe 3]
- calendar_scope: "single-week"
- scope_identifier: "Week 3"
- detail_level: "with-hooks"
Outcome:
{PERSONA_NAME} creates:
Calendar Structure:
- 7 days of content slots
- 35 total content pieces
- Each slot includes hook ideas and CTAs
Pillar Distribution:
- Educational: 14 posts (40%)
- Behind-the-Scenes: 7 posts (20%)
- Community: 7 posts (20%)
- Promotional: 5 posts (14%)
- Thought Leadership: 2 posts (6%)
Batch Recommendation: BY_DAY
- 7 batches (one per day)
- ~2 hours per batch
- Total: ~14 hours creation time
Confidence: 85%
EXAMPLE 2: PHASE CALENDAR
Scope: Phase 2 - Momentum Building
Detail Level: full-briefs
Output Format: both (structured + CSV)
Execution:
Execute CONTENT_CALENDAR_GENERATOR with:
- calendar_scope: "phase"
- scope_identifier: "Phase 2"
- detail_level: "full-briefs"
- output_format: "both"
Outcome:
{PERSONA_NAME} creates:
Calendar Structure:
- 6 weeks of content slots
- 210 total content pieces
- Full briefs for team handoff
CSV Export:
- Ready for import into Buffer/Hootsuite
- All fields populated for scheduling
Batch Recommendation: BY_PILLAR
- 5 batches (one per pillar)
- ~8-10 hours per batch
- Total: ~45 hours creation time
Confidence: 80% - Large scope requires flexibility

Actual Recipe Code

(Copy This Plaintext Code To Use)
# ===========================================================
# START RECIPE-ID: RCP-005-002-001-CONTENT-CAL-v2.00a
# ===========================================================
CONTENT_CALENDAR_GENERATOR = Recipe(
recipe_id="RCP-005-002-001-CONTENT-CAL-v2.00a",
title="Content Calendar Generator",
description="Transforms campaign timeline into
specific, actionable content slots with
dates, platforms, content types, topics,
and CTAs.",
category="CAT-005-CAMPAIGN-PLANNING",
subcategory="SUBCAT-002-EXECUTION",
layer="TACTICAL",
difficulty="medium-hard",
estimated_time="45-60 minutes per phase",
version="2.00a",
# -------------------------------------------------------
# RECIPE DEPENDENCIES
# -------------------------------------------------------
dependencies={
"required_inputs": [
{
"source": "RCP-005-001-005-TIMELINE-ARCH",
"input": "campaign_timeline",
"description": "Week-by-week timeline
with themes and intensity"
},
{
"source": "RCP-005-001-004-CHANNEL-STRAT",
"input": "channel_strategy",
"description": "Platform playbooks
with frequency and tactics"
},
{
"source": "RCP-005-001-003-CONTENT-PILLAR",
"input": "content_pillars",
"description": "Content categories
with ratios and topic banks"
}
],
"optional_inputs": [
{
"source": "RCP-005-001-002-MSG-MATRIX",
"input": "messaging_matrix",
"description": "Phase-aligned
messaging for content alignment"
}
],
"feeds_into": [
"RCP-005-002-002 (Social Post Creator)",
"RCP-005-002-003 (Blog Content Planner)",
"Direct content creation and scheduling"
]
},
# -------------------------------------------------------
# PARAMETERS
# -------------------------------------------------------
parameters={
"campaign_timeline": {
"type": "text",
"required": True,
"description": "Output from Recipe 5"
},
"channel_strategy": {
"type": "text",
"required": True,
"description": "Output from Recipe 4"
},
"content_pillars": {
"type": "text",
"required": True,
"description": "Output from Recipe 3"
},
"calendar_scope": {
"type": "enum",
"required": True,
"options": ["single-week", "two-weeks",
"phase", "full-campaign"],
"description": "How much to calendar"
},
"scope_identifier": {
"type": "string",
"required": False,
"description": "Which week/phase"
},
"detail_level": {
"type": "enum",
"required": False,
"default": "with-hooks",
"options": ["topics-only", "with-hooks",
"full-briefs"],
"description": "Detail per content slot"
},
"include_blog": {
"type": "boolean",
"required": False,
"default": True,
"description": "Include blog posts"
},
"output_format": {
"type": "enum",
"required": False,
"default": "structured-text",
"options": ["structured-text",
"csv-ready", "both"],
"description": "Output format"
}
},
# -------------------------------------------------------
# OUTPUT SPECIFICATIONS
# -------------------------------------------------------
outputs={
"primary_output": {
"name": "CONTENT_CALENDAR_BLOCK",
"format": "Structured text block",
"contains": [
"Calendar Metadata",
"Content Distribution Summary",
"Daily Calendar (all slots)",
"Weekly Summaries",
"Batch Creation Guide",
"Milestone Content Focus",
"Blog Amplification Schedule"
],
"usage": "Input for Recipe 7, direct
execution, scheduling tools"
},
"export_outputs": [
{
"name": "CSV_EXPORT",
"format": "Comma-separated values",
"purpose": "Import into scheduling
tools or spreadsheets",
"available_when": "output_format
includes csv-ready"
}
],
"reference_outputs": [
{
"name": "QUICK_REFERENCE_CARD",
"format": "Bordered card",
"purpose": "At-a-glance summary"
},
{
"name": "BATCH_CREATION_GUIDE",
"format": "Structured guide",
"purpose": "Efficient creation planning"
}
]
},
# -------------------------------------------------------
# VALIDATION CHECKLIST
# -------------------------------------------------------
validation_checklist='''
Before marking recipe complete, verify:
[ ] All days in scope have content assigned
[ ] Every slot has: date, platform, time, pillar,
topic, CTA
[ ] Pillar distribution within 5% of targets
[ ] CTA distribution balanced (not too promotional)
[ ] No content gaps on milestone days
[ ] Blog amplification slots created for all blogs
[ ] Batches logically grouped
[ ] Total content volume realistic for resources
[ ] CSV export valid format (if requested)
[ ] Quick reference card accurate
'''
)
# ===========================================================
# END RECIPE-ID: RCP-005-002-001-CONTENT-CAL-v2.00a
# ===========================================================
"""
# -----------------------------------------------------------
# SECTION: NOTES
# -----------------------------------------------------------
WPRM_FIELD_NOTES = """
RECIPE NOTES:
1. DEPENDENCY: This recipe requires output from
Recipes 3, 4, and 5. Recipe 2 (Messaging Matrix)
is optional but enhances content alignment.
2. SCOPE SELECTION: Choose scope based on your
planning needs:
- single-week: Detailed creation planning
- phase: Recommended for most use cases
- full-campaign: Overview only, detailed later
3. DETAIL LEVELS: Three levels available:
- topics-only: Quick planning, 2-3 min/slot
- with-hooks: Creation-ready, 5-7 min/slot
- full-briefs: Team handoff, 10-15 min/slot
4. PILLAR DISTRIBUTION: The recipe automatically
distributes content across pillars based on
phase ratios from Recipe 3. Variances over 5%
are flagged for review.
5. CTA BALANCE: Primary CTAs (conversion-focused)
should not exceed 25% of total. The recipe
checks distribution and flags imbalances.
6. BATCH STRATEGIES: Four approaches available:
- BY_PLATFORM: Best for solo creators
- BY_PILLAR: Best for research-heavy content
- BY_FORMAT: Best for video production
- BY_DAY: Best for daily publishing rhythm
7. CSV EXPORT: When enabled, generates import-ready
format for Buffer, Hootsuite, Later, and similar
scheduling tools.
8. ITERATIVE USE: This recipe can be run multiple
times for different scopes or to regenerate
specific weeks based on performance data.
9. DOWNSTREAM RECIPES: Individual content slots
can be passed to Recipe 7 (Social Post Creator)
for full copy generation.
"""
# ===========================================================
# END WPRM RECIPE CONTENT
# ===========================================================