= 0.7 and seo_score >= 0.6 - REVISE if fixable issues exist — provide full revised HTML - REJECT if fundamentally flawed - Preserve formatting, links, lists when revising {{ instructions_block }} TPL; /** Chief-editor review user prompt. */ public const EDITOR_REVIEW = <<<'TPL' Review this article draft: BRIEF: Title: {{ title }} | Topic: {{ topic }} | Type: {{ article_type }} KEY POINTS: {{ key_points }} TARGET KEYWORDS: {{ keywords }} CONTENT: {{ content }} TPL; /** * LLM deep-research system prompt (fully static). The user-side * research brief stays the `prautoblogger_research_prompt` SETTING — * it is site configuration, not pipeline copy. */ public const RESEARCH_SYSTEM = <<<'TPL' You are a deep research analyst specializing in emerging trends, scientific developments, and community knowledge in niche health and biohacking domains. Your task is to identify substantive, actionable findings. Using your training knowledge, scan across: - Recent scientific literature and research directions - Active community discussions, debates, and evolving consensus - Emerging products, protocols, and methodologies gaining traction - Common questions, misconceptions, and points of confusion - Regulatory changes, safety concerns, and legal shifts - Gaps between what practitioners want to know and what content exists Your findings must be: 1. SUBSTANTIVE — 2-3 paragraphs of detailed analysis per finding, not a headline 2. ACTIONABLE — practical enough to seed a full article 3. REALISTIC — grounded in what is actually discussed or researched; do NOT invent citations 4. TIMELY — reflect current knowledge, recent shifts, or emerging questions Respond with valid JSON only (no preamble, no markdown fences): {"findings": [{"title": "string", "content": "string (2-3 paragraphs)", "relevance_score": 0-100, "category": "question|trend|comparison|guide|misconception|safety"}]} Generate 8-12 findings. Prioritize depth over breadth. Avoid generic or surface-level topics. TPL; /** * Registry definitions for the editor / research / image keys. * * The image bodies are referenced from their existing single sources * of truth rather than duplicated. Note the image keys seed the * registry for the composer PR; the v0.16.0 option-override chain * (`prautoblogger_image_prompt_instructions`, * `prautoblogger_image_style_template`) is unchanged in Phase 1. * * @return array}> */ public static function defs(): array { return array( 'editor.system' => array( 'body' => self::EDITOR_SYSTEM, 'model_option' => 'prautoblogger_editor_model', 'params' => array( 'temperature' => 0.3, 'max_tokens' => 5000, 'response_format' => array( 'type' => 'json_object' ), ), ), 'editor.review' => array( 'body' => self::EDITOR_REVIEW, 'model_option' => 'prautoblogger_editor_model', 'params' => array(), ), 'research.system' => array( 'body' => self::RESEARCH_SYSTEM, 'model_option' => 'prautoblogger_research_model', 'params' => array( 'temperature' => 0.7, 'max_tokens' => 8000, 'response_format' => array( 'type' => 'json_object' ), ), ), 'image.rewriter_system' => array( 'body' => PRAutoBlogger_Image_Prompt_Builder::REWRITER_SYSTEM_PROMPT, 'model_option' => 'prautoblogger_analysis_model', 'params' => array( 'temperature' => 0.7, 'max_tokens' => 180, ), ), 'image.style_template' => array( 'body' => PRAUTOBLOGGER_DEFAULT_IMAGE_STYLE_TEMPLATE, 'model_option' => 'prautoblogger_image_model', 'params' => array(), ), ); } }