Commit Graph

2 Commits

Author SHA1 Message Date
peptiderepo
dcc8b7b183 feat: LLM-powered image prompt rewriting for FLUX.1
Replaces the rule-based prompt builder with a cheap LLM call
(analysis model via OpenRouter) that distills article content into
concise visual scene descriptions. The old rule-based method becomes
the fallback if the LLM call fails.

Key design decisions:
- System prompt teaches the LLM to describe objects/setting/lighting
  instead of abstract concepts, and to avoid faces (FLUX.1 weakness)
- Uses the analysis model (gemini-2.5-flash-lite) at ~$0.001/call
- Cost is logged to the analytics dashboard via log_api_call()
- Style suffix is still appended separately so the rewriter only
  handles scene composition

Cost impact: +~$0.001 per image on top of ~$0.0008 generation cost.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-18 02:06:22 +07:00
peptiderepo
2e41c3f2f6 feat(images): wire image pipeline into article flow (commit 1b) (#14)
Completes the image + A/B experiment workstream by integrating
image generation into the post publishing pipeline.

New classes:
- class-image-pipeline.php: Orchestrates A/B generation (article-driven
  Image A → featured; source-driven Image B → post meta). Each image
  independently fallible; article publishes even if both fail.
- class-image-prompt-builder.php: Synthesizes visual prompts from article
  title+content and Reddit source data. Appends CEO-locked 90s infomercial
  style suffix. Keeps prompts concise for FLUX.1 quality.
- class-image-media-sideloader.php: Downloads image bytes, creates temp
  file, sideloads via media_handle_sideload(), sets alt text and metadata,
  cleans up temp files.

Changes to existing files:
- Publisher.attach_generated_images(): Runs image pipeline post-creation,
  sets _thumbnail_id (Image A) and _prautoblogger_image_b_id (Image B).
  Errors logged but don't block post publication.
- Settings: prautoblogger_image_enabled (toggle, default off).

Tests:
- ImagePipelineTest.php: Orchestration, cost tracking, graceful failures.
- ImagePromptBuilderTest.php: Prompt generation, length limits.

Docs:
- ARCHITECTURE.md: New step 6b in data flow, new files in file tree.
- CHANGELOG.md: Commit 1a/1b breakdown.

Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 16:51:22 +07:00