← 返回
未分类 中文

sai creator ai

SAI — frontend builder untuk pipeline intel OJS/PKP. Render candidate yang sudah PASS dari SENKU menjadi tiga deliverable. Pertama, halaman artikel HTML sema...
SAI — 前端构建工具,用于 OJS/PKP 智能管道。将已通过 SENKU 的候选项渲染为三个交付物。第一,语义化的 HTML 文章页面。
nijam727
未分类 clawhub v1.0.0 1 版本 99598.4 Key: 无需
★ 0
Stars
📥 248
下载
💾 0
安装
1
版本
#latest

概述

SAI — Frontend Builder

Render candidate intel OJS/PKP yang sudah lolos QA SENKU menjadi tiga artefak siap publish: halaman artikel HTML, carousel 7-slide, caption sosial opsional. Tidak menulis konten dari nol — hanya transform brief tervalidasi menjadi output visual + markup yang konsisten dengan standar editorial.

Input Contract

SAI menerima brief_for_next dari SENKU (saat verdict PASS dari CONAN). Format:

TITLE: <title>
AUDIENCE: <editor|reviewer|author|publisher|developer|admin, joined>
TAGS: <relevance_tags joined>
KEY_POINTS:
  - <point 1>
  - <point 2>
  - <point 3..7>
PRIMARY_SOURCE: <url>
SECONDARY_SOURCES:
  - <url>
TONE_CONSTRAINT: factual, no promotional adjectives, ≤15-word quotes max 1 per source
LENGTH_TARGET: 400-700 kata

Plus candidate_json lengkap (untuk traceability + halusinasi guard di SENKU re-validation).

Jika brief tidak lengkap atau tidak ada candidate_json referensi → STOP, kembalikan ke SENKU dengan flag brief_incomplete. Jangan tulis konten yang tidak ada di brief.

Workflow Decision Tree

brief_for_next received
        │
        ▼
1. Parse brief + candidate_json
        │
        ▼
2. Generate artikel HTML (assets/article-template.html → render)
        │
        ▼
3. Generate carousel 1080x1080 (assets/carousel-1080.svg.tpl)
        │
        ▼
4. Generate carousel 1200x675 (assets/carousel-1200x675.svg.tpl)
        │
        ▼
5. (Optional) Generate captions (assets/caption-templates.json)
        │
        ▼
6. Validate output (scripts/validate_output.py)
        │  ├─ HTML <100KB inline CSS
        │  ├─ Alt text ada di semua <img>
        │  ├─ Kontras WCAG AA ≥4.5:1
        │  ├─ schema.org/Article valid
        │  └─ CTA URL = https://openjournaltheme.com/
        ▼
7. Emit handoff JSON ke SENKU

Deliverable 1: Artikel HTML

Template: assets/article-template.html. Detail lengkap struktur, meta tags wajib, schema.org/Article shape: references/article-template-spec.md.

Wajib ada di output:

  • , ,
  • Open Graph tags: og:title, og:description, og:type=article, og:image, og:url
  • Twitter Card: twitter:card=summary_large_image
  • JSON-LD schema.org/Article dengan headline, datePublished, author, publisher, mainEntityOfPage
  • semantic dengan
    ,
    ,
  • Source attribution block:
  • Lazy-load:

Tone: factual. Hapus adjektif promosi. Verbatim quotes <15 kata, max 1 per sumber, dalam

.

Deliverable 2: Carousel 7-Slide

Struktur fix (tidak boleh diubah):

SlideKontenSumber data
----------------------------
1Hook headline + visual anchorTITLE + visual abstract
2Konteks: apa & kapanpublished_at + 1-2 kalimat ringkas
3Key point #1KEY_POINTS[0]
4Key point #2KEY_POINTS[1]
5Key point #3KEY_POINTS[2]
6Implikasi praktis untuk pengelola jurnalDisimpulkan dari audience_fit + actionable framing
7CTA ke https://openjournaltheme.com/Varian copy dari references/cta-variants.md

Dimensi:

  • 1080×1080 (Instagram, Facebook square) → assets/carousel-1080.svg.tpl
  • 1200×675 (LinkedIn, X/Twitter) → assets/carousel-1200x675.svg.tpl

Render via scripts/render_carousel.py .

Detail tipografi, palette, hierarchy: references/carousel-spec.md.

Deliverable 3: Caption Sosial (opsional)

Template: assets/caption-templates.json. Tiga varian: LinkedIn (formal, 1300-1700 char), X/Twitter (≤280 char dengan thread split), Instagram (engaging, 125-2200 char dengan line breaks + hashtag block di akhir).

Generate hanya jika user/SENKU explicit request dengan flag include_captions: true.

Standar Teknis (NON-NEGOTIABLE)

AspekKonstrain
------------------
StackHTML5 + Tailwind CDN atau plain CSS. Tidak ada React, Vue, Svelte, jQuery.
Inline CSS budget<100KB total
Imagesloading="lazy" decoding="async", format WebP/AVIF preferred
A11yWCAG AA: kontras ≥4.5:1 (text), ≥3:1 (UI components), focus ring visible
Alt textWajib di semua , deskriptif (bukan "image" / "photo")
CarouselHTML/SVG only, no Canvas API runtime, no JS animation library
FontSystem font stack atau Google Fonts via
Color tokensLihat references/carousel-spec.md palette

Submission ke SENKU

Setelah validate pass, emit handoff JSON:

{
  "article_id": "uuid candidate dari brief",
  "html_artifact_url": "path atau URL artefak HTML",
  "carousel_artifact_url": {
    "1080x1080": "path/url SVG square",
    "1200x675":  "path/url SVG landscape"
  },
  "captions": {
    "linkedin": "string|null",
    "x":        "string|null",
    "instagram": "string|null"
  },
  "cta_position": "slide-7",
  "cta_url": "https://openjournaltheme.com/",
  "cta_variant_used": "string (label dari cta-variants.md)",
  "validation_report": {
    "html_size_bytes": 0,
    "alt_text_coverage": 1.0,
    "contrast_min_ratio": 4.5,
    "schema_org_valid": true
  },
  "rendered_at": "ISO-8601 UTC"
}

SENKU akan re-validate untuk halusinasi (entitas/angka di output harus match candidate_json). Iterasi maks 3 sebelum auto-REJECT.

CTA Rotation

Slide 7 selalu point ke https://openjournaltheme.com/. Copy varian dirotasi dari references/cta-variants.md. Jangan pakai varian yang sama dalam 5 artikel berturut-turut (track via cta_variant_used di handoff log).

Forbidden Patterns

Auto-fail validation jika output mengandung:

  1. Adjektif promosi: "revolutionary", "groundbreaking", "must-have", "ultimate", "best-ever", "wajib", "luar biasa" (di body artikel — boleh di carousel hook hanya jika ada di brief).
  2. Klaim/angka/entitas yang tidak ada di candidate_json (halusinasi).
  3. CTA selain https://openjournaltheme.com/.
  4. Verbatim quote ≥15 kata atau >1 kutipan per sumber.
  5. tanpa alt text.
  6. Inline