AI labelling and publishing
Four extension settings control the visible AI labels and the webhook that publishes approved social posts.
AI labelling
Every artifact carries a machine-readable AI marker, whatever the settings
below say: the ai block of the artifact metadata, the markers embedded
in PNG and MP3 files, and the description of the stored file. See
AI labelling for what each artifact carries and ADR-005: AI Label on Every Artifact, Embedded at Storage for
why. Two extension settings (Admin Tools > Settings > Extension
Configuration > nr_repurpose) control the visible labels:
ai(default: on)Label Images - Renders a small "AI-generated" label into the top corner of every
Schaubild HTML render (variants
htmlandhtml_) and every story slide, in the language the artifact is written in. The full AI image (bg ki_) comes straight from the image model and never passes the HTML renderer, so it carries the machine-readable marker only.image ai(default: off)Label Texts - Appends the closing line "This text was created with AI." (German: "Dieser Text wurde mit KI erstellt.") to the copy-ready text of the executive summary, the FAQ, the social posts and the newsletter, in the text's language. It is off by default because editors usually paste these texts into a page, a newsletter tool or a social network that shows its own AI disclosure, where a second one in the text is noise. The social posts reserve the line's length inside their platform limit, so a post with the line still fits.
A setting that is missing — an installation whose extension configuration has not been saved since the update — keeps its default.
Publishing social posts
Approved, scheduled social posts leave through a webhook (see ADR-007: Approval Step and Publishing Through a Webhook). Two extension settings:
social(default: empty)Webhook Url - The
httporhttpsURL that receives each due post by POST as JSON:artifact,Uid job,Uid platform(linkedin,x,instagram),text,publish(UTC, ISO 8601),At source(the job's source URL without user name and password; query and fragment stay),Url ai(alwaysGenerated true) andai. A 2xx answer marks the post published; anything else marks it failed with the status. Empty: no post is sent.Label social(default: empty)Webhook Secret - With a secret, each request carries
X-, so the receiver can check that it comes from this installation.Nr- Repurpose- Signature: sha256=<hex HMAC- SHA256 of the body>
The command nr_ sends the posts whose time has come.
Add it as a task in the scheduler (it is schedulable) or run it from cron every
few minutes:
vendor/bin/typo3 nr_repurpose:publish-due