Skip to content

Conversation

@madjin
Copy link
Contributor

@madjin madjin commented Dec 31, 2025

Summary

Closes #34

Adds a "daily creative brief" system that introduces natural variation in batch-generated illustrations while maintaining reproducibility.

Changes

  • Creative Brief System: Each day gets a unique creative direction combining:

    • Interpretive lens (7 options): emotion, journey, conflict, collaboration, breakthrough, scale, individual impact
    • Compositional approach (6 options): bird's eye, close-up, wide shot, diagonal, silhouette, split frame
    • Seasonal mood (4 seasons): Atmospheric tone derived from date
  • Style Rotation: Uses suggested_styles from style-presets.json instead of hardcoded CATEGORY_STYLES mapping

  • Character Shuffle: Date-seeded randomization of character order and count (1, 2, or all available)

Example Output

Dec 30:

Today's creative direction:
  Lens: Focus on the INDIVIDUAL IMPACT on one person
  Composition: Silhouette against dramatic backdrop
  Mood: winter stillness, contemplative, cool tones

Dec 31:

Today's creative direction:
  Lens: Frame this as a BREAKTHROUGH or DISCOVERY moment
  Composition: Wide establishing shot showing full context
  Mood: winter stillness, contemplative, cool tones

Reproducibility

All randomness is date-seeded: same date = same output.

7 lenses × 6 compositions × 4 seasons = 168 unique creative briefs before repeating.

Test Plan

  • Run --dry-run with multiple dates to verify variation
  • Verify style rotation matches suggested_styles in config
  • Verify character shuffle produces varied arrangements
  • Verify reproducibility (same date = same output)

🤖 Generated with Claude Code

Closes #34

Adds a "daily creative brief" system that introduces natural variation
in batch-generated illustrations while maintaining reproducibility:

- Interpretive lenses: 7 different ways to interpret the news content
  (emotion, journey, conflict, collaboration, breakthrough, scale, impact)
- Compositional approaches: 6 framing styles (bird's eye, close-up,
  wide shot, diagonal, silhouette, split frame)
- Seasonal mood: Atmospheric tone derived from the date
- Style rotation: Uses suggested_styles from style-presets.json
  instead of hardcoded category mappings
- Character shuffle: Date-seeded randomization of character order
  and count (1, 2, or all available)

All randomness is date-seeded for reproducibility: same date = same output.
7 lenses × 6 compositions × 4 seasons = 168 unique creative briefs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Dec 31, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/organic-variation

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

madjin and others added 6 commits December 31, 2025 01:04
Extends the seasonal mood system with 12 holiday-specific overrides:

Fixed date holidays (2-3 day windows):
- New Year's (Dec 31 - Jan 2)
- Valentine's Day (Feb 13-15)
- St. Patrick's Day (Mar 16-17)
- April Fools (Apr 1)
- Bitcoin Pizza Day (May 22)
- 4th of July (Jul 3-5)
- Ethereum Birthday (Jul 30)
- Halloween (Oct 29-31)
- Christmas (Dec 23-26)

Variable holidays (hardcoded 2025-2035):
- Thanksgiving (Wed-Fri around 4th Thursday)
- Easter (Sat-Mon around Easter Sunday)

Priority: Easter > Thanksgiving > Fixed holidays > Seasonal
(Easter 2029 falls on April 1st, correctly takes priority over April Fools)

Total unique moods: 4 seasons + 12 holidays = 16
Total combinations: 7 lenses × 6 compositions × 16 moods = 672

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Halloween (Oct 29-31): Characters wear Halloween costumes
- Christmas (Dec 23-26): Characters wear Santa hats and holiday attire

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- CDN Upload section with setup, usage, and full workflow
- Organic Variation System explaining creative brief components
- Holiday moods table with special features (costumes, Santa hats)
- Style rotation explanation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update OUTPUT_DIR in illustrate.py to use media/
- Update GitHub workflow paths
- Update README documentation with new paths
- Remove old posters/ directory (content moves to CDN)

This separates generated media output from scripts/posters/ code,
and prepares for CDN-first media hosting.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Read poster URL from facts.media.posters.overall (Bunny CDN)
- Remove --poster/-p flag (URL now embedded in facts file)
- Remove cleanup_old_posters() function (using CDN instead)
- Simplify daily_discord_briefing workflow
- Update facts with CDN media URLs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants