記事の frontmatter で、生成 AI の関与を IPTC / schema.org 準拠の機械可読フィールドとして宣言できます。人向けには EU 透明性アイコン(任意)も表示されます。

テキスト記事の開示は frontmatter で完結します。static/ 配下のラスタ画像content/asset-provenance.yaml と組み合わせて、オプションで IPTC XMP(ExifTool)埋め込みと C2PA 署名ができます(下記)。

いつ付けるか#

既定は「付けない」。 人が普通に書いた記事(IME・スペルチェックのみ)では digitalSourceType は不要です。

状況推奨
人が書き、AI に推敲・要約・翻訳などを部分的に依頼compositeWithTrainedAlgorithmicMedia
生成 AI が本文の大部分を書き、人は軽い確認のみtrainedAlgorithmicMedia
「人が書いた」と明示的に機械可読で宣言したい(任意)humanEdits(バッジは出ない)

最小例#

---
type: article
title: 例の記事
profile: sorane-okf/0.2
digitalSourceType: compositeWithTrainedAlgorithmicMedia
aiDisclosureNote: 下書きに Claude を使用。事実関係は著者が確認済み。
aiSystems:
  - name: Claude
    provider: Anthropic
---

euAiLabelbasic / fully-generated / partially-modified)は EU アイコンの上書き用です。省略時は digitalSourceType から推論されます。

どこに載るか#

開示を付けた記事は、ビルド成果物の次の場所に伝播します。

  • 記事 HTML(EU バッジ・任意)
  • BlogPosting JSON-LD の digitalSourceType
  • ページ横の .md alternate と okf/bundle.tar.gz
  • catalog.jsonld / search-index.json / feed.xml
  • llms.txt の開示記事カウント

設定(sorane.yaml)#

build:
  ai_disclosure:
    badges: true              # HTML バッジ(既定: 開示あり時 true)
    json_ld: true             # BlogPosting JSON-LD
    machine_readable: true    # catalog / search-index
    atom: true                # feed.xml の category term
    show_on_lists: true       # 一覧のコンパクトアイコン
    policy_url: https://example.com/ai-policy.html

enabled: false にするとバッジ等を抑えられますが、ページに開示 frontmatter がある場合は JSON-LD 等は既定で有効のままです(設計ドキュメント参照)。

検証#

sorane validate --cwd .

sorane-okf/0.2 では未知の digitalSourceType や、euAiLabel だけで digitalSourceType が無い場合はエラーになります。

図表のアクセシビリティ#

図表フェンス(mermaid / d2 等)には代替テキストを付けてください。validate は alt 欠落を warning で知らせます(ビルドは継続)。

```mermaid alt="認証フロー"
flowchart LR
  A --> B
```

またはフェンス内の %% alt: 認証フロー コメントでも構いません。詳細は 図表(Mermaid / D2) を参照してください。

静的画像の IPTC XMP(static/ の JPEG/PNG/WebP)#

build.image_metadata.enabled: true のとき、ExifTool が PATH にあれば asset-provenance.yaml の内容を XMP に書き込みます(Digital Source Type / AI System Used / AI Prompt Information)。

# content/asset-provenance.yaml
assets:
  hero.jpg:
    digitalSourceType: trainedAlgorithmicMedia
    aiDisclosureNote: Prompt and review notes (no secrets / PII)
    aiSystems:
      - name: Example Model
        version: "1"
        provider: Example Inc.
# sorane.yaml
build:
  image_metadata:
    enabled: true
    exiftool: exiftool   # 省略時は PATH の exiftool
  • マニフェストにエントリが無い画像はコピーのみ
  • exiftool 無しのときは 警告のうえコピーのみ(ビルドは継続)
  • Markdown の ![](path) 参照も解決します。static/ 参照は ../static/hero.png のようなパスで asset-provenance.yaml にキーを書けます
  • content/ 内のインライン画像(例: article/assets/fig.png)はビルド時に dist/ へコピーされ、同じマニフェストでタグ付けできます

JSON-LD associatedMedia(Phase 3.1)#

記事本文のインライン画像のうち、asset-provenance.yamldigitalSourceType があるものは BlogPosting JSON-LD の associatedMediaImageObject)として出力されます(build.ai_disclosure.json_ld: true 時)。site.base_url があると contentUrl は絶対 URL になります。

静的画像の C2PA(static/ の JPEG/PNG)#

XMP 埋め込みのあと、c2patool で manifest を署名できます(オプトイン)。同じ asset-provenance.yamldigitalSourceType が C2PA create intent にも使われます。

# sorane.yaml
build:
  c2pa:
    enabled: true
    embed: true
    certificate_path: /path/to/cert.pem   # または env SORANE_C2PA_CERT
    private_key_path: /path/to/key.pem    # または env SORANE_C2PA_KEY
  • 証明書はリポジトリにコミットしない(CI Secrets / ローカル dev key)
  • 再現可能ビルドが必要な CI では sorane build --skip-c2pa
  • c2patool が PATH に無い、または cred 無しのときは 警告のうえコピーのみ(ビルドは継続)

プロファイル#

  • sorane-okf/0.1 … 開示フィールドは任意(検証は緩い)
  • sorane-okf/0.2 … 開示フィールドの形状を厳密に検証

スキーマ: OKF プロファイルsorane-okf/0.2