Description
Tlloancy Source Stamp listens to the official WordPress AI Client (wp_ai_client_prompt() / wp_ai_client_after_generate_result). When a generation finishes through that API, the plugin writes a row in a table on your database. When the post is saved, it is stamped (origin, model, time) from the generation that was made for it.
The journal stores metadata only: caller plugin, model, provider, context, token counts when available, and the user account that triggered the generation. Prompt and completion text are never stored.
An optional visitor-facing note can appear on posts the plugin stamped as generated or assisted. Unstamped posts stay silent.
What it does
- Listens to
wp_ai_client_after_generate_result(WordPress 7.0+) - Writes a self-hosted journal (Tools Source Stamp), filterable and paginated
- Never stores prompt or completion text
- Stamps a post from the generation made for that post (editor, REST route or
post_idparameter), or from the only generation waiting for you (15 minutes) - Block editor sidebar panel and classic editor box to set or correct the origin by hand
- Optional visitor-facing note only on stamped posts, also in feeds
- CSV export of the whole journal
- Personal data export and erasure for the journal, and suggested privacy policy text
- Daily prune of rows older than 365 days (filter
tllss_retention_days)
What it does not do
- Site-wide chatbot banners or AI-tool scanners
- Image IPTC / C2PA embedding
- Compliance scores, Article 4 checklists, or legal templates
- RAG, budget caps, or model routing
Honesty about the law
Installing this plugin does not make a site compliant with Regulation (EU) 2024/1689. Whether Article 50 applies to a given page is a legal assessment for the site operator. This is a technical record of AI Client use.
Requirements
Automatic stamps need WordPress 7.0 (or later) so wp_ai_client_prompt() exists. On older versions the journal stays empty; you can still set origin by hand in the editor. The block editor panel is shown for post types that support custom fields and the REST API; other types keep the classic box.
Privacy
The journal links each generation to the WordPress user who triggered it. It stays in your database, is deleted after the retention period, can be exported and erased with the WordPress privacy tools (erasing detaches the account and keeps the technical row), and is detached automatically when a user is deleted. Suggested policy text is added to the Privacy Policy guide.
Installation
- Upload the
tlloancy-source-stampfolder to/wp-content/plugins/. - Activate Tlloancy Source Stamp.
- Open Tools Source Stamp. Confirm that the WordPress AI Client is detected.
- Generate content with any plugin that uses
wp_ai_client_prompt(), then check the journal.
FAQ
-
Does this make my site legally compliant?
-
No. It records AI Client use. Legal assessment stays with the site operator.
-
Why was my post not stamped?
-
When you save a post, the plugin looks for a generation you made in the last 15 minutes. If the generation was made from that post’s editor (or a request that names the post), it is used, even when you generated several times: the latest one counts. Otherwise a generation is used only when it is the only one waiting for you; with two, there is no automatic stamp (wrong metadata is worse than a gap). Quick edit and bulk edit never stamp. Tools Source Stamp Test calls the AI Client directly: Generate, then Create draft in a second request. The origin field in the editor remains the manual fallback.
-
A post I stamped by hand was changed by the plugin?
-
No. An origin set by hand is never overwritten by the automatic path.
-
Where do I change the origin?
-
In the block editor, in the document sidebar under Source Stamp. In the classic editor, in the Source Stamp box.
-
Do you send data off the site?
-
No. The journal lives in your database. There is no account and no phone-home.
-
Do you store what the model wrote?
-
No. Only metadata (time, caller, model, tokens, post ID, user ID).
-
What happens to the data when I uninstall?
-
The journal table, the settings and the scheduled task are deleted, on every site of a multisite. The stamps written on posts (
_tllss_*post meta) stay with the content. -
Is this legal advice?
-
No.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Tlloancy Source Stamp” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Tlloancy Source Stamp” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.0
- Fix: in the block editor, the classic box could wipe an automatic stamp right after saving. The block editor now has its own sidebar panel; the classic box only acts on a real change.
- Fix: with automatic stamping turned off, the origin set in the editor box was silently ignored.
- Fix: every save of a stamped post wrote a new journal row and moved the stamp time. A stamp is now written, and journaled, only when it changes.
- Fix: CSV export HTML-escaped its cells and was open to spreadsheet formula injection. It is now plain RFC 4180 CSV with formula-looking cells neutralised, streams the whole journal (no 5,000-row cap) and runs in the admin only.
- New: a generation records the post it was made for, and the stamp goes to that post. Generations made for another post, quick edit and bulk edit can no longer stamp the wrong post. A stamp set by hand is never overwritten.
- New: the origin meta only accepts generated, assisted, human or empty, and requires the right to edit that post (filter
tllss_user_can_set_origin). - New: personal data exporter and eraser, suggested privacy policy text, automatic detaching of deleted users.
- New: journal pagination and an event filter; the screen moves from a top-level menu to Tools Source Stamp.
- New: automatic stamps are marked “auto” in the post list and the editor.
- New: the visitor note also appears in feeds, and is not printed twice when
[tllss_label]is already in the content. - Change: the disclosure version only moves when the visitor-facing note changes, not on every settings save. Retired chatbot notice settings are removed.
- Change: the stamp journal row keeps the plugin that made the generation, not the one saving the post.
- Change: uninstall also cleans every site of a multisite. Test drafts no longer pile up.
1.1.0
- Main file renamed to tlloancy-source-stamp.php and every internal name moved from the ai_helm prefix to tllss: table tllss_log, option tllss_settings, post meta tllss*, filters tllss_retention_days, tllss_run_ttl, tllss_stampable_post_types, tllss_caller_plugin, shortcode [tllss_label]. The journal rows, settings, stamps, and cron written under the old names are adopted on activation.
- A generation’s journal row is now also its queue entry. Attaching it to a post is one conditional UPDATE on the new claimed_gmt column, so two saves racing for the same generation cannot both stamp it. The CSV export carries claimed_gmt.
- Test screen wording clarified.
1.0.0
- Initial release: AI Client listener, same-request post stamp, local journal, CSV export, label on stamped posts only.
