porn-fun NSFW AI評価スコアページ用cron専用スレッド立ち上げ依頼文
【cron立ち上げ依頼文】
porn-fun【評価・NSFW AI】の支社PC用cronテンプレート作成・設定スレッドを起動してください。
この立ち上げ文だけではautomationを作成しないでください。まず、このページの内容を読み、次に貼る「一括作成依頼文」または各H2配下の「個別作成依頼文」だけを対象にしてください。
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- Hub正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
- cron実行cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- 最初に読む場所: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`
- Gate正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\gates\current`
- cron本文正本: `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\cron_prompts\current\NSFW_AI`
- live Hub version: `0.1.66-pornfun-internal-link-live-200-gate-20260607`
触らない対象:
- AIfan Hub、AIfan active cron、AIfan記事
- porn-fun以外のサイトHub
- 既公開記事本文
- キー、トークン、認証値
- 旧 `representative-work-gate`
- `_codex_cron_threads\AGENTS.md`
- 共有 `Autopost358\HUB\gates`
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
【cron一括作成依頼文】
以下の6件を新規automationとして作成してください。名称はテスト名にせず、すぐ分かる従来名にします。
作成するcron:
- porn-fun【評価・NSFW AI】収集: 1回/日 / 推奨RRULE `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=4;BYMINUTE=13;BYSECOND=0` / model gpt-5.4
- porn-fun【評価・NSFW AI】検査: 4回/日 / 推奨RRULE `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=6,12,16,21;BYMINUTE=19;BYSECOND=0` / model gpt-5.5
- porn-fun【評価・NSFW AI】制作: 最大3回/日 / 推奨RRULE `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=9,15,22;BYMINUTE=34;BYSECOND=0` / model gpt-5.5
- porn-fun【評価・NSFW AI】高品質チェック: 最大5回/日 / 推奨RRULE `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=11,13,17,20,23;BYMINUTE=41;BYSECOND=0` / model gpt-5.5
- porn-fun【評価・NSFW AI】訂正: 1回/日 / 推奨RRULE `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=18;BYMINUTE=48;BYSECOND=0` / model gpt-5.4
- porn-fun【評価・NSFW AI】改善ハンドオフ: 週1回、または改善キュー発生時 / 推奨RRULE `FREQ=WEEKLY;BYDAY=SU;BYHOUR=8;BYMINUTE=55;BYSECOND=0` / model gpt-5.4
共通設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwds: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 支社PCに持っていくフォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` のみ。cron本文が読むGate/起動文書/保存証跡はこのフォルダ内で完結させる。
- 各cronのprompt本文は、このページの各H2配下にある個別作成依頼文内の `PROMPT_START` から `PROMPT_END` までをそのまま入れる。
- 既存ACTIVE cronを確認し、同時刻と前後10分を避ける。衝突する場合は起動時間設定ルールに従って調整する。
- 作成後に、6件それぞれの name / id / status / rrule / model / cwd を一覧で報告する。
- 作成時も作成後も、秘密値・認証値・APIキーは表示しない。
【cron個別作成依頼文の使い方】
一括作成ではなく個別に作る場合は、下の各H2配下のコードブロックを1つずつ貼ってください。個別依頼文はそれぞれ1件だけ作成する前提です。
更新時刻: 2026-06-07 04:36 JST
Marker: PORNFUN_NSFWA_REALOPS_BRANCH_PC_CRON_TEMPLATE_20260607
porn-fun【評価・NSFW AI】収集cron automation作成依頼文
【cron個別作成依頼文】
以下のautomationを1件だけ新規作成してください。
automation名:
porn-fun【評価・NSFW AI】収集
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- stage: collection
- 役割: PorndudeAI等から候補在庫を集め、保存/readback成立を確認する。記事制作・検査・本文修正はしない。
共通no-touch:
- AIfan Hub、AIfan active cron、AIfan記事は触らない。
- porn-fun以外のサイトHubは触らない。
- 既公開記事本文を勝手に直さない。
- キー、トークン、認証値を出力しない。
- キー再発行を提案しない。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` は読ませない。
automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.4
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 1回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=4;BYMINUTE=13;BYSECOND=0`
- 起動時間メモ: 候補: 04:13 JST。1日1回、収集元の状態が落ち着いている早朝枠を基本にする。
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
作成時の注意:
- 既存ACTIVE cronを確認してから時刻を確定する。
- この依頼文は実運用仕様であり、テスト用の週1回設定ではない。
- 名称に「テスト」を入れない。
- 作成後に name / id / status / rrule / model / cwd を報告する。
- 代表が「何点?」「Gate何点?」と聞いた場合も、自己採点だけで答えず、公開HTMLまたはpreview HTMLの実測結果で答える。
PROMPT_START
# porn-fun【評価・NSFW AI】収集cron v0.1.66
Marker: 2026-06-06_PORNFUN_ACTIVE_COLLECTION_INSPECTION_OPTIMIZED
## 対象
対象は `site_id=porn-fun` / `workflow_id=porn-fun-nsfw-ai-generator-sites-ja` / `content_set=porn_fun_nsfw_ai_generator_sites` のみ。AIfan、他サイトHub、共有Gate、記事20、公開済み記事本文、制作以降の工程は触らない。
最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから、同じporn-funサイトHub内の `gates/current` と `cron_prompts/current` の収集に必要な箇所だけを読む。サイトHUB外のGate/起動文書は参照しない。cron実行cwdはautomation設定どおりでよいが、正本・保存証跡・readback証跡は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` 内で完結させる。
起動時に `api=status` で `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認し、ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current`、`version/current` を最新版として扱う。`hub_version` が0.1.66と一致しないことだけを理由に停止しない。`api=agent_pack` と `api=agent_work_queue` を確認する。キー、トークン、認証値は出力しない。キー再発行を提案しない。
## 役割
収集cronの役割は、PornDudeAI由来の候補在庫を作り、Hubへ保存し、readbackを確認するところまで。本文制作、Search Compass作成、reader_intent_pack作成、production_ready化、公開、高品質チェック、訂正、改善ハンドオフはしない。
収集元は当面 `https://porndudeai.com/`。PornDudeAI内のNSFW AIサービス、AI画像生成、AI動画生成、AIチャット、AIガールフレンド、成人向けAIツール候補を収集する。ThePornDude本体や無関係カテゴリは対象外。非同意画像生成、undress系、実在人物リスクが高いもの、公式URLが確定できないもの、公開済み重複はaccepted候補にしない。
## 候補化前チェック
候補ごとに、公式URL、サービス名、title、slug、候補元URL、サービス種別、NSFW/成人向け注意、カテゴリ根拠、公開済み確認結果を残す。既存公開ページ、既存candidate、既存queue、既存除外記録と、公式URL/slug/titleで重複確認する。
0-B accepted在庫として数えるのは、未消費の `candidate_item_material` で `status=accepted_0B` のものだけ。`consumed_by_inspection`、`production_ready`、`duplicate_skipped`、`production_excluded`、`summary` は0-B在庫に数えない。
## 保存
保存は `api=candidate_batch_save` を使う。旧 `hub_table_upsert` 直叩き、candidate_batch_save以外の推測API、対象外Hubへの迂回をしない。
accepted候補のpayloadには、`file_type=candidate_item_material`、`task_code=0-B`、`status=accepted_0B`、`candidate_status=accepted`、`site_id=porn-fun`、`workflow_id=porn-fun-nsfw-ai-generator-sites-ja`、`content_set=porn_fun_nsfw_ai_generator_sites` を含める。除外候補は理由を保存し、0-B在庫に数えない。
保存レスポンスで `saved_count`、`candidate_saved_count`、`file_readback_count`、`queue_readback_count`、`next_task_code=1-A`、`readback_confirmed=true` を確認する。accepted と readback が成立するまで完了扱いにしない。
## 報告
報告は日本語で短く、処理候補数、除外数、保存件数、accepted/readback結果、次工程queue件数、BLOCKED理由があればその理由だけを書く。長いHTML、JSON、Hub export、ログ全文、秘密値は出力しない。
## v0.1.66 前記事を公開基準値にしないGate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK
前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
PROMPT_END
porn-fun【評価・NSFW AI】検査cron automation作成依頼文
【cron個別作成依頼文】
以下のautomationを1件だけ新規作成してください。
automation名:
porn-fun【評価・NSFW AI】検査
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- stage: inspection
- 役割: accepted_0Bを調査し、明らかな架空サービス以外をproduction_readyへ回す。Search Compass、reader_intent_pack、inspection_sticky_notes、制作素材パックを作る。
共通no-touch:
- AIfan Hub、AIfan active cron、AIfan記事は触らない。
- porn-fun以外のサイトHubは触らない。
- 既公開記事本文を勝手に直さない。
- キー、トークン、認証値を出力しない。
- キー再発行を提案しない。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` は読ませない。
automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.5
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 4回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=6,12,16,21;BYMINUTE=19;BYSECOND=0`
- 起動時間メモ: 候補: 06:19 / 12:19 / 16:19 / 21:19 JST。朝・昼・夕・夜へ分散する。
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
作成時の注意:
- 既存ACTIVE cronを確認してから時刻を確定する。
- この依頼文は実運用仕様であり、テスト用の週1回設定ではない。
- 名称に「テスト」を入れない。
- 作成後に name / id / status / rrule / model / cwd を報告する。
- 代表が「何点?」「Gate何点?」と聞いた場合も、自己採点だけで答えず、公開HTMLまたはpreview HTMLの実測結果で答える。
PROMPT_START
# porn-fun【評価・NSFW AI】検査cron v0.1.66
Marker: 2026-06-06_PORNFUN_ACTIVE_COLLECTION_INSPECTION_OPTIMIZED
## 対象
対象は `site_id=porn-fun` / `workflow_id=porn-fun-nsfw-ai-generator-sites-ja` / `content_set=porn_fun_nsfw_ai_generator_sites` のみ。AIfan、他サイトHub、共有Gate、記事20、公開済み記事本文、制作以降の工程は触らない。
最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから、同じporn-funサイトHub内の `gates/current` と `cron_prompts/current` の検査に必要な箇所だけを読む。サイトHUB外のGate/起動文書は参照しない。cron実行cwdはautomation設定どおりでよいが、正本・保存証跡・readback証跡は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` 内で完結させる。
起動時に `api=status` で `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認し、ただしporn-fun Hubが別スレッドまたは別PCでバージョンアップされている場合は、その時点のlive Hub応答とサイトHub内の `startup_docs/current`、`gates/current`、`cron_prompts/current`、`version/current` を最新版として扱う。`hub_version` が0.1.66と一致しないことだけを理由に停止しない。`api=agent_pack` と `api=agent_work_queue` を確認する。キー、トークン、認証値は出力しない。キー再発行を提案しない。
## 役割
検査cronは付箋工程。未消費の `accepted_0B` を、制作cronが迷わない `production_ready` と `production_material_pack` に変換する。新規収集、本文制作、公開、高品質チェック、訂正、改善ハンドオフ、公開HTML品質バリデータ実行はしない。
検査が除外してよいのは、明らかな架空サービスだけ。以前あった、休止中、閉鎖済み、公式URL不通、悪評が多い、返金/解約トラブル、安全性への不満があるサービスは除外しない。それらは `production_ready` にして、`inspection_sticky_notes` に現在状態、根拠URL、口コミ/悪評、未確認点、制作時の注意を書く。
公式URLが不通でも、過去の存在証拠や閉鎖・休止の根拠があれば `production_ready`。悪評、返金トラブル、解約トラブル、安全性への不満も、制作が事実として扱えるように分離保存する。
## 調査と制作素材
Search Compass と reader_intent_pack は検査cronが作る。存在しないことだけを理由にholdしない。作成不能なら、理由、代替確認、残タスクを保存する。
制作へ渡す素材として、Search Compass、reader_intent_pack、検索意図、上位狙いの読者課題、自然に使える共起語、関連語、主要KW、使わない語、H2/H3候補、評価項目、FAQ候補、公式CTAに使える確認済み情報、NSFW注意文、比較時の観点、未確認付箋、公式URLまたは一次情報に近いURL、料金、規約、プライバシー、年齢制限、禁止事項を作る。
公式情報に加えて、公開されている口コミ、レビュー、評判、利用者の反応、比較記事上の言及も確認する。事実確認済み情報、未確認の評判、注意すべき口コミを分けて付箋化する。口コミは断定せず、本文制作では根拠の弱さがわかる表現にできるように書く。
`production_material_pack` には、Search Compass、reader_intent_pack、inspection_sticky_notes、公式情報、口コミ/評判、KW/共起語/関連語、H2/H3候補、FAQ候補、評価項目、比較観点をひとまとまりで入れる。制作以降の見本URL継承Gateや装飾Gateは制作cronが読むため、検査では本文品質判定や装飾判定を代行しない。
## 終了Gate
検査cronは `production_ready=0` で終わる前に、未処理の `accepted_0B` がないか確認する。未処理の `accepted_0B` があるなら、明らかな架空サービス以外は `production_ready` へ回す。
`production_ready` かつ `task_code=2` が0件のまま終了できない。保存後はHub readbackで `production_ready` 件数、`task_code=2` queue件数、Search Compass、reader_intent_pack、inspection_sticky_notes、production_material_pack の保存を確認する。
## 報告
報告は日本語で短く、検査対象数、未消費0-B候補数、production_ready件数、明らかな架空サービス除外数、Search Compass/reader_intent_pack作成件数、保存行数、accepted/readback、次に制作cronが見るべき状態を書く。長いHTML、JSON、Hub export、ログ全文、秘密値は出力しない。
## v0.1.66 前記事を公開基準値にしないGate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK
前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
PROMPT_END
porn-fun【評価・NSFW AI】制作cron automation作成依頼文
【cron個別作成依頼文】
以下のautomationを1件だけ新規作成してください。
automation名:
porn-fun【評価・NSFW AI】制作
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- stage: production
- 役割: production_readyの新規1記事を制作する。既公開・task8 handoff済みslugは再制作/上書きせず、task2をdoneにして次候補へ進む。
共通no-touch:
- AIfan Hub、AIfan active cron、AIfan記事は触らない。
- porn-fun以外のサイトHubは触らない。
- 既公開記事本文を勝手に直さない。
- キー、トークン、認証値を出力しない。
- キー再発行を提案しない。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` は読ませない。
automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.5
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 最大3回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=9,15,22;BYMINUTE=34;BYSECOND=0`
- 起動時間メモ: 候補: 09:34 / 15:34 / 22:34 JST。制作run同士は最低3時間あけ、同一site/workflowで同時並行させない。
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
作成時の注意:
- 既存ACTIVE cronを確認してから時刻を確定する。
- この依頼文は実運用仕様であり、テスト用の週1回設定ではない。
- 名称に「テスト」を入れない。
- 作成後に name / id / status / rrule / model / cwd を報告する。
- 代表が「何点?」「Gate何点?」と聞いた場合も、自己採点だけで答えず、公開HTMLまたはpreview HTMLの実測結果で答える。
PROMPT_START
# porn-fun【評価・NSFW AI】制作
automation_id: porn-fun-nsfw-ai-3
site_id: porn-fun
workflow_id: porn-fun-nsfw-ai-generator-sites-ja
content_set: porn_fun_nsfw_ai_generator_sites
article_type: NSFW_AI
role: 制作
updated_at: 20260606-v0151-portable-site-hub-contained
---
# porn-fun【評価・NSFW AI】制作
porn-fun【評価・NSFW AI】制作 cron v0.1.66。
対象は `site_id=porn-fun` / `workflow_id=porn-fun-nsfw-ai-generator-sites-ja` / `content_set=porn_fun_nsfw_ai_generator_sites`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。
起動時にHub status / agent_pack / agent_work_queue / cron_preflight_resolve を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。
担当はSearch Compass / reader_intent_pack付き素材から新規記事を制作・公開し、task8へ渡すこと。収集・検査・高品質チェック・訂正・改善ハンドオフはしない。
制作cronは新規記事を書く。既存公開記事の本文修正、再公開、品質FAIL修正、訂正作業はしない。既存公開記事、task8以降の記事、高品質チェックでFAILになった記事、ready_for_correction記事、改善ハンドオフ候補を見つけた場合は、制作cronで直さず高品質チェック・訂正・改善ハンドオフへ渡す。制作cronが修正してよいのは、新規制作中で、まだ完了扱いにしていない同一run内の記事だけ。
制作順序は、素材確認、読者意図確認、装飾なし本文作成、自然化リライト、装飾付与、公開前確認、公開HTML実測、同一run内の新規記事修正、Hub保存、task8 handoffの順にする。作成した本文は読者が自然に読める文章へ直し、「評判は」「この評価レビューでは」型の不自然な入り方、評価軸羅列、作業メモ臭い文を残さない。
NSFW AI記事では、生成機能、料金、無料範囲、商用利用、権利、プライバシー、年齢制限、安全性、禁止事項、他ツール比較、導入前の注意を読者目線で扱う。違法・未成年・実在人物なりすまし・無断性的生成を推奨しない。本文は煽情的にしない。
必須FAIL条件: Search Compassなし、公開HTML未取得、`validator_result.json`なし/JSON破損/必須キー欠落/未測定あり、自己採点だけのPASS、固定true、H1とSEOタイトル未区分、弱いSEOタイトル、リード文1文/短すぎ/500字超/改行なし/リード内マーカーなし、右寄せ公式CTAなし、辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る、辞書表と重複する手書き基本情報表、4000字未満、KW/共起語/関連語不足、敬体自然文Gate違反、H2ばかりでH3不足、評価項目H3理由不足、Q&Aがqa-box5個未満、qa-question/qa-answer不足、Q&A回答が敬体でない、本文内FAQ JSON-LD/JavaScript/カスタムコード挿入、内部リンク1〜3本以外、外部リンク過多、有効装飾BOX3個未満、先に結論が有効BOXでない、装飾黄金比率不備、最低足切り未満、件数だけでPASS、重要でない箇所への装飾、読みづらい装飾、✅/⚠️混在長文、1行に複数✅/⚠️、文字化け、公式主機能未確認のカテゴリ選択、主機能と違うWPカテゴリ、曖昧カテゴリへの推測投入、カテゴリreadback未確認、NSFW/年齢/権利/プライバシー注意の欠落。
validator必須キーはGate正本に従う。特に `public_html_checked`、`validator_result_json_present`、`validator_json_parse_gate`、`validator_unmeasured_items`、`failed_gate_names`、`required_gate_failures`、`mandatory_gate_fail_count`、`quality_delta_items`、`pass_allowed`、`correction_required`、`naturalization_rewrite_gate`、`reference_style_gate`、`plain_style_gate`、`lead_plain_style_gate`、`body_plain_style_gate`、`qa_plain_style_gate`、`qa_box_exact_class_count`、`qa_box_required_structure_gate`、`body_internal_link_count`、`dictionary_score_table_present`、`manual_score_table_count`、`valid_style_box_count`、`first_conclusion_box_present`、`qa_box_count`、`decoration_golden_ratio_gate`、`official_primary_function`、`selected_wp_category_names`、`category_selection_gate`、`wp_category_readback_confirmed` は欠落があればFAIL。
制作cronが必須FAILを残したまま作業を終了してはならない。必須FAILは全て直してTASK8へ渡すまでが仕事!!
品質スコア証跡は `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` に従う。task8へ渡せるのは `final_quality_score>=90`、`score_cap=100`、必須FAIL0件の場合だけ。
本文構成は、評価スコア表、完結リード、右寄せ公式/アフィリエイトCTA、最初のH2の順にする。公式CTAは `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>` を基本にする。
本文リンクは本文領域だけで測る。サイドバー、フッター、関連記事、タグ、カテゴリ、Directory、TOC、プラグイン生成部品を内部リンク数に含めない。手書き外部リンクは原則リード後CTA1本を中心にし、公式サブページ直リンクは必要時のみ最大1〜2本程度にする。
カテゴリは公開前に公式サイト、機能ページ、料金ページ、ヘルプ、公式LP等から主機能を確認して選ぶ。NSFW AIでは `nsfw-ai` 系カテゴリを基本候補にするが、主機能が違う場合はPornfun Hubの許可カテゴリに従う。保存後はWP readbackで実カテゴリ一致を確認する。
validatorは全Gateを最後まで測り、全FAILを保存する。新規制作中の記事でFAILが残る限りtask8へ渡さず、制作内で直して再測定する。既存公開記事のFAILを見つけた場合は制作内で直さず、該当cronへ渡す。
報告は日本語のみで、対象記事、公開URL、保存行数、validator結果、task8 handoff、readback結果だけを書く。英語の内部メモや思考文を報告に混ぜない。FAILが残る場合は公開完了報告をしない。
追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。
## v0.1.46 流用Gate追加
Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE
公開本文境界を必ず守る。記事本文・見出し・FAQ・CTAには、Hub、cron、Gate、PASS/FAIL、Work Queue、agent_pack、作業ログ、タスク番号、301/移行などの内部運用語を書かない。これらはHub保存物とvalidator証跡へ残し、公開本文ではサービス内容に直接関係する読者向け表現へ置き換える。
NSFW AI記事では、公式URL、料金、無料範囲、プラン、クレジット/サブスク、決済、退会、年齢制限、規約、禁止事項、権利/商用利用、実在人物、無断性的生成、プライバシー、データ取扱い、アカウント停止リスクを確認してから本文化する。違法、未成年、非同意生成、実在人物なりすましを推奨しない。
評価項目は表だけで終わらせず、H2/H3本文でスコア理由、読者が確認すべき点、向いている人/注意点を書く。Directory Core/辞書プラグイン表と本文HTML手書き評価表・基本情報表を二重表示しない。
## v0.1.47 検査付箋素材の利用
Marker: 2026-06-06_PORNFUN_INSPECTION_RESEARCH_STICKY
制作cronは、検査cronが保存した共起語、関連語、KW、公式情報、口コミ情報、未確認付箋を読みます。これらを機械的に本文へ詰め込まず、読者向けの構成、注意点、FAQ、比較観点へ自然に反映してください。
口コミ、レビュー、評判、利用者の反応は公式情報と分けて扱い、断定しない表現にしてください。未確認付箋は断定せず、確認ポイントや注意点として扱ってください。
## v0.1.48 検査付箋の制作利用
Marker: 2026-06-06_PORNFUN_INSPECTION_PRODUCTION_READY_GATE
制作cronは `production_ready` だけを処理し、`inspection_sticky_notes` を本文制作の注意素材として読んでください。
`inspection_sticky_notes` にある現在状態、根拠URL、口コミ/悪評、未確認点、制作時の注意を確認し、口コミは断定せず、本文制作では根拠の弱さがわかる表現にしてください。
## v0.1.66 制作以降Fail-first品質Gate
Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE
制作cronは、上記v0.1.66 Gateを新規制作中の記事に必ず適用する。Search Compass、reader_intent_pack、KW、共起語、関連語、公式情報、口コミ/評判、inspection_sticky_notes、評価項目、FAQ候補を読まずに制作へ入らない。
評価スコア、基本情報、KW、共起語、関連語、Search Compass、reader_intent_pack、inspection_sticky_notes、公式情報、口コミ/評判を使っていない記事は保存しない。Directory Core/辞書プラグインが評価スコア表や基本情報表を表示する場合は、本文手書き表で二重表示しない。ただし公開HTMLまたはreadbackで読者に見えている証跡を残す。
公開前/公開後validatorで、4000字、冒頭構造、リード文、H2/H3評価理由、Q&A5件、✅/⚠️、必須box、KW/共起語/関連語、敬体自然文、H1/SEO、成人向け注意、公開本文境界を全部測る。FAIL、REPAIR、REVIEW、未測定、キー欠落があればtask8へ渡さず、同一run内で修正して再測定する。
## v0.1.66 制作 validator Gate Hotfix
Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX
制作cronの自己採点は信用しません。制作cronは公開HTMLまたはプレビューHTMLを取得して品質バリデータを必ず実行し、`validator_result.json` を保存してください。`validator_result.json` がない場合はPASS禁止です。task8へ渡す前に `validator_result_json_present=true` を確認してください。
制作cron以降の `validator_result.json` は、porn-funサイトHUBフォルダ内で完結させてください。支社PCへ持っていく対象は `HUB\porn-fun` フォルダだけです。成果物をこのフォルダ外へ出さないでください。
site Hub相対パス:
`runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json`
絶対パスとして扱う場合:
`{porn_fun_site_hub_root}\runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json`
`stage` は `production` / `quality_check` / `correction` / `improvement_handoff` のいずれかです。他サイト用パス、共有Hubパスへ保存しないでください。
制作cronは、本文制作・保存・task8 handoffの前にGate通過前提を機械的に確認してください。Gate正本に条件があるだけでは完了扱いしません。Gateを読んだ証跡、agent_pack上の機械Gate存在、validator必須キー、公開HTMLまたはプレビューHTML実測が揃わない場合は、制作を開始せず `BLOCKED_PRODUCTION_GATE_PREFLIGHT` として止めてください。
制作開始前に必ず読むGate:
- ARTICLE_QUALITY_GATE.md
- QUALITY_VALIDATOR_CONTRACT.md
- PRODUCTION_EVIDENCE_AND_SCORING_GATE.md
- ROLE_FAIL_CONDITION_GATE.md
- JAPANESE_SYNTAX_GATE.md
- PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md
- PORNFUN_CRON_TEMPLATE_GATE.md
制作開始前に残す証跡:
- gate_preflight_checked=true
- gate_preflight_status=PASS|BLOCKED
- gate_files_read
- gate_marker_versions_found
- agent_pack_v0149_gate_ids_found
- missing_gate_files
- missing_gate_markers
- blocked_reason
agent_pack上で少なくとも次のIDを確認してください。
- pornfun-v0149-production-onward-quality-chain-manual
- pornfun-v0149-fail-first-quality-rule
- pornfun-v0149-visible-qa-lead-marker-rule
- pornfun-v0149-score-axis-h3-keyword-rule
- pornfun-v0149-production-onward-validator-key-check
読めないGateや見つからないIDがある場合、本文生成、保存、公開、task8 handoffをしないでください。Search Compass、reader_intent_pack、production_material_pack、inspection_sticky_notesを読んでいない場合も制作開始禁止です。
保存前にはvalidator_result.jsonを作り、公開HTMLまたはプレビューHTMLで、評価スコア、基本情報、4000字、H2/H3評価理由、KW/共起語/関連語、Search Compass、reader_intent_pack、inspection_sticky_notes、Q&A5件、必須box、✅/⚠️、敬体自然文、H1/SEO、NSFW注意、公開本文境界を実測してください。未測定、空値、REVIEW、REPAIR、FAIL、キー欠落がある場合はPASS禁止です。
敬体自然文Gateは機械判定にしてください。公開HTML本文から、だ・である調、命令調、作業メモ調、確認丸投げ文、内部語の残存を数え、読者へ説明する自然な敬体になっていない場合はREPAIRまたはFAILにしてください。自己申告の「敬体OK」だけではPASSにしません。`polite_natural_style_gate`、`plain_style_violation_count`、`filler_confirmation_sentence_count`、`reader_facing_rewrite_result` を必ず保存してください。
代表から「何点?」「Gate何点だった?」「100点なのか?」と聞かれた場合でも、作業ログ上の自己採点だけで回答しないでください。公開HTMLまたはプレビューHTMLを再取得し、title/H1、文体、リード文、リンク、FAQ JSON-LD、装飾、Hub readbackを実測してから `raw_quality_score` / `score_cap` / `final_quality_score` を答えてください。実測できない場合は「未実測のため点数確定不可」と答え、100点/PASSを断定しないでください。
必須証跡として、`artifact_path_gate_version`、`artifact_root`、`artifact_stage`、`artifact_type`、`artifact_key`、`artifact_json_path`、`artifact_json_present`、`artifact_sha256`、`artifact_saved_at`、`accepted`、`readback_confirmed`、`lead_pattern_model`、`reference_urls_checked`、`lead_candidate_a_service_definition`、`lead_candidate_b_reader_decision`、`lead_candidate_c_value_plus_condition`、`selected_lead`、`selected_reason`、`lead_chars`、`lead_sentence_count`、`body_natural_language_result`、`awkward_public_phrases`、`reader_facing_rewrite_examples`、`quality_answer_gate_version`、`public_or_preview_html_refetched`、`validator_result_json_present`、`validator_result_json_path`、`validator_final_score`、`validator_fail_items`、`plain_style_violation_count`、`polite_natural_style_machine_result`、`quality_delta_items`、`score_cap_reasons` を保存してください。
報告には gate_preflight_status、読んだGateファイル数、v0.1.66機械Gate ID確認数、validator必須キー確認結果、公開HTMLまたはプレビューHTML実測結果を必ず含めてください。これらがない報告は、制作成功報告ではありません。
## v0.1.66 portable site Hub contained hotfix
Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED
Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.
For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json`
Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.
## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate
Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。
- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`
Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。
validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。
## v0.1.66 必須FAIL条件 全文明示Gate
Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。
- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 敬体自然文Gate違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答が敬体でない
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認
`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。
Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。
## v0.1.66 装飾比率・CTA・KW・リード文 Gate
Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。
### 装飾比率
- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。
### リード文と公式CTA
- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。
### KW・共起語・関連語
- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。
### ✅/⚠️ Gate
- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。
## v0.1.66 見本URL継承Gate
Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS
制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。
### Reference Inheritance URLs
1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/
### 必須運用
- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。
## v0.1.66 前記事artifact流用禁止Gate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION
制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
### 必須証跡
- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`
`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。
## v0.1.66 前記事を公開基準値にしないGate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK
前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
## v0.1.66 NSFW AI評価記事 既存カテゴリ固定Gate
Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE
このルールは、NSFW AIの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。
NSFW AIの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。
### 必須
- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がNSFW AI系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。
### FAIL/REPAIR
- NSFW AI評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- NSFW AI評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。
上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。
## v0.1.66 リード自然文・主語述語Gate
Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE
高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。
NG例:
`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`
### 何がおかしいか
- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。
### 必須判定
- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。
### 修正文の方向
- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`
### 必須証跡
- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`
上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。
## v0.1.66 記事全文・自然文Gate
Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE
不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。
### 検査対象
- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文
### FAIL/REPAIR条件
- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。
### 制作cronの必須工程
- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。
### 高品質チェックcronの必須工程
- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。
### 訂正cronの必須工程
- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。
### 必須証跡
- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`
必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。
## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate
Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE
制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。
### 既公開・handoff済みslugで制作cronがやること
- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。
### FAIL/REPAIR
- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。
### 必須証跡
- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`
既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。
## v0.1.66 Q&A details exact Gate
Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE
Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:
```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```
This means:
- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.
FAIL conditions:
- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.
Production cron:
- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.
Quality check cron:
- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.
Correction cron:
- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.
Required evidence:
- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`
Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.
## v0.1.66 Mandatory public/preview HTML measurement Gate
Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE
This is a production-onward no-escape Gate for porn-fun NSFW AI review articles.
Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.
Core rule:
- If any required item from the current porn-fun Gates is missing, unmeasured,
JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
narrative explanation. It must appear in `failed_gate_names`,
`required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
forbidden unless `mandatory_public_html_measurement_gate=PASS`.
The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.
Required public/preview HTML measurements:
- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `polite_natural_style_machine_gate`
- `plain_style_violation_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`
Required non-HTML/readback/source-artifact measurements:
- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`
Every measured item must include evidence details:
- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`
Escape blockers:
- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
task8-handoff slugs; it must consume stale task2 and select a new eligible
candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
returning the article to task8.
NSFW AI category/readback:
- NSFW AI review articles must use the existing directory category
`https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
applies.
- NSFW AI review articles must use the existing directory type
`https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
FAIL.
- Category/type readback must be measured after save/publish.
Final validator rule:
- `mandatory_public_html_measurement_gate=PASS` only when all required measured
gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
`mandatory_public_html_measurement_gate=FAIL`,
`pass_allowed=false`, `correction_required=true`, and save the missing item in
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
## v0.1.66 Hard-stop repair loop Gate
Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE
Scope: porn-fun NSFW AI review articles, production and later.
This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.
Hard FAIL names that must stop the run:
- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`
Dictionary plugin table hard stop:
- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
look good.
- Required evidence:
- `directory_plugin_rating_score_table_gate=PASS`
- `directory_plugin_basic_info_table_gate=PASS`
- `directory_plugin_rating_score_table_source=public_html|preview_html`
- `directory_plugin_basic_info_table_source=public_html|preview_html`
- `directory_plugin_rating_score_table_selector`
- `directory_plugin_basic_info_table_selector`
- `directory_plugin_rating_score_table_sample`
- `directory_plugin_basic_info_table_sample`
- `manual_score_table_count=0`
- `manual_basic_info_table_count=0`
H1 and SEO title hard stop:
- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
confusion, or unmeasured title is FAIL.
- Required evidence:
- `h1_text`
- `seo_title_text`
- `h1_selector`
- `seo_title_source=title_tag|seo_meta|preview_html`
- `seo_title_h1_separated_gate=PASS`
- `seo_title_strength_gate=PASS`
- `h1_gate=PASS`
- `seo_title_fail_reasons=[]`
Quality-check recording hard stop:
- If any of the following conditions is detected, quality_check itself is FAIL
unless the exact FAIL name is saved in all three arrays:
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
`DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
`DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
`SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
`SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Production publish/task8 hard stop:
- Production cron must not publish, mark task8-ready, hand off, or complete when
public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
publish/task8 handoff.
- If public/preview HTML measurement is missing, set
`PUBLIC_HTML_MEASUREMENT_MISSING` and stop.
Q&A hard stop remains:
- Visible article body must contain at least 5 exact Q&A sets using this structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
or class counts alone do not count.
Mandatory repair loop:
1. If production, quality_check, correction, or improvement_handoff finds any
required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
related to that FAIL and reread those target Gate/manual files in full before
deciding the repair. Partial excerpts, memory-only handling, or "already know"
is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
`validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
reader-perspective check -> public/preview HTML measurement -> validator save
until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
- `mandatory_gate_fail_count=0`
- `required_gate_failures=[]`
- `validator_unmeasured_items=[]`
- `mandatory_public_html_measurement_gate=PASS`
- `hard_stop_repair_loop_gate=PASS`
Required loop evidence:
- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`
If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.
Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.
## v0.1.66 Internal link live 200 Gate
Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE
Scope: porn-fun NSFW AI review articles, production and later.
Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.
Hard FAIL names:
- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`
Rule:
- Production, quality_check, correction, and improvement_handoff must extract all
internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.
Required evidence:
- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`
Quality-check recording hard stop:
- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
three arrays: `failed_gate_names`, `required_gate_failures`, and
`quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
`QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Repair loop:
- If any internal link FAIL appears, reread the target Gate/manual in full,
repair the link, refetch public or preview HTML, rerun link checks, rerun the
validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
remain.
## v0.1.67 読者実用性・敬体自然文・第三者上位10サイト必須強化Gate
Marker: 2026-06-23_PORNFUN_NSFW_AI_READER_VALUE_POLITE_TOP10_GATE
このv0.1.67は、560の制作cron本文の中で直接効く追加Gateです。Hub、README、別Gate名だけを参照させず、制作cronがこの記事本文を書くときに必要な判断基準をここへ展開します。この記事は構造を満たすだけではPASSにしません。読者が「料金、無料枠、使える機能、登録前に見るべき条件、他社比較、解約や支払いの注意点」を理解できる記事になっていない場合は、公開していてもREPAIRまたはFAILです。
### 0. 適用範囲: PromptChanだけではなく全NSFW AI評価記事に適用
このGateは、PromptChanだけに適用するものではありません。`porn-fun【評価・NSFW AI】制作` が作るすべての新規記事、すべてのslug、すべてのNSFW AI評価スコア記事に適用します。PromptChanは代表が指摘した失敗例であり、制作cronが今後同じ薄さを繰り返さないための具体例です。
制作対象がAI画像生成、AI動画生成、NSFWチャット、AI彼女、成人向けキャラクター生成、プロンプト補助、ギャラリー型サービス、生成AIマーケットプレイスのどれであっても、次の判断を必ず行います。
- この記事は何の記事か。
- 読者はこの記事で何を判断できるか。
- 料金プラン、無料枠、有料枠、登録、退会、決済、返金/解約条件、できること、できないこと、他社比較、他社ツール比較、安全性、プライバシー、禁止事項、AEO Q&A、AEO向けQ&Aが記事内にあるか。
- 第三者上位10サイト、Search Compass、関連検索、サジェスト、質問系ニーズを材料化しているか。
- 公式情報と第三者情報を分け、確認不能を言い訳にした薄い文章で逃げていないか。
PromptChanという語がこのGate内に出てきても、それは「例」です。制作cronは対象サービス名へ置き換えて考えます。別サービスの記事で、PromptChanだけに固有の料金、機能、退会方法、競合名、画面仕様を流用してはいけません。逆に、PromptChan以外の記事だからといって、第三者上位10サイト確認、料金/無料枠/有料枠/入会/退会/決済/比較/AEOの必須項目を省略してはいけません。
全記事適用のvalidator必須キー:
- `all_nsfw_ai_articles_scope_gate=PASS`
- `promptchan_example_only_understood=true`
- `target_service_specific_rewrite_done=true`
- `target_service_specific_pricing_features_cancel_payment_comparison_done=true`
- `third_party_top10_checked_for_target_service=true`
- `promptchan_specific_leak_count=0` を、対象サービスがPromptChan以外の場合は必ず確認します。
### 1. 文章トーンは敬体の自然文に統一
このworkflowの記事本文は、旧来のだ・である調ではなく、読者へ説明する自然な敬体で書きます。本文、リード文、先に結論、評価理由、注意点、Q&A、まとめ、CTA前後の説明は「です」「ます」「できます」「確認できます」「向いています」「注意が必要です」を基本にします。成人向けテーマでも、煽り、断定しすぎ、作業メモ調、翻訳調、内部向けの短文をそのまま出してはいけません。
敬体自然文Gateで止める例:
- 「PromptChanは、成人向けAI画像を作る目的で比較されやすいAIポルノジェネレーターだ。」のように、読者へ向けた記事なのに語尾が硬く、具体材料も薄い文。
- 「公式ページや料金ページは取得時点で非ログイン確認しずらいため、登録前には現行の料金、無料枠、規約、プライバシー、禁止事項を画面上で見直したい。」のように、作業者都合を読者へ押し付け、何が分かる記事なのかを説明していない文。
- 「生成できそうかだけで決めず、自分の画面で読めるかまで見るほうがよい。」のように、読者が知りたい料金、機能、登録、退会、比較を出さず、確認しろだけで終わる文。
- 「非ログインでは確認しづらい」「取得時点では不明」「画面上で見直したい」を連発して文字数を稼ぐ文。
- 「〜という形です」「〜となっています」「〜について解説します」を連続させ、具体的な条件や判断材料が出ない文。
敬体自然文Gateで求める書き方:
- 1文ごとに読者が得る情報を入れます。料金、無料枠、生成機能、画像/動画/チャットの対応範囲、プロンプト指定、年齢確認、支払い、解約、商用利用、禁止事項、プライバシー、競合比較のどれかに触れていない段落が続く場合は薄い記事です。
- 「何の記事か」「何が分かるか」「誰に役立つか」をリードで自然に示します。リードは作業者の確認報告ではなく、読者の判断を助ける入口です。
- 先に結論は、抽象的な感想ではなく、読者が登録前に知りたい要点を5から7項目で具体化します。機能、料金、無料枠、有料プラン、支払い、退会、比較のうち最低5項目を含めます。
- Q&Aは読者の質問に直接答えます。「確認してください」だけでは回答になりません。確認が必要な場合も、何を、どこで、なぜ見るのかまで書きます。
- 記事本文に `workflow`、`agent_pack`、`validator_result`、`production_ready`、`runtime`、`Directory Core`、`Gate`、`作業メモ`、`Search Compassの列挙` を出してはいけません。内部語は証跡にだけ残し、公開本文には読者向けの言葉へ翻訳します。
機械判定:
- `polite_natural_style_gate=PASS` が必須です。
- `plain_style_violation_count` は、本文領域内の「だ。」「である。」「〜すべきだ。」「〜といえる。」など旧文体の残存を数えます。成人向け固有名詞、引用、商品名を除いて1件以上ならREPAIRです。
- `filler_confirmation_sentence_count` は、「確認しづらい」「確認したい」「画面上で見直したい」「取得時点」「読めない部分がある」のような確認丸投げ文を数えます。説明に必要な1回を超える場合はREPAIR、2回以上連続ならFAILです。
- `reader_facing_rewrite_result=PASS` が必須です。内部メモを読者文へ翻訳した証跡を保存します。
- スタイル判定は新しい敬体自然文キーだけで行います。PASS条件は `polite_natural_style_gate`、`plain_style_violation_count`、`reader_facing_rewrite_result` で判断します。
### 2. リード文Gate: この記事で何が分かるかを先に伝える
リード文は評価スコア表の後、右寄せ公式/アフィリエイトCTAの前に置きます。2から3文、100から500字を目安にし、1文1段落または1文1行で読みやすくします。リード文は、サービス名の言い換えや「登録前に確認しましょう」だけで終わらせません。
リードに必ず入れる要素:
- この記事が、対象サービスの評判・料金・機能・安全性・使い方を確認するレビュー記事だと自然に分かること。
- 読者がこの記事で、無料枠と有料枠の違い、料金プラン、生成できる内容、登録方法、退会方法、決済方法、他社ツールとの比較を確認できると分かること。
- NSFW AIの場合は、成人向けAI画像/動画/チャットなど対象サービスの主機能を誤らず書くこと。画像生成サービスをチャットサービスのように書く、動画生成がないのに動画対応と書く、無料枠が不明なのに無料で使えると断定することは禁止です。
- 読者の不安に近い項目を1つ入れること。たとえば、支払い前の料金確認、プライバシー、生成物の扱い、禁止コンテンツ、退会や自動更新、他社比較のどれかを自然に入れます。
- 黒太字+黄色アンダーマーカーを1か所以上使い、読者の判断ポイントを示すこと。
悪いリード例:
「PromptChanは成人向けAI画像を作る目的で比較されやすいサービスです。公式ページや料金ページは取得時点で非ログイン確認しづらいため、登録前には現行の料金や規約を画面上で見直したいです。」
この例がFAILの理由:
- 記事で何が分かるのかが分かりません。
- 料金、無料枠、有料枠、機能、登録、退会、決済、比較の材料がありません。
- 「確認しづらい」「見直したい」で文字数を稼いでいます。
- 読者にとって、読み進める理由がありません。
良いリードの方向性:
「PromptChanの評判を調べている方に向けて、この記事では成人向けAI画像生成で使える主な機能、料金プラン、無料枠と有料枠の違い、登録前に確認したい請求条件を整理します。画像生成の自由度だけでなく、プロンプト指定、決済方法、解約手順、プライバシー、他のNSFW AIツールとの違いまで確認できるため、<span class="marker-under"><b>支払い前に自分に合う使い方か判断しやすくなります</b></span>。」
この方向性を丸写ししないでください。対象サービスごとの実データ、料金、機能、無料枠、上位ページの質問、第三者レビューで多く触れられている論点へ必ず差し替えます。
リード文のvalidator必須キー:
- `lead_article_purpose_present`
- `lead_content_scope_present`
- `lead_reader_benefit_present`
- `lead_pricing_or_free_scope_present`
- `lead_feature_scope_present`
- `lead_comparison_or_safety_present`
- `lead_marker_under_present`
- `lead_filler_sentence_count`
- `lead_polite_style_gate`
### 3. 先に結論Gate: 抽象論を禁止し、読者の判断材料を出す
【先に結論】は記事冒頭で最も読まれる部分です。ここが薄いと記事全体が薄く見えます。制作cronは、結論BOXの中に「何ができる」「誰に向く」「無料枠と有料枠」「料金や支払い」「注意点」「他社比較での位置づけ」を具体的に入れてください。
必須項目:
- 対象サービスの主機能。例: 成人向けAI画像生成、NSFWキャラクター生成、AIチャット、動画生成、プロンプト補助、スタイル選択、ギャラリー、保存、クレジット消費など。
- 料金プラン。無料枠、月額/年額、クレジット制、上位プラン、有料限定機能、課金前に見るべき自動更新や返金条件を、取得できた範囲で書きます。
- 無料枠と有料枠の違い。生成回数、画質、待ち時間、NSFW解放範囲、保存/商用利用、ウォーターマーク、クレジット、サポートなど、比較できる軸を入れます。
- 登録方法。メール、Google/Discord連携、年齢確認、ログイン後の初期設定、支払い前に見える画面を確認します。
- 退会/解約方法。アカウント設定、サブスクリプション管理、決済会社側のキャンセル、退会と課金停止の違い、返金可否の確認点を書きます。
- 決済方法。クレジットカード、PayPal、暗号資産、外部決済、プリペイド可否などを公式または画面で確認します。確認不能なら「公式で確認できた範囲」を明記し、第三者情報だけで断定しません。
- 他社比較・他社ツール比較。最低3サービスと比べ、生成品質、料金、無料枠、使いやすさ、NSFW対応範囲、プライバシーの違いを書きます。
薄い結論のFAIL例:
- 「PromptChanはAIポルノジェネレーターとして比較されやすいです。」
- 「料金や規約を登録前に確認しましょう。」
- 「安全性を重視する方は注意が必要です。」
- 「無料で使えるかは公式で確認してください。」
上の文は、どれも読者が判断できる材料を持っていません。結論BOXには、検索上位ページや公式情報で確認した具体材料を入れます。
先に結論のvalidator必須キー:
- `conclusion_box_present`
- `conclusion_feature_detail_count`
- `conclusion_pricing_detail_present`
- `conclusion_free_paid_difference_present`
- `conclusion_signup_or_cancel_detail_present`
- `conclusion_payment_method_present`
- `conclusion_competitor_comparison_present`
- `conclusion_filler_only_result=FAIL|PASS`
### 4. Search Compassと第三者上位10サイトの材料化Gate
制作cronはSearch Compassを必ず使います。さらに、対象サービス名と関連KWで第三者サイト上位10ページを確認し、記事本文に使える材料へ分解します。第三者情報が0件でも制作停止はしませんが、0件だった証跡、検索語、取得結果、代替材料を残し、公式情報、関連カテゴリ上位、競合比較、SNS/レビュー系ページの範囲で補完します。
検索するKW例:
- `サービス名 review`
- `サービス名 reviews`
- `サービス名 pricing`
- `サービス名 free`
- `サービス名 alternative`
- `サービス名 cancel subscription`
- `サービス名 payment methods`
- `サービス名 safety`
- `サービス名 privacy`
- `サービス名 評判`
- `サービス名 料金`
- `サービス名 使い方`
- `サービス名 解約`
- `サービス名 安全性`
- `サービス名 無料`
- `サービス名 NSFW AI`
- `サービス名 AI porn generator`
- `サービス名 adult AI image generator`
第三者上位10ページから必ず抽出する項目:
- title
- H1
- meta description
- H2からH4
- 本文で繰り返される評価軸
- 料金や無料枠への言及
- できること、できないこと
- 登録、支払い、解約への言及
- プライバシー、安全性、禁止事項への言及
- 競合サービス名
- 読者の質問形式ニーズ
- 関連検索、サジェスト、People Also Ask相当の質問
- 公式情報と矛盾する点
材料化の順番:
1. 検索意図をまとめます。読者は評判を知りたいのか、無料で使えるか知りたいのか、料金を比較したいのか、退会や安全性を不安に思っているのかを分けます。
2. 上位構成を見ます。上位ページの見出しで多い順に、料金、機能、使い方、危険性、代替サービス、Q&Aなどを整理します。
3. 必要トピックを決めます。公式情報、第三者レビュー、関連検索、サジェストを合わせ、記事に入れるべきH2/H3を作ります。
4. 不足情報を洗い出します。公式で取得できない料金、ログイン後だけ見える無料枠、退会方法、決済方法などは、未確認のまま断定せず、確認ポイントとして具体的に書きます。
5. 共起語・関連語を作ります。AI画像生成、NSFW、成人向け、プロンプト、クレジット、サブスクリプション、無料プラン、有料プラン、プライバシー、禁止コンテンツなど、対象サービスに合わせて自然に使います。
6. 差別化要素を決めます。PromptChanなら、成人向けAI画像生成に特化した比較軸、競合との料金/機能差、無料枠や生成品質、退会/支払い確認のしやすさを本文の軸にします。
Search Compass / 第三者上位10サイトのvalidator必須キー:
- `search_compass_used=true`
- `search_compass_url`
- `search_compass_query_set`
- `serp_top10_checked=true`
- `serp_top10_query`
- `serp_top10_result_count`
- `serp_top10_third_party_count`
- `serp_top10_official_count`
- `serp_top10_materialized_items`
- `serp_title_h1_meta_h2h4_extracted=true`
- `serp_body_needs_extracted=true`
- `related_search_suggest_questions_extracted=true`
- `search_intent_summary_present=true`
- `top_structure_summary_present=true`
- `required_topic_list_present=true`
- `missing_info_list_present=true`
- `cooccurrence_related_terms_present=true`
- `differentiation_points_present=true`
第三者上位10ページの扱い:
- 公式情報と第三者情報が矛盾する場合、公式の現在情報を優先します。ただし、第三者ページで読者が不安にしている論点は本文に反映します。
- 第三者ページのランキングや評点を丸写ししません。抽出するのは読者ニーズ、比較軸、見出し構成、質問、料金や機能への言及です。
- 口コミやレビューの断定をそのまま事実として書きません。「第三者レビューでは○○が論点になりやすい」のように扱い、公式確認できた範囲と分けます。
- 10件取得できない場合は、取得できた件数、検索語、0件だった語、代替で見た関連カテゴリ/競合ページを記録します。第三者情報0件だけを理由に制作停止しません。
### 5. PromptChanのような記事を書く場合の必須密度
PromptChanや類似NSFW AIサービスの記事では、以下の情報を本文へ自然に入れてください。すべてを確認できない場合も、確認できた情報、確認できなかった情報、読者が登録前に見るべき画面を分けて書きます。確認不能を理由に空文を増やしてはいけません。
PromptChan系で必ず見る項目:
- 公式トップページ、料金ページ、ログイン前に見えるプラン情報。
- サインアップ導線、年齢確認、メール認証、外部ログインの有無。
- 無料枠の有無、無料生成回数、無料で使えるモデルや画質、有料限定機能。
- 有料プラン名、月額/年額、クレジット制、上位プラン、割引、返金、キャンセル、自動更新。
- 決済方法。カード、PayPal、外部決済、暗号資産、請求名、決済前の確認画面。
- 生成できる内容。画像、動画、チャット、キャラクター、スタイル、ポーズ、画像アップロード、ギャラリー、保存、履歴、商用利用。
- 生成できない内容。未成年、実在人物、非同意、違法コンテンツ、暴力、個人情報、プラットフォーム禁止事項。
- プライバシー。生成画像の保存、公開範囲、学習利用、削除方法、アカウント削除、問い合わせ方法。
- 退会/解約。アカウント設定、サブスク管理、決済会社側キャンセル、退会後のデータ削除、未使用クレジットの扱い。
- 他社比較。DreamGF、Candy AI、SoulGen、PornX、OnlyWaifus、その他同カテゴリと、料金、無料枠、画像品質、操作性、NSFW制限、決済の分かりやすさで比較します。
PromptChan系の記事で薄いと判定する条件:
- 料金表がない、または料金が不明なのに「確認してください」だけで終わる。
- 無料枠と有料枠の差が書かれていない。
- 入会方法と退会方法がない。
- 決済方法がない。
- 何が作れるかが「成人向けAI画像」程度で終わり、プロンプト、スタイル、生成枚数、画質、保存、制限の説明がない。
- 他社比較が1社以下、または「他社と比較しましょう」だけで終わる。
- Q&Aが一般論だけで、料金、無料枠、解約、安全性、商用利用、禁止事項に答えていない。
- 公式情報と第三者情報の区別がない。
- AEO向けQ&Aがなく、読者の質問に直接答えていない。
PromptChan系の本文構成例:
- H2: PromptChanとは何ができるNSFW AIツールですか
- H2: PromptChanの料金プランと無料枠
- H3: 無料で使える範囲
- H3: 有料プランで増える機能
- H3: クレジット制や自動更新の確認ポイント
- H2: PromptChanの使い方と登録手順
- H3: アカウント作成の流れ
- H3: 画像生成までの基本手順
- H3: プロンプト入力で確認したい項目
- H2: PromptChanの退会・解約方法
- H3: サブスクリプション停止とアカウント削除の違い
- H3: 返金や未使用クレジットの確認
- H2: PromptChanの安全性・プライバシー・禁止事項
- H2: PromptChanと他社NSFW AIツールの比較
- H2: PromptChanが向いている人・向いていない人
- H2: PromptChanの評判でよくある質問
- H2: まとめ
この構成は固定ではありません。Search Compass、上位10ページ、公式情報、読者ニーズに合わせて並び替えます。ただし料金、無料枠、有料枠、入会、退会、決済、比較、AEO Q&Aを落とした構成はFAILです。
### 6. 公式情報と第三者情報の使い分け
公式情報:
- 料金、プラン、機能、禁止事項、プライバシー、返金、退会、対応範囲、支払い方法は公式情報を最優先します。
- 公式ページがログイン前に取得できない場合は、「公式で確認できた範囲」と「登録後に確認が必要な範囲」を分けます。
- 「非ログインで確認しづらい」を何度も書かず、確認すべき項目を表や箇条書きにします。
- 公式ページの更新日や取得日を証跡に残し、本文では必要な場合だけ自然に触れます。
第三者情報:
- 第三者レビューは、読者ニーズ、比較軸、使い勝手への評価、料金への不満、代替サービス、Q&Aの材料として使います。
- 公式で確認できない料金や解約情報を、第三者情報だけで断定しません。
- 第三者サイトが古い場合は、本文で断定に使わず、上位ページでその論点が出ていることだけ材料化します。
- 第三者情報が0件でも制作停止しません。公式情報、関連カテゴリ上位、競合比較、検索サジェスト、質問系ニーズを使い、0件だったことを証跡に残します。
本文内の書き分け例:
- 公式確認済み: 「公式料金ページでは、月額プランと上位プランが案内されています。」
- 第三者レビュー由来: 「第三者レビューでは、生成品質や支払い条件の分かりやすさが比較ポイントとして挙がりやすいです。」
- 未確認: 「ログイン後にだけ表示される無料枠やキャンセル画面は、登録前に支払い画面で確認してください。」ただし、この文だけで終わらせず、確認する項目を具体的に並べます。
### 7. 情報密度Gate: 具体的な数値・条件・範囲を入れる
記事本文では、次のうち取得できる項目を必ず具体化します。抽象的な「便利」「高機能」「安全」「比較しやすい」だけではPASSにしません。
必須具体化項目:
- 料金: 月額、年額、クレジット、無料枠、割引、上位プラン、返金、自動更新。
- 機能: 画像生成、動画生成、チャット、キャラクター作成、プロンプト入力、ネガティブプロンプト、スタイル、画質、履歴、保存、公開/非公開。
- 対応範囲: NSFW対応、成人向け制限、利用可能地域、対応デバイス、ブラウザ、言語。
- 注意点: 禁止コンテンツ、年齢、実在人物、著作権、プライバシー、請求、退会、データ削除。
- 比較材料: 競合名、無料枠、料金、生成品質、操作性、制限、支払い、退会しやすさ。
- 手順: 登録、生成、支払い、解約、アカウント削除、問い合わせ。
各H2/H3の本文には、最低1つ以上の具体材料を入れます。具体材料がないH2/H3は、見出しを消すか、材料を追加してから公開します。H2だけで浅く流す記事は禁止です。H3は読者の判断軸を深掘りするために使います。
対象ブロック文字数:
- 制作cron依頼文のこのブロック自体は50,000字以上を維持します。
- 制作される記事本文は最低4,000字では足りない場合があります。NSFW AI評価記事では、料金、無料枠、有料枠、入会、退会、決済、比較、Q&Aまで書くため、本文領域は原則7,000字以上を目安にします。
- 4,000字を超えていても、料金表、無料/有料差、登録/退会、支払い、比較がない場合は薄い記事としてREPAIRです。
### 8. AEO / Q&A Gate
AEOを意識し、読者の質問に短く直接答えるQ&Aを本文内に置きます。Q&Aは `details.qa-box`、`summary.qa-question`、`div.qa-answer` の正しいHTML構造で5件以上、NSFW AIレビューでは原則8から12件を目安にします。FAQ JSON-LDやscriptは本文Q&Aとして数えません。
Q&Aに入れる質問例:
- 対象サービスは無料で使えますか。
- 有料プランでは何が変わりますか。
- 料金はいくらですか。
- 支払い方法は何に対応していますか。
- 解約や退会はどこからできますか。
- 生成した画像は公開されますか。
- 禁止されている生成内容はありますか。
- スマホでも使えますか。
- 他のNSFW AI画像生成ツールと何が違いますか。
- 初心者でも使いやすいですか。
- 商用利用できますか。
- 安全性やプライバシーで注意する点はありますか。
Q&Aの回答は禁止:
- 「公式で確認してください」だけ。
- 「場合があります」だけ。
- 「安全に使えるかは人によります」だけ。
- 料金、無料枠、解約、支払い、禁止事項の質問に具体的な確認項目を書かないこと。
Q&A validator必須キー:
- `qa_box_count`
- `qa_question_count`
- `qa_answer_count`
- `qa_pricing_question_present`
- `qa_free_plan_question_present`
- `qa_cancel_question_present`
- `qa_payment_question_present`
- `qa_privacy_question_present`
- `qa_comparison_question_present`
- `qa_answer_filler_only_count`
### 9. 装飾ルールと右側CTA
装飾は読者の判断を助ける場所にだけ使います。装飾BOX、太字、マーカー、内部リンク、CTA、Q&A、まとめを自然に使ってください。装飾の数だけでPASSにしません。読者が料金、注意点、比較、手順を読み取りやすくなる配置にします。
装飾ルール:
- 黒太字は重要語や判断軸に使います。
- 赤太字は注意点、禁止事項、自動更新、返金不可、未成年/非同意/実在人物などの危険な誤解を止める箇所に限定します。
- 黄色アンダーマーカー `span class="marker-under"` は、リードや先に結論で読者が最初に押さえる判断ポイントに使います。
- 装飾BOXは3個以上。先に結論BOX、注意点BOX、向いている人/向いていない人BOX、料金確認BOX、解約確認BOXなど、記事内容に合うものを置きます。
- 1段落内に装飾を詰め込みすぎません。装飾は本文を読む補助であり、装飾の連打で文字数を稼ぎません。
- ✅/⚠️を同じ長文に混在させません。1行に複数の✅/⚠️を置かず、短く読み分けられる形にします。
- 内部リンクは本文領域で1から3本を原則にし、公開HTTP 200の最終URLだけ使います。関連記事、サイドバー、Directory、TOC、タグ、カテゴリは内部リンク数に含めません。
- 外部リンクは原則、リード後の右側CTA1本を中心にします。公式サブページ直リンクは必要な場合のみ最大1から2本に抑え、nofollow/noopenerを付けます。
右側CTAの基本形:
`<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
右側CTAルール:
- アンカーテキストはサービス名だけにします。「公式サイトはこちら」「無料で試す」「安全に確認する」など長いCTA文をアンカーにしません。
- CTA前後の文章で、何を確認するべきかを説明します。アンカー内に説明を詰めません。
- 公式URLまたはアフィリエイトURLが確認できない場合は、無理にCTAを置きません。置けない理由を証跡に残します。
- 右寄せCTAは評価スコア表、リード文の後、最初のH2の前に置くのが基本です。
- 公開HTMLで右側CTAが本文領域に出ているか測定します。サイドバーや広告CTAは数えません。
CTA validator必須キー:
- `right_cta_present`
- `right_cta_count`
- `right_cta_anchor_text`
- `right_cta_anchor_is_service_name_only`
- `right_cta_url`
- `right_cta_final_status`
- `right_cta_rel_nofollow_noopener`
- `right_cta_position_after_lead_before_first_h2`
### 10. 見本18URL継承Gate
制作cronは下記18URLを、記事の流れ、リード文、先に結論、右側CTA、装飾バランス、H2/H3の深さ、Q&A、まとめの参照材料として扱います。丸写しは禁止です。対象サービスの実データに置き換え、NSFW AI記事に合う形で継承します。
- https://invest358.com/ja/errante-review/
- https://invest358.com/ja/thinkmarkets-review/
- https://invest358.com/ja/baba-option-review/
- https://invest358.com/ja/blueberryfunded-review/
- https://invest358.com/ja/thinkcapital-review/
- https://porn-fun.com/ja/ai-exotic-review/
- https://porn-fun.com/ja/ai-girlfriend-review/
- https://porn-fun.com/ja/fc2-contents-market-review/
- https://porn-fun.com/ja/gboys-tokyo-hot-review/
- https://porn-fun.com/ja/maniacmax1-review/
- https://porn-fun.com/ja/post-28-review/
- https://porn-fun.com/ja/s-cute-review/
- https://aifan.io/ja/pixverse-ai-review/
- https://aifan.io/ja/dream-machine-review/
- https://aifan.io/ja/openart-ai-review/
- https://aifan.io/ja/leonardo-ai-review/
- https://aifan.io/ja/vidu-ai-review/
- https://aifan.io/ja/pollo-ai-review/
見本18URLから継承する観点:
- 評価記事の冒頭で、読者が知りたい条件を先に示す流れ。
- リード文で「何の記事か」「何が分かるか」「誰に向くか」を自然に案内する書き方。
- 先に結論BOXで、強み、注意点、料金、比較、向いている人を具体化する書き方。
- 右側CTAを短く置き、前後の本文で確認項目を説明する形。
- H2/H3を使って、料金、機能、手順、注意点、比較、Q&Aへ自然につなげる構成。
- 太字、赤太字、黄色アンダーマーカー、装飾BOXを読みやすく使うバランス。
- Q&Aを読者の実際の質問として書き、回答を直接返す形。
- まとめで、本文の判断軸を回収し、読者の次の確認行動を明確にする流れ。
見本18URL validator必須キー:
- `reference_18_urls_present=true`
- `reference_18_checked_count=18`
- `reference_18_no_copy_result=PASS`
- `reference_inherited_elements`
- `reference_reader_flow_applied=true`
- `reference_decoration_balance_applied=true`
- `reference_right_cta_applied=true`
### 11. 公開HTML・validator・HUB保存・runtime証跡の確認
自己申告PASSは禁止です。制作cronは、下書き/公開後に本文領域を読み戻し、公開HTML、validator、HUB保存、runtime証跡を揃えてからtask8へ渡します。
必須確認:
- Search Compass結果がある。
- 第三者上位10サイトの材料化がある。
- 公式情報と第三者情報の扱いが分かれている。
- リード文が読者向けで、何の記事か、何が分かるかが分かる。
- 先に結論が具体的で、料金、無料枠、有料枠、機能、支払い、退会、比較のうち必要項目を満たす。
- 料金プランがある。確認不能な場合も、確認不能だけで終わらず、確認すべき項目を具体化している。
- 無料枠と有料枠の違いがある。
- 登録方法がある。
- 退会/解約方法がある。
- 決済方法がある。
- 他社比較がある。
- AEO Q&Aがある。
- 敬体自然文で、だ・である調が残っていない。
- 内部語、設定語、作業メモが公開本文に出ていない。
- 装飾BOX、太字、マーカー、内部リンク、CTA、Q&A、まとめが自然に使われている。
- 抽象的な記事、薄い記事、一般論だけの記事になっていない。
validator必須総合キー:
- `reader_value_density_gate=PASS`
- `thin_article_gate=PASS`
- `generic_article_gate=PASS`
- `lead_reader_value_gate=PASS`
- `conclusion_substance_gate=PASS`
- `pricing_plan_detail_present=true`
- `free_paid_difference_present=true`
- `signup_steps_present=true`
- `cancellation_steps_present=true`
- `payment_methods_present=true`
- `competitor_comparison_present=true`
- `aeo_answer_block_present=true`
- `official_third_party_handling_present=true`
- `search_compass_used=true`
- `serp_top10_checked=true`
- `polite_natural_style_gate=PASS`
- `public_html_readback_done=true`
- `published_body_selector_used=true`
- `sidebar_related_footer_excluded=true`
- `runtime_evidence_saved=true`
- `hub_save_readback_done=true`
FAIL条件:
- Search Compassなし。
- 第三者上位10サイトを見ていない。
- リード文で何の記事か分からない。
- 先に結論が抽象論だけ。
- 料金、無料枠、有料枠、登録、退会、決済、比較のうち、対象サービスで必要な項目が抜けている。
- 公式情報と第三者情報を混ぜて断定している。
- 公式確認不能を言い訳にして、確認丸投げ文だけで文字数を稼いでいる。
- だ・である調や作業メモ調が残っている。
- 内部語が公開本文に出ている。
- Q&Aが一般論だけ。
- 公開HTML読み戻しなし。
- validator未実行、必須キー欠落、自己申告PASS。
- HUB保存やruntime証跡なし。
### 12. 報告ルール
公開反映後は、制作cronが次を必ず報告します。
- 読んだ公開URLとローカルパス。
- 対象cron。
- 修正または制作した内容。
- 公開反映の有無。
- 読み戻し結果。
- h2/h3構成。本文領域だけを数え、サイドバー、関連記事、Directory、TOC、フッターは除外します。
- 必須文言の有無。Search Compass、第三者上位10サイト、料金プラン、無料枠と有料枠、入会方法、退会方法、決済方法、他社比較、AEO Q&A、敬体自然文を確認します。
- 対象ブロック文字数。
- 残リスク。公式がログイン後にしか表示しない料金、第三者情報0件、決済画面未確認、退会画面未確認などを正直に書きます。
このv0.1.67以降、構造Gateだけ通る薄い記事をPASSにしません。読者が登録前に判断できるだけの具体材料がない記事は、制作cron自身が止めて修正してください。
PROMPT_END
porn-fun【評価・NSFW AI】高品質チェックcron automation作成依頼文
【cron個別作成依頼文】
以下のautomationを1件だけ新規作成してください。
automation名:
porn-fun【評価・NSFW AI】高品質チェック
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- stage: quality_check
- 役割: 公開HTMLまたはpreview HTMLを実測し、validator_result.jsonを保存する。FAILが1つでもあればPASSせず訂正へ返す。
共通no-touch:
- AIfan Hub、AIfan active cron、AIfan記事は触らない。
- porn-fun以外のサイトHubは触らない。
- 既公開記事本文を勝手に直さない。
- キー、トークン、認証値を出力しない。
- キー再発行を提案しない。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` は読ませない。
automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.5
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 最大5回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=11,13,17,20,23;BYMINUTE=41;BYSECOND=0`
- 起動時間メモ: 候補: 11:41 / 13:41 / 17:41 / 20:41 / 23:41 JST。公開/preview HTMLを再取得して、制作cronの自己採点を信用しない。
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
作成時の注意:
- 既存ACTIVE cronを確認してから時刻を確定する。
- この依頼文は実運用仕様であり、テスト用の週1回設定ではない。
- 名称に「テスト」を入れない。
- 作成後に name / id / status / rrule / model / cwd を報告する。
- 代表が「何点?」「Gate何点?」と聞いた場合も、自己採点だけで答えず、公開HTMLまたはpreview HTMLの実測結果で答える。
PROMPT_START
# porn-fun【評価・NSFW AI】高品質チェック
automation_id: porn-fun-nsfw-ai-4
site_id: porn-fun
workflow_id: porn-fun-nsfw-ai-generator-sites-ja
content_set: porn_fun_nsfw_ai_generator_sites
article_type: NSFW_AI
role: 高品質チェック
updated_at: 20260606-v0151-portable-site-hub-contained
---
# porn-fun【評価・NSFW AI】高品質チェック
porn-fun【評価・NSFW AI】高品質チェック cron v0.1.66。
対象は `site_id=porn-fun` / `workflow_id=porn-fun-nsfw-ai-generator-sites-ja` / `content_set=porn_fun_nsfw_ai_generator_sites`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。
起動時にHub status / agent_pack / agent_work_queue / cron_preflight_resolve を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。
担当はtask8対象の公開HTML品質チェックだけ。収集・検査・新規制作・本文修正・再公開・訂正・改善ハンドオフはしない。
高品質チェックcronは公開HTMLを再取得し、本文領域だけを抽出して全Gateを最後まで実測する。制作cronの自己採点100点、固定true、前回summaryだけを信用しない。`validator_result.json` がない、JSONが壊れている、必須キー欠落、未測定がある場合はPASS禁止。
FAILは最初の1件だけで止めない。文字数、KW、共起語、関連語、常体、SEO/H1、リード、CTA、H2/H3、Q&A、装飾、BOX、内部/外部リンク、手書き評価表、カテゴリ、保存/readback、日本語構文、NSFW/年齢/権利/プライバシー注意をすべて測定し、全FAILを `failed_gate_names` / `required_gate_failures` / `quality_delta_items` に保存する。
常体Strict: 本文・リード・Q&A・BOXに敬体が残り、公式引用やUIラベル等の例外でない場合はFAIL。`plain_style_gate` / `lead_plain_style_gate` / `body_plain_style_gate` / `qa_plain_style_gate` / `polite_form_hits_count` / `polite_form_hits` / `qa_box_exact_class_count` / `qa_box_required_structure_gate` / `validator_required_keys_present` を確認する。`japanese_syntax_gate=PASS` だけではPASSにしない。
Q&Aは公開HTML本文に `qa-box` / `qa-question` / `qa-answer` を持つ5個以上が必要。FAQ JSON-LD、JavaScript、schema、カスタムコードだけを本文Q&Aに数えない。
内部リンク数は本文手書き領域で数え、サイドバー、フッター、タグ、カテゴリ、TOC、関連記事、プラグイン生成部品を含めない。BOX数は有効な本文スタイルBOXだけを数え、Q&A、通常表、目次、辞書プラグイン表、関連記事、サイドバー、フッターを含めない。
NSFW AI記事では、成人向けサービスとしての注意、年齢制限、権利/商用利用、プライバシー、禁止事項、決済やアカウント停止リスクの説明が読者向けに置かれているか確認する。違法・未成年・実在人物なりすまし・無断性的生成を推奨する表現はFAIL。
既存公開記事の不備を見つけても高品質チェックcronでは本文修正しない。FAIL時は訂正cron用に、全FAIL名、実測値、該当文、該当Q&A番号、修正指示、次工程、`correction_required=true` をHubへ保存する。PASS時だけtask8完了または次工程へ進める。
報告は日本語のみで、対象記事、判定、score_cap、FAIL件数、主なFAIL、保存行数、readback結果、次工程を書く。英語の内部メモや思考文を報告に混ぜない。
追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。
## v0.1.46 後工程Gate追加
Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE
公開HTML本文領域から、公開本文境界と成人向け評価軸を実測する。Hub、cron、Gate、PASS/FAIL、Work Queue、agent_pack、作業ログ、タスク番号、301/移行などの内部運用語が本文・FAQ・CTAに出ていればFAILにする。
NSFW AI記事で、年齢制限、料金/無料範囲、決済/退会、規約/禁止事項、権利/商用利用、プライバシー、NSFW注意が不足している場合はFAILにする。評価項目本文不足、手書き評価表/基本情報表の二重表示も訂正cronへ渡す。
FAIL時は `public_content_boundary_gate`、`forbidden_public_workflow_terms`、`adult_service_missing_items`、`quality_delta_items`、修正指示、`correction_required=true` を保存する。最初のFAILだけで止まらない。
## v0.1.66 制作以降Fail-first品質Gate
Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE
高品質チェックcronは、上記v0.1.66 Gateを公開HTMLから再測定する。制作cronの自己採点、固定true、前回summary、件数だけのPASSを信用しない。
最初のFAILだけで止めず、4000字、リード文、Q&A、✅/⚠️、KW/共起語/関連語、H2/H3評価理由、評価スコア/基本情報の可視状態、二重手書き表、常体、H1/SEO、カテゴリ、成人向け注意、公開本文境界、必須boxを全部測る。全FAILを `failed_gate_names`、`required_gate_failures`、`quality_delta_items`、実測値、該当文、修正指示として保存する。
必須Gate違反は軽微メモにしない。PASSできない記事は `correction_required=true` として訂正cronへ渡す。
## v0.1.66 高品質チェック validator Gate Hotfix
Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX
高品質チェックcronも制作cronと同じバリデータを再実行してください。制作cronの100点自己申告や既存 `validator_result.json` を鵜呑みにせず、公開HTMLを読み直して差分を `quality_delta_items` に保存してください。
`validator_result.json` は porn-funサイトHUB内の `runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json` に保存してください。`stage` は `quality_check` です。
常体Strictは機械判定にしてください。公開HTML本文から「です・ます・でした・ました・でしょう・ください・ません」等を数え、`desu_masu_count` と `joutai_strict_machine_result` を保存してください。自己申告の「常体OK」だけではPASSにしません。
公開HTMLまたはプレビューHTMLを再取得し、title/H1、文体、リード文、リンク、FAQ JSON-LD、装飾、Hub readback、raw_quality_score、score_cap、final_quality_score、score_cap_reasonsを実測してください。未実測の場合はPASS禁止です。
## v0.1.66 portable site Hub contained hotfix
Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED
Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.
For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json`
Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.
## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate
Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。
- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`
Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。
validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。
## v0.1.66 必須FAIL条件 全文明示Gate
Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。
- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認
`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。
Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。
## v0.1.66 装飾比率・CTA・KW・リード文 Gate
Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。
### 装飾比率
- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。
### リード文と公式CTA
- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。
### KW・共起語・関連語
- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。
### ✅/⚠️ Gate
- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。
## v0.1.66 見本URL継承Gate
Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS
制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。
### Reference Inheritance URLs
1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/
### 必須運用
- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。
## v0.1.66 前記事artifact流用禁止Gate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION
制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
### 必須証跡
- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`
`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。
## v0.1.66 前記事を公開基準値にしないGate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK
前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
## v0.1.66 NSFW AI評価記事 既存カテゴリ固定Gate
Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE
このルールは、NSFW AIの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。
NSFW AIの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。
### 必須
- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がNSFW AI系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。
### FAIL/REPAIR
- NSFW AI評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- NSFW AI評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。
上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。
## v0.1.66 リード自然文・主語述語Gate
Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE
高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。
NG例:
`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`
### 何がおかしいか
- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。
### 必須判定
- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。
### 修正文の方向
- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`
### 必須証跡
- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`
上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。
## v0.1.66 記事全文・自然文Gate
Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE
不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。
### 検査対象
- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文
### FAIL/REPAIR条件
- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。
### 制作cronの必須工程
- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。
### 高品質チェックcronの必須工程
- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。
### 訂正cronの必須工程
- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。
### 必須証跡
- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`
必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。
## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate
Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE
制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。
### 既公開・handoff済みslugで制作cronがやること
- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。
### FAIL/REPAIR
- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。
### 必須証跡
- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`
既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。
## v0.1.66 Q&A details exact Gate
Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE
Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:
```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```
This means:
- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.
FAIL conditions:
- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.
Production cron:
- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.
Quality check cron:
- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.
Correction cron:
- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.
Required evidence:
- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`
Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.
## v0.1.66 Mandatory public/preview HTML measurement Gate
Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE
This is a production-onward no-escape Gate for porn-fun NSFW AI review articles.
Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.
Core rule:
- If any required item from the current porn-fun Gates is missing, unmeasured,
JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
narrative explanation. It must appear in `failed_gate_names`,
`required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
forbidden unless `mandatory_public_html_measurement_gate=PASS`.
The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.
Required public/preview HTML measurements:
- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`
Required non-HTML/readback/source-artifact measurements:
- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`
Every measured item must include evidence details:
- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`
Escape blockers:
- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
task8-handoff slugs; it must consume stale task2 and select a new eligible
candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
returning the article to task8.
NSFW AI category/readback:
- NSFW AI review articles must use the existing directory category
`https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
applies.
- NSFW AI review articles must use the existing directory type
`https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
FAIL.
- Category/type readback must be measured after save/publish.
Final validator rule:
- `mandatory_public_html_measurement_gate=PASS` only when all required measured
gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
`mandatory_public_html_measurement_gate=FAIL`,
`pass_allowed=false`, `correction_required=true`, and save the missing item in
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
## v0.1.66 Hard-stop repair loop Gate
Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE
Scope: porn-fun NSFW AI review articles, production and later.
This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.
Hard FAIL names that must stop the run:
- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`
Dictionary plugin table hard stop:
- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
look good.
- Required evidence:
- `directory_plugin_rating_score_table_gate=PASS`
- `directory_plugin_basic_info_table_gate=PASS`
- `directory_plugin_rating_score_table_source=public_html|preview_html`
- `directory_plugin_basic_info_table_source=public_html|preview_html`
- `directory_plugin_rating_score_table_selector`
- `directory_plugin_basic_info_table_selector`
- `directory_plugin_rating_score_table_sample`
- `directory_plugin_basic_info_table_sample`
- `manual_score_table_count=0`
- `manual_basic_info_table_count=0`
H1 and SEO title hard stop:
- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
confusion, or unmeasured title is FAIL.
- Required evidence:
- `h1_text`
- `seo_title_text`
- `h1_selector`
- `seo_title_source=title_tag|seo_meta|preview_html`
- `seo_title_h1_separated_gate=PASS`
- `seo_title_strength_gate=PASS`
- `h1_gate=PASS`
- `seo_title_fail_reasons=[]`
Quality-check recording hard stop:
- If any of the following conditions is detected, quality_check itself is FAIL
unless the exact FAIL name is saved in all three arrays:
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
`DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
`DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
`SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
`SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Production publish/task8 hard stop:
- Production cron must not publish, mark task8-ready, hand off, or complete when
public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
publish/task8 handoff.
- If public/preview HTML measurement is missing, set
`PUBLIC_HTML_MEASUREMENT_MISSING` and stop.
Q&A hard stop remains:
- Visible article body must contain at least 5 exact Q&A sets using this structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
or class counts alone do not count.
Mandatory repair loop:
1. If production, quality_check, correction, or improvement_handoff finds any
required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
related to that FAIL and reread those target Gate/manual files in full before
deciding the repair. Partial excerpts, memory-only handling, or "already know"
is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
`validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
reader-perspective check -> public/preview HTML measurement -> validator save
until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
- `mandatory_gate_fail_count=0`
- `required_gate_failures=[]`
- `validator_unmeasured_items=[]`
- `mandatory_public_html_measurement_gate=PASS`
- `hard_stop_repair_loop_gate=PASS`
Required loop evidence:
- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`
If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.
Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.
## v0.1.66 Internal link live 200 Gate
Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE
Scope: porn-fun NSFW AI review articles, production and later.
Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.
Hard FAIL names:
- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`
Rule:
- Production, quality_check, correction, and improvement_handoff must extract all
internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.
Required evidence:
- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`
Quality-check recording hard stop:
- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
three arrays: `failed_gate_names`, `required_gate_failures`, and
`quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
`QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Repair loop:
- If any internal link FAIL appears, reread the target Gate/manual in full,
repair the link, refetch public or preview HTML, rerun link checks, rerun the
validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
remain.
PROMPT_END
porn-fun【評価・NSFW AI】訂正cron automation作成依頼文
【cron個別作成依頼文】
以下のautomationを1件だけ新規作成してください。
automation名:
porn-fun【評価・NSFW AI】訂正
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- stage: correction
- 役割: 高品質チェックで戻された記事を修正し、修正後HTMLを再実測してから高品質チェックまたはtask8へ戻す。
共通no-touch:
- AIfan Hub、AIfan active cron、AIfan記事は触らない。
- porn-fun以外のサイトHubは触らない。
- 既公開記事本文を勝手に直さない。
- キー、トークン、認証値を出力しない。
- キー再発行を提案しない。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` は読ませない。
automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.4
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 1回/日
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU;BYHOUR=18;BYMINUTE=48;BYSECOND=0`
- 起動時間メモ: 候補: 18:48 JST。FAIL修正後は対象Gate/マニュアル全文再読、読者目線再チェック、validator再実行をFAILゼロまで繰り返す。
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
作成時の注意:
- 既存ACTIVE cronを確認してから時刻を確定する。
- この依頼文は実運用仕様であり、テスト用の週1回設定ではない。
- 名称に「テスト」を入れない。
- 作成後に name / id / status / rrule / model / cwd を報告する。
- 代表が「何点?」「Gate何点?」と聞いた場合も、自己採点だけで答えず、公開HTMLまたはpreview HTMLの実測結果で答える。
PROMPT_START
# porn-fun【評価・NSFW AI】訂正
automation_id: porn-fun-nsfw-ai-5
site_id: porn-fun
workflow_id: porn-fun-nsfw-ai-generator-sites-ja
content_set: porn_fun_nsfw_ai_generator_sites
article_type: NSFW_AI
role: 訂正
updated_at: 20260606-v0151-portable-site-hub-contained
---
# porn-fun【評価・NSFW AI】訂正
porn-fun【評価・NSFW AI】訂正 cron v0.1.66。
対象は `site_id=porn-fun` / `workflow_id=porn-fun-nsfw-ai-generator-sites-ja` / `content_set=porn_fun_nsfw_ai_generator_sites`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。
起動時にHub status / agent_pack / agent_work_queue / cron_preflight_resolve を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。
担当は高品質チェックまたは改善ハンドオフから渡された既存公開記事の訂正だけ。収集・検査・新規制作・新規公開・改善ハンドオフはしない。
訂正cronは既存公開記事を修正できる唯一の本文修正担当である。ただし、訂正対象は `quality_delta_items` / `failed_gate_names` / `required_gate_failures` / `correction_required=true` で渡されたものに限る。制作cronが担当すべき新規記事作成はしない。
訂正対象は `quality_delta_items` の全件。1件だけ直して終わらない。手書き評価表、リード文、日本語構文、装飾、BOX、Q&A、内部リンク、KW、常体、SEO/H1、H2/H3、カテゴリ、外部リンク、NSFW/年齢/権利/プライバシー注意、保存/readbackの残FAILを同じ記事内でまとめて直す。
常体Strict: 本文・リード・Q&A・BOXに敬体が残り、公式引用やUIラベル等の例外でない場合は修正必須。1文だけでなく、該当段落全体を読者目線の常体へ直す。
Q&Aは公開HTML本文に `qa-box` / `qa-question` / `qa-answer` を持つ5個以上が必要。FAQ JSON-LD、JavaScript、schema、カスタムコードだけを本文Q&Aに数えない。Q&A回答も常体に直す。
装飾やBOXは数合わせで増やさず、読者の判断を助ける内容にする。手書き評価表は禁止。辞書プラグインの評価スコア表がある記事では、評価項目・スコア・理由を表形式で再掲しない。評価理由はH2/H3本文の文章で説明する。
NSFW AIでは、違法・未成年・実在人物なりすまし・無断性的生成を推奨しない。年齢制限、権利、プライバシー、禁止事項、決済/アカウントリスクなどの注意を自然な読者向け表現へ直す。
修正後は公開HTML validatorを再実行し、`validator_result.json`、修正差分、accepted/readbackを保存する。必須GateがPASSでない場合は完了扱いにしない。必須FAILが残る場合は再訂正または改善ハンドオフへ渡す。
報告は日本語のみで、対象記事、修正内容、修正前後の主なFAIL、validator結果、保存行数、readback結果、次工程を書く。英語の内部メモや思考文を報告に混ぜない。
追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。
## v0.1.46 Task10/訂正Gate追加
Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE
訂正対象は `task10/FAILキュー` という名前だけで0件判定しない。Work Queue、Tasks、References、FactChecks、9-A/9-B returned、`quality_fail`、`correction_required`、`check_status=ready/fail/failed` を、site/workflow/content_setで絞って横断確認する。
FAIL原因が本文、FAQ、冒頭構成、内部運用語混入、成人向け注意不足にある場合、第一手は本文修正にする。設定側変更だけで終わらない。Hub、cron、Gate、PASS/FAIL、Work Queue、agent_pack、作業ログ、タスク番号、301/移行などの内部運用語は公開本文から削除し、読者向け表現へ直す。
修正後は公開HTML validatorを再実行し、`validator_result.json`、修正差分、accepted/readback、残FAIL有無を保存する。終了状態は PASS / FAIL_REQUEUED / BLOCKED_HUB_AUTH / BLOCKED_WP_AUTH / BLOCKED_WP_WRITE / BLOCKED_LAYOUT_RISK / BLOCKED_MISSING_TARGET のいずれかにし、ローディング継続や対象なし誤判定で終わらない。
## v0.1.66 制作以降Fail-first品質Gate
Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE
訂正cronは、上記v0.1.66 Gateで落ちた既存公開記事だけを訂正する。`quality_delta_items` / `failed_gate_names` / `required_gate_failures` / `correction_required=true` で渡された全項目を、同じ記事内でまとめて直す。
1件だけ、1文だけ、1Gateだけ直して完了しない。4000字、リード文、Q&A、✅/⚠️、KW/共起語/関連語、H2/H3評価理由、評価スコア/基本情報の可視状態、二重手書き表、常体、H1/SEO、成人向け注意、公開本文境界、必須boxを再測定する。
修正後は公開HTML validatorを再実行し、`validator_result.json`、修正差分、accepted/readback、残FAIL有無を保存する。必須GateがPASSでない場合は完了扱いにしない。
## v0.1.66 訂正 validator Gate Hotfix
Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX
訂正cronも修正後に同じバリデータを再実行してください。修正済みHTMLの `validator_result.json` をHubへ保存し、`validator_final_score` と FAIL/REPAIR 残件を確認してから task8 へ戻してください。
`validator_result.json` は porn-funサイトHUB内の `runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json` に保存してください。`stage` は `correction` です。
常体Strictは機械判定にしてください。公開HTML本文から「です・ます・でした・ました・でしょう・ください・ません」等を数え、`desu_masu_count` と `joutai_strict_machine_result` を保存してください。自己申告の「常体OK」だけではPASSにしません。
必須証跡キーが欠ける、`validator_result_json_present=true` でない、`validator_final_score` が未測定、FAIL/REPAIR残件がある場合、task8へ戻さないでください。
## v0.1.66 portable site Hub contained hotfix
Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED
Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.
For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json`
Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.
## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate
Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。
- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`
Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。
validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。
## v0.1.66 必須FAIL条件 全文明示Gate
Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。
- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認
`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。
Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。
## v0.1.66 装飾比率・CTA・KW・リード文 Gate
Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。
### 装飾比率
- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。
### リード文と公式CTA
- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。
### KW・共起語・関連語
- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。
### ✅/⚠️ Gate
- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。
## v0.1.66 見本URL継承Gate
Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS
制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。
### Reference Inheritance URLs
1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/
### 必須運用
- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。
## v0.1.66 前記事artifact流用禁止Gate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION
制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
### 必須証跡
- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`
`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。
## v0.1.66 前記事を公開基準値にしないGate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK
前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
## v0.1.66 NSFW AI評価記事 既存カテゴリ固定Gate
Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE
このルールは、NSFW AIの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。
NSFW AIの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。
### 必須
- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がNSFW AI系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。
### FAIL/REPAIR
- NSFW AI評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- NSFW AI評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。
上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。
## v0.1.66 リード自然文・主語述語Gate
Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE
高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。
NG例:
`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`
### 何がおかしいか
- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。
### 必須判定
- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。
### 修正文の方向
- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`
### 必須証跡
- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`
上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。
## v0.1.66 記事全文・自然文Gate
Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE
不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。
### 検査対象
- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文
### FAIL/REPAIR条件
- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。
### 制作cronの必須工程
- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。
### 高品質チェックcronの必須工程
- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。
### 訂正cronの必須工程
- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。
### 必須証跡
- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`
必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。
## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate
Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE
制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。
### 既公開・handoff済みslugで制作cronがやること
- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。
### FAIL/REPAIR
- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。
### 必須証跡
- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`
既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。
## v0.1.66 Q&A details exact Gate
Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE
Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:
```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```
This means:
- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.
FAIL conditions:
- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.
Production cron:
- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.
Quality check cron:
- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.
Correction cron:
- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.
Required evidence:
- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`
Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.
## v0.1.66 Mandatory public/preview HTML measurement Gate
Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE
This is a production-onward no-escape Gate for porn-fun NSFW AI review articles.
Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.
Core rule:
- If any required item from the current porn-fun Gates is missing, unmeasured,
JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
narrative explanation. It must appear in `failed_gate_names`,
`required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
forbidden unless `mandatory_public_html_measurement_gate=PASS`.
The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.
Required public/preview HTML measurements:
- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`
Required non-HTML/readback/source-artifact measurements:
- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`
Every measured item must include evidence details:
- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`
Escape blockers:
- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
task8-handoff slugs; it must consume stale task2 and select a new eligible
candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
returning the article to task8.
NSFW AI category/readback:
- NSFW AI review articles must use the existing directory category
`https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
applies.
- NSFW AI review articles must use the existing directory type
`https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
FAIL.
- Category/type readback must be measured after save/publish.
Final validator rule:
- `mandatory_public_html_measurement_gate=PASS` only when all required measured
gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
`mandatory_public_html_measurement_gate=FAIL`,
`pass_allowed=false`, `correction_required=true`, and save the missing item in
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
## v0.1.66 Hard-stop repair loop Gate
Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE
Scope: porn-fun NSFW AI review articles, production and later.
This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.
Hard FAIL names that must stop the run:
- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`
Dictionary plugin table hard stop:
- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
look good.
- Required evidence:
- `directory_plugin_rating_score_table_gate=PASS`
- `directory_plugin_basic_info_table_gate=PASS`
- `directory_plugin_rating_score_table_source=public_html|preview_html`
- `directory_plugin_basic_info_table_source=public_html|preview_html`
- `directory_plugin_rating_score_table_selector`
- `directory_plugin_basic_info_table_selector`
- `directory_plugin_rating_score_table_sample`
- `directory_plugin_basic_info_table_sample`
- `manual_score_table_count=0`
- `manual_basic_info_table_count=0`
H1 and SEO title hard stop:
- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
confusion, or unmeasured title is FAIL.
- Required evidence:
- `h1_text`
- `seo_title_text`
- `h1_selector`
- `seo_title_source=title_tag|seo_meta|preview_html`
- `seo_title_h1_separated_gate=PASS`
- `seo_title_strength_gate=PASS`
- `h1_gate=PASS`
- `seo_title_fail_reasons=[]`
Quality-check recording hard stop:
- If any of the following conditions is detected, quality_check itself is FAIL
unless the exact FAIL name is saved in all three arrays:
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
`DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
`DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
`SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
`SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Production publish/task8 hard stop:
- Production cron must not publish, mark task8-ready, hand off, or complete when
public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
publish/task8 handoff.
- If public/preview HTML measurement is missing, set
`PUBLIC_HTML_MEASUREMENT_MISSING` and stop.
Q&A hard stop remains:
- Visible article body must contain at least 5 exact Q&A sets using this structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
or class counts alone do not count.
Mandatory repair loop:
1. If production, quality_check, correction, or improvement_handoff finds any
required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
related to that FAIL and reread those target Gate/manual files in full before
deciding the repair. Partial excerpts, memory-only handling, or "already know"
is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
`validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
reader-perspective check -> public/preview HTML measurement -> validator save
until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
- `mandatory_gate_fail_count=0`
- `required_gate_failures=[]`
- `validator_unmeasured_items=[]`
- `mandatory_public_html_measurement_gate=PASS`
- `hard_stop_repair_loop_gate=PASS`
Required loop evidence:
- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`
If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.
Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.
## v0.1.66 Internal link live 200 Gate
Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE
Scope: porn-fun NSFW AI review articles, production and later.
Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.
Hard FAIL names:
- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`
Rule:
- Production, quality_check, correction, and improvement_handoff must extract all
internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.
Required evidence:
- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`
Quality-check recording hard stop:
- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
three arrays: `failed_gate_names`, `required_gate_failures`, and
`quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
`QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Repair loop:
- If any internal link FAIL appears, reread the target Gate/manual in full,
repair the link, refetch public or preview HTML, rerun link checks, rerun the
validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
remain.
PROMPT_END
porn-fun【評価・NSFW AI】改善ハンドオフcron automation作成依頼文
【cron個別作成依頼文】
以下のautomationを1件だけ新規作成してください。
automation名:
porn-fun【評価・NSFW AI】改善ハンドオフ
対象:
- porn-fun Hubのみ
- workflow: porn-fun【評価・NSFW AI】
- stage: improvement_handoff
- 役割: 本文を直接直さず、改善課題・再発防止・Gate不足・運用不足をハンドオフとして保存する。
共通no-touch:
- AIfan Hub、AIfan active cron、AIfan記事は触らない。
- porn-fun以外のサイトHubは触らない。
- 既公開記事本文を勝手に直さない。
- キー、トークン、認証値を出力しない。
- キー再発行を提案しない。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` は読ませない。
automation設定:
- kind: cron
- status: ACTIVE
- executionEnvironment: local
- cwd: `C:\Users\Public\Documents\LLC358\_codex_cron_threads`
- model: gpt-5.4
- reasoningEffort: high
- localEnvironmentConfigPath: null
- 起動回数: 週1回、または改善キュー発生時
- 推奨RRULE: `FREQ=WEEKLY;BYDAY=SU;BYHOUR=8;BYMINUTE=55;BYSECOND=0`
- 起動時間メモ: 候補: 日曜 08:55 JST。改善キュー発生時は代表の指示または追加単発起動で処理する。
実運用の1日の起動回数:
- 収集: 1回/日
- 検査: 4回/日
- 制作: 最大3回/日
- 高品質チェック: 最大5回/日
- 訂正: 1回/日
- 改善ハンドオフ: 週1回、または改善キュー発生時
起動時間設定ルール:
- 既存ACTIVE cronを確認してから設定する。
- 同時刻と前後10分を避ける。
- 00分固定を避ける。
- 分は 07 / 13 / 19 / 26 / 34 / 41 / 48 / 55 を優先候補にする。
- 朝・昼・夕・夜へ分散する。
- 制作cronは同一site/workflowの前回制作runから最低3時間あけ、同時並行させない。
- 空けられない場合は5分間隔、1分間隔、最後は同時刻の順で詰める。混雑だけで作成停止しない。
- 支社PCへ持っていく対象フォルダは `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun` だけ。cron実行cwdは `C:\Users\Public\Documents\LLC358\_codex_cron_threads` のままでよい。
- cron本文の最初に読む場所は `C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun\startup_docs\current`。そこから同じporn-funサイトHub内の `gates\current` と `cron_prompts\current` の必要箇所だけ読む。
- `representative-work-gate`、`_codex_cron_threads\AGENTS.md`、共有 `Autopost358\HUB\gates` を読ませない。cron依頼文へ参照パスとして書かない。
- キー、トークン、認証値を出力しない。キー再発行を提案しない。
- live Hubは `hub_version=0.1.66-pornfun-internal-link-live-200-gate-20260607` を確認する。
作成時の注意:
- 既存ACTIVE cronを確認してから時刻を確定する。
- この依頼文は実運用仕様であり、テスト用の週1回設定ではない。
- 名称に「テスト」を入れない。
- 作成後に name / id / status / rrule / model / cwd を報告する。
- 代表が「何点?」「Gate何点?」と聞いた場合も、自己採点だけで答えず、公開HTMLまたはpreview HTMLの実測結果で答える。
PROMPT_START
# porn-fun【評価・NSFW AI】改善ハンドオフ
automation_id: porn-fun-nsfw-ai-6
site_id: porn-fun
workflow_id: porn-fun-nsfw-ai-generator-sites-ja
content_set: porn_fun_nsfw_ai_generator_sites
article_type: NSFW_AI
role: 改善ハンドオフ
updated_at: 20260606-v0151-portable-site-hub-contained
---
# porn-fun【評価・NSFW AI】改善ハンドオフ
porn-fun【評価・NSFW AI】改善ハンドオフ cron v0.1.66。
対象は `site_id=porn-fun` / `workflow_id=porn-fun-nsfw-ai-generator-sites-ja` / `content_set=porn_fun_nsfw_ai_generator_sites`。正本は現行Pornfun Hub `https://pornfun-hub.secure358.com` と、このサイトHUBフォルダ内の `startup_docs/current` / `gates/current` / `cron_prompts/current` です。cron実行cwdはautomation設定に従いますが、読むファイル・保存するGate/cron成果物はこのサイトHUB内で完結させ、サイトHUB外のGate/起動文書を必須参照にしないでください。対象外のサイト、対象外記事、旧Hub、共有Gateは触らないでください。
起動時にHub status / agent_pack / agent_work_queue / cron_preflight_resolve を読み、サイトHUB内の `ARTICLE_QUALITY_GATE.md` / `QUALITY_VALIDATOR_CONTRACT.md` / `REFERENCE_STYLE_GATE.md` / `ROLE_FAIL_CONDITION_GATE.md` / `PRODUCTION_EVIDENCE_AND_SCORING_GATE.md` / `JAPANESE_SYNTAX_GATE.md` / `PLAIN_STYLE_AND_QA_BOX_HOTFIX_GATE.md` / `PORNFUN_CRON_TEMPLATE_GATE.md` を必要範囲で読む。細かい数値、score_cap、証跡キー、成果物パスはGate正本に従う。
担当は高品質チェック後、訂正後、監視中の記事を確認し、訂正送り・改善メモ・監視対象へ振り分けること。収集・検査・新規制作・直接本文修正・公開はしない。
改善ハンドオフcronは本文を直さない。候補が複数ある場合は1件だけ処理して止まらない。公開HTMLとvalidator_result.jsonを確認し、構文FAIL、常体Strict、qa-box構造、手書き評価表、BOX不足、Q&A不足、装飾不足、内部リンク不足、KW過多/不足、カテゴリ不一致、NSFW/年齢/権利/プライバシー注意不足などを軽微メモに逃がさない。
常体Strict/Q&A構造のFAILは訂正送り対象。本文・リード・Q&A・BOXに敬体が残る、または `qa-box` / `qa-question` / `qa-answer` 構造が5個未満、FAQ JSON-LDやJavaScriptだけをQ&Aに数えている場合は、該当文・該当Q&A番号・欠落キー・実測値を保存する。
NSFW AIでは、違法・未成年・実在人物なりすまし・無断性的生成を推奨する表現、年齢制限/権利/プライバシー/禁止事項/決済リスクの説明不足を訂正送り対象にする。
訂正送りにする場合は、記事key、公開URL、failed_gate_names、quality_delta_items、実測値、修正指示、優先度、次工程、correction_required=trueを保存する。改善メモにする場合も、なぜ訂正ではなく監視/改善メモなのかを書く。
制作cronへ戻すのは、新規制作対象の素材不足・Search Compass不足・reader_intent_pack不足など、制作開始前の素材整備が必要な場合だけ。既存公開記事の本文修正は訂正cronへ渡す。
報告は日本語のみで、処理候補数、訂正送り数、改善メモ数、監視対象数、残候補数、保存行数、readback結果を書く。英語の内部メモや思考文を報告に混ぜない。
追加必須装飾BOX Gate(Marker: 2026-06-05_REQUIRED_DECORATIVE_BOX_CLASS_GATE): Pornfun以降の記事では、本文内の有効スタイルBOXとして `blank-box bb-tab bb-check bb-yellow`、`information-box`、`warning-box` をそれぞれ1個以上置く。いずれかが0件、本文外のみ、Q&A/表/目次/辞書プラグイン/関連記事/サイドバー/フッターのみ、空div、読者判断を助けない内容の場合はFAIL。validatorでは `required_decorative_box_class_gate`、`blank_box_bb_check_bb_yellow_count`、`information_box_count`、`warning_box_count`、`required_decorative_box_class_failures` を保存し、欠落時はPASS禁止。
## v0.1.46 後工程ハンドオフGate追加
Marker: 2026-06-06_PORNFUN_LEGACY_GATE_UPGRADE
改善ハンドオフでは、公開本文境界、成人向け確認不足、評価項目本文不足、手書き表二重表示、Task10訂正対象を軽微メモに逃がさない。訂正送りにする場合は、記事key、公開URL、failed_gate_names、quality_delta_items、実測値、修正指示、優先度、次工程、`correction_required=true` を保存する。
候補が複数ある場合は1件だけ処理して止まらず、訂正送り数、改善メモ数、監視対象数、残候補数を報告する。`improvement_status=handed_off` かつ `improvement_lock=true` の間は、返却されるまで本文を主観的に書き直さない。
## v0.1.66 制作以降Fail-first品質Gate
Marker: 2026-06-06_PORNFUN_PRODUCTION_ONWARD_QUALITY_CHAIN_GATE
改善ハンドオフcronは、上記v0.1.66 Gate違反を軽微メモに逃がさない。本文を直接直さず、訂正送り、改善メモ、監視対象を分けて保存する。
候補が複数ある場合は1件だけ処理して止まらない。起動時にHub status / agent_pack / agent_work_queueを読み、改善ハンドオフ対象候補を全件列挙する。`remaining_improvement_handoff_candidates_count=0` になるまで完了扱いにしない。
改善不可または必須Gate未達の場合は、候補ごとに `correction_required=true`、`next_task_code=10-correction`、`handoff_status=queued_to_correction`、`failed_gate_names`、`measured_values`、`fix_instructions`、`public_url`、`article_key` を保存する。候補が残る場合は完了と報告しない。
## v0.1.66 改善ハンドオフ validator Gate Hotfix
Marker: 2026-06-06_PORNFUN_PRODUCTION_VALIDATOR_GATE_HOTFIX
改善ハンドオフcronは、制作・高品質チェック・訂正のvalidator結果を軽微メモに逃がさず、公開HTMLまたはプレビューHTMLを必要に応じて再取得し、`quality_delta_items`、`validator_final_score`、FAIL/REPAIR残件、`score_cap_reasons` を確認してください。
`validator_result.json` を作る場合は porn-funサイトHUB内の `runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json` に保存してください。`stage` は `improvement_handoff` です。
代表から「何点?」「Gate何点だった?」「100点なのか?」と聞かれた場合でも、作業ログ上の自己採点だけで回答しないでください。実測できない場合は「未実測のため点数確定不可」と答え、100点/PASSを断定しないでください。
## v0.1.66 portable site Hub contained hotfix
Marker: 2026-06-06_PORNFUN_PORTABLE_SITE_HUB_CONTAINED
Branch PC transfer assumes only this folder is carried:
`C:\Users\Public\Documents\LLC358\Autopost358\HUB\porn-fun`
Required startup, Gate, cron prompt, validator artifact, and runtime evidence paths must be resolvable from this site Hub folder. The automation working directory may be set outside this folder, but files that a cron must read as正本 and files that a cron must save as Gate/validator evidence must not require any external Gate mirror, representative-only path, or another site Hub.
For production onward validator artifacts, use the site-Hub-relative path:
`runtime\validator_results\porn-fun-nsfw-ai-generator-sites-ja\{slug}\{stage}\validator_result.json`
Stage is one of `production`, `quality_check`, `correction`, or `improvement_handoff`.
## v0.1.66 Directory Core / 辞書プラグイン評価表 必読Gate
Marker: 2026-06-06_PORNFUN_DIRECTORY_CORE_EXPLICIT_READ_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、起動時Gate確認で以下4資料を `gates/current` から必ず読む。読めない場合は本文制作・PASS・task8/handoffを進めず、`BLOCKED_DIRECTORY_CORE_GATE_NOT_READ` とする。
- `directory-core-full-input-public-row-gate-v1.23.md`
- `V1_23_CRON_REQUEST_RULES.md`
- `V1_24_CRON_REQUEST_RULES.md`
- `Apply-HubDirectoryCoreRatingGate.ps1`
Directory Core / 辞書プラグイン評価表が公開HTMLまたはreadbackで有効な場合、評価スコア表・基本情報表はその表示を正本として扱い、本文HTML側で手書きの評価項目表・スコア表・基本情報表を重複作成しない。ただし読者に見えている証跡は validator_result.json に保存する。
validator_result.json には、少なくとも `directory_core_gate_files_read`、`directory_core_gate_read_result`、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を保存する。辞書表があるのに手書き表を重複作成した場合、または4資料を読まずにPASSした場合はFAILにする。
## v0.1.66 必須FAIL条件 全文明示Gate
Marker: 2026-06-06_PORNFUN_FULL_REQUIRED_FAIL_CONDITIONS_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下のいずれかがある場合にPASS、task8、完了扱い、改善ハンドオフ完了扱いをしてはならない。validator_result.json と作業報告には、該当したFAIL名、実測値、修正指示、readback結果を残す。
- Search Compassなし
- 公開HTML未取得
- `validator_result.json`なし
- `validator_result.json` JSON破損
- `validator_result.json` 必須キー欠落
- validator未測定あり
- 自己採点だけのPASS
- `naturalization_rewrite_checked` の固定true
- `reference_style_checked` の固定true
- H1とSEOタイトル未区分
- 弱いSEOタイトル
- リード文1文
- リード文が短すぎ
- リード文500字超
- リード文改行なし
- リード内マーカーなし
- 右寄せ公式CTAなし
- 辞書プラグイン評価スコア表がある記事で手書き評価項目・スコア・理由表を作る
- 辞書表と重複する手書き基本情報表
- 4000字未満
- KW不足
- 共起語不足
- 関連語不足
- 常体違反
- H2ばかりでH3不足
- 評価項目H3理由不足
- Q&Aがqa-box5個未満
- qa-question不足
- qa-answer不足
- Q&A回答の敬体
- 本文内FAQ JSON-LD挿入
- 本文内JavaScript挿入
- 本文内カスタムコード挿入
- 内部リンク1〜3本以外
- 外部リンク過多
- 有効装飾BOX3個未満
- 先に結論が有効BOXでない
- 装飾黄金比率不備
- 最低足切り未満
- 件数だけでPASS
- 重要でない箇所への装飾
- 読みづらい装飾
- ✅/⚠️混在長文
- 1行に複数✅/⚠️
- 文字化け
- 公式主機能未確認のカテゴリ選択
- 主機能と違うWPカテゴリ
- 曖昧カテゴリへの推測投入
- カテゴリreadback未確認
`naturalization_rewrite_checked=true`、`reference_style_checked=true`、`pass_allowed=true` などの真偽値は、公開HTMLまたはプレビューHTMLの実測証跡、対象行、検出数、修正結果が揃うまで信用しない。固定true、自己申告true、前回結果の流用、件数だけのPASSは禁止する。
Directory Core / 辞書プラグイン評価表が有効な記事では、`dictionary_score_table_present`、`manual_score_table_count`、`directory_core_gate_files_read`、`directory_core_gate_read_result`、`directory_core_public_row_gate_result`、`directory_core_rating_gate_result` を実測保存する。辞書表と本文手書き表の重複がある場合はFAILにする。
## v0.1.66 装飾比率・CTA・KW・リード文 Gate
Marker: 2026-06-06_PORNFUN_VISUAL_KW_LEAD_GATE
制作以降cron(production / quality_check / correction / improvement_handoff)は、以下を公開HTMLまたはプレビューHTMLで実測し、validator_result.json に保存する。未測定、自己申告、件数だけのPASSは禁止する。
### 装飾比率
- 黒太文字、赤太文字、黒太文字+黄色アンダーマーカーは、記事本文量に対する装飾黄金比率で判定する。
- 最低足切りは、黒太文字6件以上、赤太文字2件以上、黒太文字+黄色アンダーマーカー4件以上。
- 黒太文字+黄色アンダーマーカーはリード文内に1件以上必要。
- validator_result.json には `black_bold_count`、`red_bold_count`、`black_bold_yellow_marker_count`、`lead_yellow_marker_count`、`decoration_golden_ratio_gate`、`decoration_ratio_values` を保存する。
- 重要でない箇所への装飾、読みづらい装飾、黄色マーカー単体、85字超の黄色アンダーマーカーはFAILまたはREPAIR。
### リード文と公式CTA
- リード文には、このページがどのようなページなのかを読者向けに自然に説明する。サービス名だけ、評価軸羅列、作業メモ、Search Compass素材の羅列は導入文としてFAIL。
- リード文は2〜3文、500字以内、導入前の判断材料を含め、黒太文字+黄色アンダーマーカーを1件以上置く。
- リード文直後、最初のH2前に次の右寄せ公式CTAを置く。
- `<p style="text-align: right;"><span class="badge badge-red">公式</span><b>:<a href="公式URL" target="_blank" rel="nofollow noopener">サービス名</a></b></p>`
- validator_result.json には `lead_page_purpose_present`、`lead_sentence_count`、`lead_chars`、`lead_yellow_marker_count`、`official_cta_right_present`、`official_cta_html_pattern_result` を保存する。
### KW・共起語・関連語
- target KW、主KW、補助KW、共起語、関連語の出現率と使用箇所を測る。
- workflow指定がない場合、target KW比率は3.0%-4.5%を目安にし、過不足はFAILまたはREPAIR。
- KW、共起語、関連語を自然に含むオリジナルH2/H3を最低1つ入れる。汎用見出しだけ、まとめ見出しだけ、H2だけでH3不足の場合はFAIL。
- validator_result.json には `target_keyword_density`、`main_keyword_count`、`support_keyword_count`、`cooccurrence_terms_used_count`、`related_terms_used_count`、`original_heading_with_kw_terms_present`、`original_heading_with_kw_terms` を保存する。
### ✅/⚠️ Gate
- ✅と⚠️は、最低でも記事内に3つずつ以上必要。
- ✅/⚠️は本文途中へ割り込ませず、原則としてリストまたは箇条書き1行1ポイントで使う。
- 1文・1段落・1BOX内に✅と⚠️を混在させる、1行に複数✅/⚠️を入れる、長文の途中へ埋め込む、数合わせで意味の薄い文に付ける場合はFAIL。
- validator_result.json には `check_mark_count`、`warning_mark_count`、`check_warning_list_style_result`、`check_warning_inline_misuse_count`、`check_warning_gate_result` を保存する。
## v0.1.66 見本URL継承Gate
Marker: 2026-06-06_PORNFUN_REFERENCE_INHERITANCE_URLS
制作・高品質チェック・訂正・改善ハンドオフは、下記の見本URL群を記事の流れと装飾の参照材料として扱う。丸写しは禁止だが、導入の流れ、先に結論を置く構成、リード後の公式CTA、H2/H3のつなぎ、評価軸の出し方、注意喚起、黒太文字・赤太文字・黒太文字+黄色アンダーマーカーの装飾比率、✅/⚠️のリスト運用を継承する。
### Reference Inheritance URLs
1. https://invest358.com/ja/errante-review/
2. https://invest358.com/ja/thinkmarkets-review/
3. https://porn-fun.com/ja/ai-exotic-review/
4. https://porn-fun.com/ja/ai-girlfriend-review/
5. https://aifan.io/ja/pixverse-ai-review/
6. https://aifan.io/ja/dream-machine-review/
7. https://aifan.io/ja/openart-ai-review/
8. https://aifan.io/ja/animon-review/
9. https://aifan.io/ja/vidu-ai-review/
10. https://aifan.io/ja/leonardo-ai-review/
11. https://aifan.io/ja/pollo-ai-review/
12. https://aifan.io/ja/crowdworks-ai-review/
### 必須運用
- 制作前に上記URLを取得できる範囲で確認し、`reference_inheritance_urls_checked` に確認済みURLを保存する。
- ライブ取得できないURLがある場合も、そのURLを消さず、取得不能理由を `reference_inheritance_unreachable_urls` に保存する。
- `reference_style_flow_notes` には、見本から継承する記事の流れを保存する。
- `reference_decoration_notes` には、見本から継承する装飾バランスを保存する。
- `reference_inheritance_result` は `PASS` / `REPAIR` / `FAIL` のいずれかで保存する。
- 見本URLを見ずに `reference_style_checked=true` だけを固定することは禁止。固定trueはFAIL。
- 記事の流れ・装飾・CTA・リード・FAQ・評価軸が見本群から明らかに外れている場合は、件数や自己採点に関係なくREPAIRまたはFAIL。
## v0.1.66 前記事artifact流用禁止Gate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_ISOLATION
制作・高品質チェック・訂正・改善ハンドオフは、対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIR として止める。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
### 必須証跡
- `target_article_key`
- `target_slug`
- `target_service_name`
- `artifact_article_key`
- `artifact_slug`
- `artifact_stage`
- `artifact_slug_match`
- `validator_result_slug_match`
- `directory_core_slug_match`
- `public_or_preview_html_slug_match`
- `cross_article_artifact_reuse_detected`
- `cross_article_artifact_reuse_result`
`artifact_slug_match=true`、`validator_result_slug_match=true`、`directory_core_slug_match=true`、`public_or_preview_html_slug_match=true`、`cross_article_artifact_reuse_detected=false` を実測保存できない場合はPASS禁止。
## v0.1.66 前記事を公開基準値にしないGate
Marker: 2026-06-06_PORNFUN_CROSS_ARTICLE_ARTIFACT_FAIL_NOT_BLOCK
前の記事を公開基準値にしない。前記事artifact流用禁止Gateは、現在記事のPASS禁止条件として扱う。対象article_key / slug / service_nameと一致しない前記事の基準値、validator_result.json、Directory Core値、taxonomy、meta、公開HTML、公開判定、score、score_cap、FAIL/REPAIR結果を、別記事のPASS根拠として使ってはいけない。
### FAIL/REPAIR条件
- 対象slugと異なる `validator_result.json` を現在記事のvalidator結果として読む。
- 対象slugと異なる公開HTML、preview HTML、WP post、Directory Core row、taxonomy、meta、カテゴリ、評価表、基本表、validator scoreを流用する。
- 前記事の「公開済み」「200」「validator成果物あり」を理由に、現在記事の公開HTML取得・validator実行・Directory Core readbackを省略する。
- `artifact_key`、`article_key`、`slug`、`service_name`、`stage`、`validator_result_json_path` の対応確認がない。
- `mylovely-ai` など別slugのartifactから公開基準値やDirectory Core通し方だけを抜き出して、`ourdream-ai` 等の別記事へ適用する。
上記のいずれかを検出したら、FAILまたはREPAIRとして扱う。修正する場合は、対象slug専用の公開/preview HTMLを取得し直し、対象slug専用のvalidator_result.jsonを作り、対象slug専用のDirectory Core readbackを確認する。
## v0.1.66 NSFW AI評価記事 既存カテゴリ固定Gate
Marker: 2026-06-06_PORNFUN_NSFW_AI_EXISTING_CATEGORY_GATE
このルールは、NSFW AIの評価記事に関してのみ適用する。porn-fun全体、別記事種別、別workflowへ広げない。
NSFW AIの評価記事は、既存カテゴリ/Directory Typeである `https://porn-fun.com/ja/directory-type/nsfw-ai/` に入れる。勝手に新しいカテゴリ、Directory Type、WP term、slug、曖昧カテゴリを作らない。
### 必須
- 対象記事の主カテゴリ/Directory Typeは `https://porn-fun.com/ja/directory-type/nsfw-ai/` / slug `nsfw-ai` に固定する。
- 公式主機能がNSFW AI系の評価記事である場合だけ、この既存カテゴリへ入れる。
- 投稿・更新後にカテゴリ/Directory Type readbackを行い、既存 `nsfw-ai` に入っていることを確認する。
- `category_url=https://porn-fun.com/ja/directory-type/nsfw-ai/`、`category_slug=nsfw-ai`、`category_existing_term_used=true`、`category_new_term_created=false`、`category_readback_confirmed=true` を保存する。
### FAIL/REPAIR
- NSFW AI評価記事で新規カテゴリ、Directory Type、WP term、slugを作る。
- NSFW AI評価記事を `https://porn-fun.com/ja/directory-type/nsfw-ai/` 以外のカテゴリへ入れる。
- カテゴリ/Directory Type readbackを確認しない。
- 公式主機能未確認のままカテゴリを選ぶ。
- 主機能と違うWPカテゴリ/Directory Typeへ入れる。
上記のいずれかがある場合はPASS禁止。既存 `nsfw-ai` へ付け直し、readback確認後に再判定する。
## v0.1.66 リード自然文・主語述語Gate
Marker: 2026-06-06_PORNFUN_LEAD_NATURALNESS_QUALITY_GATE
高品質チェック、制作、訂正では、リード文の不自然な説明文を必ずFAIL/REPAIRにする。特に次のような文はPASS禁止。
NG例:
`OurDream AIは、チャットだけでなく画像、動画、音声、キャラクター作成まで触りたい読者向けの成人向けAI companionレビュー記事だ。`
### 何がおかしいか
- `OurDream AIは ... レビュー記事だ` となっており、サービス名を記事そのものとして扱っている。主語と述語が一致していない。
- `触りたい読者向け` は文脈上不自然で、対象も曖昧。NSFW文脈では余計な含みも出るため、リードでは使わない。
- `AI companion` のような英語混在は、公式名称や固有カテゴリとして必要な場合を除き不自然。日本語本文では `AIコンパニオン` など読者向けの表記に直す。
- `チャットだけでなく画像、動画、音声、キャラクター作成まで` の列挙だけで導入しており、「この記事が何を確認するページか」が自然に伝わらない。
### 必須判定
- サービス名を主語にしている場合、述語はサービスの説明にする。記事説明をする場合は `この記事では`、`本記事では`、`このページでは` を主語にする。
- `サービス名は ... レビュー記事だ`、`サービス名は ... 解説ページだ`、`サービス名は ... 比較記事だ` の形は、主語述語不一致としてFAIL/REPAIR。
- `触りたい`、`触れる読者`、`触ってみたい読者` など、対象が曖昧で不自然な表現はリードではFAIL/REPAIR。`確認したい`、`比較したい`、`検討したい`、`使い勝手を知りたい` などに直す。
- 英語混在、直訳調、機械的な名詞列挙、読者に向かない説明口調が残る場合はFAIL/REPAIR。
- 修正後のリードは、このページが何を確認し、読者が何を判断できるページかを自然に説明する。
### 修正文の方向
- サービス説明型: `OurDream AIは、チャットに加えて画像・動画・音声・キャラクター作成まで扱える成人向けAIコンパニオン系サービスだ。`
- 記事説明型: `この記事では、OurDream AIのチャット、画像、動画、音声、キャラクター作成の機能を確認し、料金や安全性、使いやすさまで整理する。`
### 必須証跡
- `lead_subject_predicate_result`
- `lead_service_article_confusion_detected`
- `lead_awkward_phrase_detected`
- `lead_english_mixture_detected`
- `lead_reader_facing_rewrite_done`
- `lead_naturalness_machine_result`
上記のいずれかが未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLのリード本文を取得して判定する。
## v0.1.66 記事全文・自然文Gate
Marker: 2026-06-06_PORNFUN_ARTICLE_NATURAL_LANGUAGE_GATE
不自然な文章の検査対象はリード文だけではない。制作、高品質チェック、訂正、改善ハンドオフでは、記事全文を読者向けの自然な日本語として検査する。本文内のどこか1箇所でも不自然文が残る場合はPASS禁止で、REPAIRまたはFAILにする。
### 検査対象
- リード文
- H2/H3直下の導入文
- 評価項目の説明文
- スコア理由文
- BOX内テキスト
- ✅/⚠️リスト
- FAQ回答
- まとめ・結論
- 公式CTA前後の文
### FAIL/REPAIR条件
- サービス名を記事そのものとして扱う。例: `OurDream AIは ... レビュー記事だ`
- サービス説明と記事説明を混ぜる。
- 主語述語がズレている。
- `〜したい読者向けのレビュー記事だ`、`触りたい読者向け`、`〜まで触れる` のような雑で不自然な締めを使う。
- 共起語、KW、機能名、素材語を並べるだけで、読者向けの文に直していない。
- `AI companion` など、公式名称でも固有表記でもない英語を雑に混ぜる。
- 見出し語をそのまま繰り返しただけで説明になっていない。
- FAQ、BOX、✅/⚠️リストが本文の焼き直しで、読者の判断材料になっていない。
- 日本語として一応通っても、読者が何を判断できるか分からない。
- 直訳調、テンプレ調、機械的な名詞接続、説明不足の短文、意味の薄い抽象文が残る。
### 制作cronの必須工程
- 本文全体を書いた後、公開/preview HTMLを取得する前に、記事全文の自然文リライト工程を1回以上行う。
- リライト後に公開HTMLまたはpreview HTMLを取得し、本文全体をセクション別に抽出する。
- `lead / h2_intro / h3_intro / score_reason / rating_item_body / box_text / check_warning_list / faq_answer / summary_conclusion / cta_context` を検査する。
- NG文がある場合は、公開・task8・PASSへ進めず、本文を修正して再検査する。
### 高品質チェックcronの必須工程
- 制作cronの自己申告や既存validatorを信用しない。
- 公開HTMLまたはpreview HTMLを再取得し、記事全文の自然文Gateを再実行する。
- どこか1箇所でも不自然文が残る場合は、品質PASS禁止。`quality_delta_items` に対象セクション、NG文、理由、修正案を保存する。
### 訂正cronの必須工程
- 指摘箇所だけでなく、同種の不自然文が本文全体に残っていないか横断確認する。
- 修正後HTMLを再取得し、記事全文の自然文Gateを再実行する。
- `article_natural_language_result=PASS` になるまで task8 へ戻さない。
### 必須証跡
- `article_natural_language_gate_version=0.1.66-pornfun-internal-link-live-200-gate-20260607`
- `article_natural_language_sections_checked`
- `article_natural_language_result`
- `article_natural_language_fail_count`
- `unnatural_sentence_items`
- `lead_naturalness_result`
- `h2_intro_naturalness_result`
- `h3_intro_naturalness_result`
- `score_reason_naturalness_result`
- `rating_item_body_naturalness_result`
- `box_text_naturalness_result`
- `check_warning_list_naturalness_result`
- `faq_answer_naturalness_result`
- `summary_conclusion_naturalness_result`
- `cta_context_naturalness_result`
- `subject_predicate_mismatch_count`
- `service_article_confusion_count`
- `keyword_stuffed_sentence_count`
- `awkward_phrase_count`
- `machine_translation_tone_count`
- `unnecessary_english_mixture_count`
- `reader_facing_rewrite_examples`
必須証跡が欠落、未測定、固定true、自己申告のみの場合はPASS禁止。公開HTMLまたはpreview HTMLから実測する。
## v0.1.66 制作cron 既公開記事No-Touch / task2消費Gate
Marker: 2026-06-07_PORNFUN_PRODUCTION_PUBLISHED_NO_TOUCH_HANDOFF_GATE
制作cronは既公開記事を触らない。対象slugに `production_publish_evidence`、`validator_result`、`task8_handoff`、公開URL、または既公開証跡がある場合、そのslugは制作済みとして扱う。制作cronは公開記事本文、公開HTML、既存validator_result.json、Directory Core、カテゴリ、WP投稿を上書き・修正・再制作してはいけない。
### 既公開・handoff済みslugで制作cronがやること
- 公開記事本文を編集しない。
- 公開HTMLをvalidator上書き目的で取得しない。
- 既存 `validator_result.json` に不足証跡を追記しない。
- Directory Core、カテゴリ、FAQ、装飾、本文、WP投稿を制作cronから直さない。
- 既存 `task8_handoff` を尊重し、task2がpendingなら `agent_task_action` の `task_done` で消費する。
- stale task2をdoneにしただけで制作runを終了してはいけない。
- stale task2消費後は `api=agent_work_queue` と `api=agent_pack` を再取得し、次の `task_code=2` / `production_ready` かつ未公開・未task8 handoffの候補を探す。
- 該当候補がある場合は、その候補で新規記事を1本制作する。
- 該当候補が0件の場合のみ、制作対象なしとして終了できる。
- 次工程は高品質チェック/訂正側に任せる。品質追加確認や自然文再判定は高品質チェック以降の役割。
### FAIL/REPAIR
- 既公開slugの公開記事本文を制作cronが修正しようとする。
- 既公開slugの公開HTMLを取得し、制作cronがvalidator_result.jsonを上書きしようとする。
- `task8_handoff` があるのに task2 pending を放置して完了する。
- task2をdoneにせず、次回制作cronに同じslugを残す。
- stale task2消費後にキューを再取得せず、候補があるのに制作runを終了する。
- 公開済み/handed-off の証跡を「制作対象」と誤判定する。
### 必須証跡
- `production_existing_public_evidence_checked`
- `production_existing_task8_handoff_checked`
- `production_public_article_no_touch=true`
- `production_validator_no_overwrite=true`
- `production_stale_task2_consumed`
- `production_stale_task2_consumed_via=agent_task_action`
- `production_next_stage_preserved=task8`
- `production_stale_task2_followup_queue_checked=true`
- `production_followup_candidate_result=selected_new_candidate|no_eligible_candidate`
- `production_followup_candidate_article_key`
- `production_no_eligible_candidate_reason`
既公開・handoff済みslugで上記が欠落している場合は、制作完了扱い禁止。公開記事を直す必要がある場合は、制作cronではなく高品質チェックまたは訂正cronの対象にする。
## v0.1.66 Q&A details exact Gate
Marker: 2026-06-07_PORNFUN_QA_DETAILS_EXACT_GATE
Q&A is PASS only when the visible article body contains 5 or more exact Q&A sets in this form:
```html
<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>
```
This means:
- The outer element is `details` and its class is `qa-box`.
- The question element is `summary` and its class is `qa-question`.
- The answer element is `div` and its class is `qa-answer`.
- One Q&A set has one `details.qa-box`, one `summary.qa-question`, and one `div.qa-answer`.
- `QUESTION_TEXT` and `ANSWER_TEXT` are real reader-facing text, not empty placeholders.
- Count only visible Q&A in the article body.
- Do not count FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, hidden elements, or class-count-only matches.
FAIL conditions:
- Fewer than 5 exact visible article-body sets.
- A `qa-box` exists but the outer element is not `details`.
- A `qa-question` exists but the element is not `summary`.
- A `qa-answer` exists but the element is not `div`.
- `qa-box`, `qa-question`, or `qa-answer` are counted from outside the article body.
- Q&A is only present as FAQ JSON-LD, JavaScript, schema, custom code, TOC, related posts, plugin parts, sidebar, footer, comments, or hidden elements.
- Q&A answers are empty, duplicated filler, a rewrite of nearby body text only, polite style, or not useful to readers.
Production cron:
- Must create 5 or more exact Q&A sets before PASS.
- Must measure public or preview HTML and save `qa_details_exact_gate=PASS`.
- Must not PASS from self-scoring, class counts only, or FAQ JSON-LD.
Quality check cron:
- Must refetch public or preview HTML.
- Must count only the exact visible article-body Q&A sets.
- If `qa_details_exact_count < 5`, save `QA_DETAILS_EXACT_GATE_FAIL` in `failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Must send the article to correction when this FAIL is present, even if other gates also fail.
Correction cron:
- Must repair Q&A to 5 or more exact sets.
- Must rerun the same validator after correction.
- Must not fix only one Q&A item while leaving other required FAIL items.
Required evidence:
- `qa_details_exact_gate=PASS|FAIL`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `qa_details_exact_missing_count`
- `qa_details_exact_items`
- `qa_details_exact_fail_reasons`
- `qa_details_exact_body_only=true`
- `qa_details_exact_html_pattern=<details class="qa-box"><summary class="qa-question">QUESTION_TEXT</summary><div class="qa-answer">ANSWER_TEXT</div></details>`
Missing evidence, unmeasured evidence, fixed true, self-report-only PASS, or class-count-only PASS is FAIL.
## v0.1.66 Mandatory public/preview HTML measurement Gate
Marker: 2026-06-07_PORNFUN_MANDATORY_PUBLIC_HTML_MEASUREMENT_GATE
This is a production-onward no-escape Gate for porn-fun NSFW AI review articles.
Production, quality_check, correction, and improvement_handoff must not PASS an
article unless every required article-quality rule has been measured from public
HTML or preview HTML, or from an explicit Hub readback/source artifact when the
rule cannot exist in public HTML. Self-report, fixed true, count-only PASS,
score-only PASS, "looks OK", "already checked", or "not applicable" without
evidence is FAIL.
Core rule:
- If any required item from the current porn-fun Gates is missing, unmeasured,
JSON-broken, evidence-broken, self-scored only, fixed-true only, count-only, or
moved to a warning instead of a required failure, the result is FAIL.
- A required FAIL cannot be hidden by `score_cap`, `final_quality_score`, or a
narrative explanation. It must appear in `failed_gate_names`,
`required_gate_failures`, and `quality_delta_items`.
- `pass_allowed=true`, `task8_handoff_allowed=true`, or `accepted=true` is
forbidden unless `mandatory_public_html_measurement_gate=PASS`.
The exact Q&A structure remains mandatory. Visible article-body Q&A must contain
5 or more sets of this exact structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
Also accept the same element/class structure with real question and answer text.
FAQ JSON-LD, JavaScript, schema, TOC, related posts, plugin parts, sidebar,
footer, comments, hidden elements, or class counts alone do not count.
Required public/preview HTML measurements:
- `public_or_preview_html_refetched=true`
- `public_or_preview_html_source=public_html|preview_html`
- `public_or_preview_html_url_or_path`
- `public_or_preview_html_sha256`
- `article_body_html_extracted=true`
- `article_body_selector`
- `article_body_text_chars`
- `seo_title_h1_separated_gate`
- `seo_title_strength_gate`
- `lead_length_gate`
- `lead_marker_gate`
- `lead_natural_language_gate`
- `article_natural_language_gate`
- `official_cta_right_aligned_gate`
- `directory_plugin_rating_score_table_gate`
- `directory_plugin_basic_info_table_gate`
- `manual_score_table_absent_gate`
- `manual_basic_info_table_absent_gate`
- `body_minimum_4000_chars_gate`
- `kw_occurrence_rate_gate`
- `cooccurrence_related_terms_gate`
- `original_heading_from_kw_gate`
- `joutai_strict_machine_gate`
- `desu_masu_count`
- `h2_h3_balance_gate`
- `rating_item_h3_reason_gate`
- `qa_details_exact_gate`
- `qa_details_exact_count`
- `qa_details_exact_required_count=5`
- `faq_jsonld_body_absent_gate`
- `custom_code_body_absent_gate`
- `internal_link_count_gate`
- `external_link_overuse_gate`
- `required_decorative_box_class_gate`
- `blank_box_bb_check_bb_yellow_count`
- `information_box_count`
- `warning_box_count`
- `black_bold_usage_gate`
- `red_bold_usage_gate`
- `yellow_marker_usage_gate`
- `decoration_golden_ratio_gate`
- `checkmark_list_usage_gate`
- `warning_list_usage_gate`
- `checkmark_count_min_3`
- `warning_count_min_3`
- `inline_check_warning_forbidden_gate`
- `first_conclusion_valid_box_gate`
- `category_readback_gate`
- `nsfw_ai_existing_directory_category_gate`
- `nsfw_ai_existing_directory_type_gate`
Required non-HTML/readback/source-artifact measurements:
- `search_compass_present=true`
- `reader_intent_pack_present=true`
- `production_material_pack_present=true`
- `official_reference_urls_checked`
- `public_review_reputation_sources_checked`
- `directory_core_readback_confirmed=true`
- `wp_post_readback_confirmed=true`
- `validator_result_json_present=true`
- `validator_json_parse_gate=PASS`
- `validator_required_keys_complete=true`
- `validator_unmeasured_items=[]`
- `mandatory_gate_failures=[]`
- `mandatory_gate_fail_count=0`
Every measured item must include evidence details:
- `source`
- `selector_or_readback_key`
- `count_or_value`
- `sample`
- `measured_at`
- `html_sha256_or_artifact_sha256`
- `result=PASS|FAIL`
- `fail_reason`
Escape blockers:
- Fixed `true` without evidence details is FAIL.
- `not_applicable` without a rule-specific reason and source proof is FAIL.
- Class-count-only PASS is FAIL.
- Existing validator JSON from another slug is FAIL.
- Previous article values used as the current article baseline are FAIL.
- Production cron must not repair, overwrite, or revalidate already published or
task8-handoff slugs; it must consume stale task2 and select a new eligible
candidate.
- Quality_check must refetch HTML and rerun the validator. It must not trust
production self-scoring or existing validator JSON.
- Correction must repair all required FAIL items and rerun the validator before
returning the article to task8.
NSFW AI category/readback:
- NSFW AI review articles must use the existing directory category
`https://porn-fun.com/ja/directory-category/nsfw-ai/` when directory_category
applies.
- NSFW AI review articles must use the existing directory type
`https://porn-fun.com/ja/directory-type/nsfw-ai/` when directory_type applies.
- Creating or assigning `directory-type/nsfw-ai-generator/` for this workflow is
FAIL.
- Category/type readback must be measured after save/publish.
Final validator rule:
- `mandatory_public_html_measurement_gate=PASS` only when all required measured
gates are PASS, all required evidence keys exist, and no required FAIL remains.
- If even one required item is missing or unmeasured, set
`mandatory_public_html_measurement_gate=FAIL`,
`pass_allowed=false`, `correction_required=true`, and save the missing item in
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
## v0.1.66 Hard-stop repair loop Gate
Marker: 2026-06-07_PORNFUN_HARD_STOP_REPAIR_LOOP_GATE
Scope: porn-fun NSFW AI review articles, production and later.
This Gate closes the remaining escape routes. A cron is not allowed to say PASS,
task8-ready, accepted, complete, or "finished" while any required FAIL remains.
Hard FAIL names that must stop the run:
- `DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`
- `DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`
- `MANUAL_RATING_SCORE_TABLE_USED_INSTEAD_OF_PLUGIN`
- `MANUAL_BASIC_INFO_TABLE_USED_INSTEAD_OF_PLUGIN`
- `SEO_TITLE_H1_NOT_SEPARATED`
- `SEO_TITLE_MISSING_OR_WEAK`
- `H1_MISSING_OR_WRONG`
- `PUBLIC_HTML_MEASUREMENT_MISSING`
- `PUBLIC_HTML_MEASUREMENT_FIXED_TRUE_ONLY`
- `VALIDATOR_RESULT_JSON_MISSING_OR_BROKEN`
- `QA_DETAILS_EXACT_GATE_FAIL`
- `MANUAL_REREAD_AFTER_REPAIR_MISSING`
- `TARGET_GATE_MANUAL_FULL_REREAD_AFTER_FAIL_MISSING`
- `READER_PERSPECTIVE_RECHECK_AFTER_REPAIR_MISSING`
- `REPAIR_LOOP_STOPPED_WITH_REQUIRED_FAILS`
Dictionary plugin table hard stop:
- The article must use the directory plugin rating score table.
- The article must use the directory plugin basic info table.
- Public or preview HTML must prove both plugin tables are visible in the article
body or directory plugin article area.
- Handwritten HTML tables, normal editor tables, ranking ad tables, pasted score
tables, or text-only score sections are not substitutes.
- If either plugin table is missing, PASS is forbidden even when all other items
look good.
- Required evidence:
- `directory_plugin_rating_score_table_gate=PASS`
- `directory_plugin_basic_info_table_gate=PASS`
- `directory_plugin_rating_score_table_source=public_html|preview_html`
- `directory_plugin_basic_info_table_source=public_html|preview_html`
- `directory_plugin_rating_score_table_selector`
- `directory_plugin_basic_info_table_selector`
- `directory_plugin_rating_score_table_sample`
- `directory_plugin_basic_info_table_sample`
- `manual_score_table_count=0`
- `manual_basic_info_table_count=0`
H1 and SEO title hard stop:
- H1 and SEO title must be separately measured from public or preview HTML.
- H1 must be the visible page H1 for the target article.
- SEO title must be the document title or SEO title metadata, not copied blindly
from H1 without review.
- A service-name-only SEO title, weak SEO title, missing SEO title, H1/SEO title
confusion, or unmeasured title is FAIL.
- Required evidence:
- `h1_text`
- `seo_title_text`
- `h1_selector`
- `seo_title_source=title_tag|seo_meta|preview_html`
- `seo_title_h1_separated_gate=PASS`
- `seo_title_strength_gate=PASS`
- `h1_gate=PASS`
- `seo_title_fail_reasons=[]`
Quality-check recording hard stop:
- If any of the following conditions is detected, quality_check itself is FAIL
unless the exact FAIL name is saved in all three arrays:
`failed_gate_names`, `required_gate_failures`, and `quality_delta_items`.
- Missing directory plugin rating score table must be recorded as
`DIRECTORY_PLUGIN_RATING_SCORE_TABLE_MISSING`.
- Missing directory plugin basic info table must be recorded as
`DIRECTORY_PLUGIN_BASIC_INFO_TABLE_MISSING`.
- H1 and SEO title not separated must be recorded as
`SEO_TITLE_H1_NOT_SEPARATED`.
- Missing, weak, or service-name-only SEO title must be recorded as
`SEO_TITLE_MISSING_OR_WEAK`.
- If quality_check detects the problem but does not record the exact FAIL name in
all three arrays, set `QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Production publish/task8 hard stop:
- Production cron must not publish, mark task8-ready, hand off, or complete when
public/preview HTML measurement is missing.
- Production cron must save the public/preview measurement evidence before
publish/task8 handoff.
- If public/preview HTML measurement is missing, set
`PUBLIC_HTML_MEASUREMENT_MISSING` and stop.
Q&A hard stop remains:
- Visible article body must contain at least 5 exact Q&A sets using this structure:
```html
<details class="qa-box"><summary class="qa-question">質問内容</summary><div class="qa-answer">回答内容</div></details>
```
- Same element/class structure with real question and answer text is required.
- FAQ JSON-LD, JavaScript, TOC, sidebar, footer, related posts, hidden elements,
or class counts alone do not count.
Mandatory repair loop:
1. If production, quality_check, correction, or improvement_handoff finds any
required FAIL, it must not finish as PASS.
2. If even one FAIL appears, the cron must identify the target Gate/manual files
related to that FAIL and reread those target Gate/manual files in full before
deciding the repair. Partial excerpts, memory-only handling, or "already know"
is FAIL.
3. After each repair, the cron must reread all required current porn-fun site Hub
manuals/Gates needed for article quality from this site Hub only.
4. After rereading, the cron must check the article again from the reader's point
of view, not only from a validator checklist.
5. It must refetch public or preview HTML, rerun the validator, and save a new
`validator_result.json`.
6. If any required FAIL remains, repair again.
7. Repeat target Gate/manual full reread after FAIL -> repair -> manual reread ->
reader-perspective check -> public/preview HTML measurement -> validator save
until required FAIL count is zero.
8. Repeat manual reread -> reader-perspective check -> public/preview HTML
measurement -> validator save -> repair until required FAIL count is zero.
9. The cron may stop only when:
- `mandatory_gate_fail_count=0`
- `required_gate_failures=[]`
- `validator_unmeasured_items=[]`
- `mandatory_public_html_measurement_gate=PASS`
- `hard_stop_repair_loop_gate=PASS`
Required loop evidence:
- `repair_loop_iteration_count`
- `target_gate_manual_full_reread_after_fail=true`
- `target_gate_manual_full_reread_files`
- `target_gate_manual_full_reread_fail_map`
- `target_gate_manual_full_reread_completed_at`
- `manuals_reread_after_each_repair=true`
- `manual_reread_files`
- `reader_perspective_recheck_after_each_repair=true`
- `reader_perspective_recheck_items`
- `public_or_preview_html_refetched_after_each_repair=true`
- `validator_rerun_after_each_repair=true`
- `validator_result_json_path`
- `validator_result_json_sha256`
- `remaining_required_fail_count`
- `remaining_required_failures`
- `quality_check_required_fail_recording_gate=PASS|FAIL`
- `quality_check_required_fail_not_recorded_items`
- `production_publish_task8_public_html_measurement_gate=PASS|FAIL`
- `hard_stop_repair_loop_gate=PASS|FAIL`
If any of the above evidence is missing, fixed true without detail, stale from a
previous slug, or not tied to the current article slug, the result is FAIL.
Do not edit already published/task8-handoff articles in production cron. Existing
published failures belong to quality_check/correction flows, not new production.
## v0.1.66 Internal link live 200 Gate
Marker: 2026-06-07_PORNFUN_INTERNAL_LINK_LIVE_200_GATE
Scope: porn-fun NSFW AI review articles, production and later.
Internal links must never point to unpublished, missing, 404, draft, preview-only,
wrong-language, or unverified pages. A 404 internal link is a hard FAIL.
Hard FAIL names:
- `INTERNAL_LINK_404_FOUND`
- `INTERNAL_LINK_NOT_200_FOUND`
- `INTERNAL_LINK_UNVERIFIED`
- `INTERNAL_LINK_WRONG_LANGUAGE`
- `INTERNAL_LINK_PREVIEW_OR_DRAFT_USED`
- `INTERNAL_LINK_EVIDENCE_MISSING`
Rule:
- Production, quality_check, correction, and improvement_handoff must extract all
internal body links from public or preview HTML.
- Each internal link must be checked by live HTTP request or WordPress/Directory
readback before PASS.
- Only HTTP 200 final URLs are allowed for normal internal links.
- 301/302/307/308 redirects are not enough unless the final URL is recorded and
final status is 200.
- 404/410/403/500, missing response, timeout, malformed URL, wrong language, or
draft/preview-only URL is FAIL.
- Do not add `https://porn-fun.com/ja/ai-girlfriend-review/` or any other link
unless its live final status is 200 at validation time.
- Link count alone is not PASS. Every URL needs evidence.
Required evidence:
- `internal_link_live_check_gate=PASS|FAIL`
- `internal_link_urls`
- `internal_link_count`
- `internal_link_checked_count`
- `internal_link_status_items`
- `internal_link_failed_items`
- `internal_link_404_items`
- `internal_link_unverified_items`
- `internal_link_final_url_items`
- `internal_link_live_check_completed_at`
- `internal_link_live_check_source=public_html|preview_html`
Quality-check recording hard stop:
- If a 404 or non-200 internal link exists, the exact FAIL name must appear in all
three arrays: `failed_gate_names`, `required_gate_failures`, and
`quality_delta_items`.
- If quality_check sees the problem but does not record the exact FAIL name, set
`QUALITY_CHECK_REQUIRED_FAIL_NOT_RECORDED`.
Repair loop:
- If any internal link FAIL appears, reread the target Gate/manual in full,
repair the link, refetch public or preview HTML, rerun link checks, rerun the
validator, and repeat until no internal link FAIL remains.
- Do not finish, publish, task8 handoff, or report PASS while internal link FAILs
remain.
PROMPT_END