feat: Add organic variation to illustration batch generation#36
Merged
feat: Add organic variation to illustration batch generation#36
Conversation
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>
Contributor
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the ✨ Finishing touches🧪 Generate unit tests (beta)
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. Comment |
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>
This was referenced Dec 31, 2025
- Add visual_approaches config (abstract_dataviz, conceptual_metaphor, character_scene) with suggested styles and character usage flags - Add visual_hint to each category for future LLM-based format selection - Update category suggested_styles for better variety rotation - Mesh media URLs into category structures (overall_media, categories.*.media) - Keep legacy media node for backward compatibility - Update Discord webhook to read from new meshed location with fallback - Add PLAN-organic-variation.md documenting decisions and architecture The config-driven approach rotates styles by day_of_year % len(suggested_styles). Future enhancement: separate Unix-style script for LLM judgment calls. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New styles added (Nano Banana Pro inspired): - retro_terminal: 80s CRT aesthetic with green phosphor glow - cyberpunk_hud: Holographic data display with neon metrics - isometric_city: Clean isometric tech architecture visualization Category style rotation expanded: - github_updates: +retro_terminal, +isometric_city (5 styles) - discord_updates: +collage, +risograph (5 styles) - user_feedback: +paper_cutout (4 styles) - strategic_insights: +bauhaus, +ukiyo_e (5 styles) - market_analysis: +cyberpunk_hud (4 styles) - twitter_news_highlights: +pixel_art (4 styles) - overall: new category config with 5 styles Visual approaches updated with retro_tech approach and expanded style lists. More variety = less repetition across batch generations. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Council briefings: - Backfill 107 files (2025-01-01 to 2025-04-17) - Migrate 43 files to new schema (strategic_context_summary → meeting_context) Retros & summaries: - Add Jan, Feb, Mar 2025 monthly retros - Add Q1 2025 quarterly summary - Add Dec 2025 retro and Q4 summary New scripts (scripts/etl/): - backfill-facts.sh: Batch generate facts from aggregated data - backfill-council.sh: Batch generate council briefings Migration scripts (scripts/archive/): - convert-source-format.py: Fix old source key format to file paths - convert-council-format.py: Migrate old council schema to new 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
107 markdown files for hackmd/council/ (2025-01-01 to 2025-04-17) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
Style Rotation: Uses
suggested_stylesfromstyle-presets.jsoninstead of hardcodedCATEGORY_STYLESmappingCharacter Shuffle: Date-seeded randomization of character order and count (1, 2, or all available)
Example Output
Dec 30:
Dec 31:
Reproducibility
All randomness is date-seeded: same date = same output.
7 lenses × 6 compositions × 4 seasons = 168 unique creative briefs before repeating.
Test Plan
--dry-runwith multiple dates to verify variationsuggested_stylesin config🤖 Generated with Claude Code