Skip to content

/c2pa-sign

Embed C2PA (Content Authenticity Initiative) provenance manifests into SocialForge AI-generated assets — images, video, audio. Use when: preparing AI-generated social posts for EU markets to comply with EU AI Act Article 50 (applicable 2 Aug 2026); making AI generation

shell
$ npx -y skills add indranilbanerjee/socialforge --skill c2pa-sign --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/c2pa-sign
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

Embed C2PA (Content Authenticity Initiative) provenance manifests into SocialForge AI-generated assets — images, video, audio. Use when: preparing AI-generated social posts for EU markets to comply with EU AI Act Article 50 (applicable 2 Aug 2026); making AI generation

SKILL.md

c2pa-sign.SKILL.md
name: c2pa-sign
description: "Embed C2PA (Content Authenticity Initiative) provenance manifests into SocialForge AI-generated assets — images, video, audio. Use when: preparing AI-generated social posts for EU markets to comply with EU AI Act Article 50 (applicable 2 Aug 2026); making AI generation disclosure machine-readable; signing already-generated assets retroactively; auto-signing newly generated assets when c2pa_auto_sign is enabled in brand profile."

/socialforge:c2pa-sign — Embed Content Authenticity Provenance

Purpose

Context efficiency

Asset-heavy skill. **Grep before Read** the asset catalog (`${CLAUDE_PLUGIN_DATA}/socialforge/brands/<brand>/asset-index.json`) — never list the asset directory. Reference generated images / videos by path, not by loading metadata. Brand profile loads once per session.

Wraps `scripts/c2pa_sign.py` to add a **C2PA manifest** to any SocialForge-generated marketing asset. The manifest carries:

  • Machine-readable provenance trail (brand, generator name, timestamp, prompt, target platform)
  • IPTC digital-source-type vocabulary tag (`TRAINED_ALGORITHMIC_MEDIA` / `COMPOSITE_WITH_TRAINED_ALGORITHMIC_MEDIA` / `HUMAN_EDITS`)
  • schema.org CreativeWork assertion (author = brand organization, dateCreated, publishingPrinciples = target platform)

**Why this matters:** EU AI Act Article 50 applies from **2 August 2026**. Generative-AI marketing content distributed in EU markets must be marked in a machine-readable format using open, interoperable standards — C2PA is the emerging backbone. Penalty: up to **€15 million or 3% global annual turnover**. Additional disclosure obligations apply under NY synthetic-performer law (effective June 2026) and FTC May 2026 endorsement guidance.

The resulting asset is verifiable at [contentcredentials.org/verify](https://contentcredentials.org/verify) or in any C2PA-aware viewer (Adobe Photoshop, Lightroom, Truepic, Microsoft Copilot, etc.).

C2PA spec versions relevant to SocialForge (June 2026)

  • **Content Credentials 2.3** (released 9 February 2026 — [launch post](https://c2pa.org/the-c2pa-launches-content-credentials-2-3-and-celebrates-5-years-of-impact-across-the-digital-ecosystem/)) added support for **live video** (broadcast/streaming), **plain text documents**, **OGG Vorbis audio**, **large AVI video files**, and **EXIF Original Preservation Images**. Relevant to SocialForge because:
  • Live video signing matters if you're producing Reels / TikTok / Shorts streaming content alongside the planned monthly batch.
  • EXIF Original Preservation Image format is the cleanest path for signing product photography that the brand wants to preserve through ad ops cropping.
  • **C2PA Spec 2.4** (April 2026 — [spec.c2pa.org/specifications/specifications/2.4](https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html)) introduces the **AI Disclosure Assertion (`c2pa.ai-disclosure`)** — machine-readable AI transparency info that the EU AI Act Article 50 deployer pathway will read. When `c2pa_sign.py` is on a C2PA SDK ≥ 0.36 that handles 2.4, include this assertion alongside the existing IPTC + schema.org tags. The combination is what the **EU Code of Practice WG1/WG2** drafts reference as the canonical machine-readable mark.
  • **C2PA Trust List** is now handled via the public C2PA Conformance Program — production signing certificates should come from a Conformance-Program-listed CA.

For the regulatory context (EU Article 50, the voluntary Code of Practice, the provider-vs-deployer obligations split, and where SocialForge falls), see `references/eu-ai-act-article50.md` in this plugin.

When SocialForge invokes this automatically

If a brand profile sets `c2pa_auto_sign: true`, the image and video generation pipelines call this script as a post-generation step before delivering the asset. The signed file replaces the unsigned one — original output path is preserved.

If the brand profile does NOT set `c2pa_auto_sign: true`, generated assets are unsigned by default. You can sign on demand by invoking this skill explicitly.

Quick examples

# Sign an image generated by Vertex AI for Instagram
/socialforge:c2pa-sign \
    --input assets/q3-launch-hero.png \
    --output assets/signed/q3-launch-hero.png \
    --brand "Acme Corp" \
    --generator "Vertex AI Nano Banana Pro" \
    --ai-claim ai-generated-content \
    --platform instagram

# Sign a video generated by Kling for TikTok
/socialforge:c2pa-sign \
    --input campaigns/launch.mp4 \
    --output campaigns/signed/launch.mp4 \
    --brand "Acme Corp" \
    --generator "WaveSpeed Kling v3.0 Pro" \
    --ai-claim ai-generated-content \
    --platform tiktok

# Production sign with a real C2PA certificate
/socialforge:c2pa-sign \
    --input assets/q3-launch-hero.png \
    --output assets/signed/q3-launch-hero.png \
    --brand "Acme Corp" \
    --generator "Vertex AI Nano Banana Pro" \
    --ai-claim ai-generated-content \
    --platform instagram \
    --signing-cert /secure/c2pa-prod-cert.pem \
    --signing-key /secure/c2pa-prod-key.pem

AI claim values (IPTC digital source type)

| Value | When to use | |---|---| | `ai-generated-content` | Asset fully generated by AI (default for SocialForge image/video output) | | `ai-assisted-edits` | Human-created asset with AI editing (e.g. brand-watermarked stock photo + AI background replacement) | | `ai-no-substantive-changes` | AI used but no semantic change (e.g. AI upscaling, AI noise reduction) |

Supported asset formats

Image: `.png` · `.jpg/.jpeg` · `.webp` · `.gif` · `.tiff` Video: `.mp4` · `.mov` · `.webm` Audio: `.mp3` · `.wav`

Signing certificate

Production C2PA signatures require a certificate from a CAI-recognized signing authority (Adobe, Truepic, Numbers Protocol, Microsoft Azure Confidential Ledger). Pass `--signing-cert` and `--signing-key` for production. If omitted, the script generates a **self-signed 90-day dev certificate** — assets s

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withsocialforge

Your client wants 30 days of social content across six platforms with brand-faithful imagery, AI-generated video, and provenance signed for EU markets. You have five days.

Get the whole plugin, auto-invoked
Stats
24
Stars
0
Views
6
Forks
Active
Maintenance
Python
Language
MIT
License
2d ago
Last commit
4mo ago
Created

Repo: indranilbanerjee/socialforge