security privacy
AI transparency
What Quibo marks as AI-generated, where, and what you control.
Every article Quibo produces is drafted by a language model and reviewed by a person before it publishes. We say so in the places machines read and in the place readers read. This page lists exactly what is marked where. It describes what the product does; it is not a statement that your site or ours meets any particular law. For the legal background, see AI Act and your blog.
Structured data (JSON-LD)
Every article ships with a JSON-LD graph (Article, FAQPage, BreadcrumbList). The Article node carries two markings:
contentRating: "AI-generated, human-reviewed". The older value "AI-assisted" under-described the process: the model writes the whole draft and a person reviews it, so that is what we say.additionalProperty: a list of PropertyValue entries,aiGenerated: true,humanReviewed: true,generator: "Quibo", so audit tools can detect the marking without parsing free text.
The node also names Quibo as creator (a SoftwareApplication). Editing the FAQ in the editor keeps these values; only the FAQPage node is rebuilt.
Where the graph ends up depends on the CMS:
- Shopify, Ghost, HubSpot and Wix: written into the published page as a
<script type="application/ld+json">block. - WordPress: written into the post as a
<script type="application/ld+json">block inside a Custom HTML block, with the Article dates set at publish time and its image pointing to the media library copy of the cover. WordPress keeps the block only when the connecting user has theunfiltered_htmlcapability (Administrators and Editors on a single-site install, Super Admins on multisite). Without it WordPress removes the tag, and Quibo removes the leftover JSON so it does not show to readers; that post then carries no JSON-LD marking. See Connect WordPress. - Webflow: written only when your collection has a matching Plain Text field: one named after custom code, head code, embed or script gets the complete
<script type="application/ld+json">tag, one named after JSON-LD, schema or structured data gets the bare JSON; otherwise it is not published. - Sanity: written only when your post schema has a string field for it (
schemaJsonLd,jsonLdorstructuredData). - Framer: exposed as the
jsonLdfield of the feed, for you to map in the sync plugin.
Generation record
For each article Quibo keeps a generation record on its servers: the LLM provider, the models the pipeline used, the pipeline version, the cover image model, the keyword, the language and the generation timestamp. It is written once when the article is assembled and never edited. It is internal to Quibo: it is not shown in the app, not included in data exports and not published to your CMS. What you see and export is the human review trail described below.
Cover images
Cover images are generated by a model, so they are synthetic media too. Right after a cover is generated, Quibo keeps its own copy of the file and embeds an XMP packet in it with:
xmp:CreatorTool = "Quibo"Iptc4xmpExt:DigitalSourceType = trainedAlgorithmicMedia(the IPTC code for AI-generated media)dc:descriptionset to the alt text
JPEG covers get an APP1 segment; PNG covers get an iTXt chunk. Pixels are never touched. Every CMS receives this same marked file: WordPress, Sanity, Ghost and HubSpot get it as an upload to their media library, and Shopify, Webflow, Wix and Framer download it from the address Quibo sends with the article. The JSON-LD marking applies to the article on top of it. Some CMS image pipelines strip metadata when they resize; check one published cover with a metadata inspector if this matters to you.
The image service that draws the cover also embeds its own Content Credentials (a C2PA manifest). Quibo removes that manifest from every cover before marking it, for three reasons: inserting our XMP packet would invalidate its signature anyway, it describes internal production details rather than your article, and some upload filters (on WordPress in particular) reject the file because the manifest embeds a logo as SVG code. The XMP / IPTC marking above and the JSON-LD marking remain on every CMS.
The cover file stays at its Quibo address for as long as the article exists in Quibo, so a publish scheduled weeks ahead and the Framer feed do not depend on how long the image service keeps its files. It is deleted with the article, and with your organization. When you delete a site, the covers of its articles that were never published are deleted with it; the covers of published articles stay, so the posts on your CMS keep their image.
Reader-facing disclosure
By default, every published article ends with one italic line telling readers it was produced with AI assistance and reviewed before publication. The sentence is localized to the site language (English, Italian, Spanish, French, German, Portuguese, Dutch, Polish, Japanese) and you can replace it with your own wording, up to 500 characters.
Open a site under Sites and use the AI disclosure card to turn the line off or change the text (owners and admins only). The change applies to articles published from then on; the stored draft is never modified. The line is appended to every publish (WordPress, Shopify, Webflow, Wix, Ghost, HubSpot and Sanity) and to the Framer feed (html, plus a separate aiDisclosure field you can map on its own). The paragraph carries a data-ai-disclosure="true" attribute so it can be styled or detected.
Turning it off does not remove the JSON-LD marking. Whether you should keep it on depends on what you publish; see the deployer checklist in AI Act and your blog.
Human review trail
Every edit, "Mark as reviewed", schedule, unschedule, publish and regeneration on an article is logged with who did it and when. The trail is visible on the article page and exportable as CSV or JSON by owners and admins. The trail is kept for as long as your account exists and carries a snapshot of the article (title and URL), so it survives the removal of the article body 30 days after publishing and the deletion of the article. Export the log regularly if you need it in your own records.
Article body
We do not claim personal experience the brand does not have. If your brand profile carries earned anecdotes, they stay in. We do not invent them.
Why we do not hide it
Detection scores are a moving target and pretending content is fully human when it is not:
- risks a spam classification under Google's policies on scaled content abuse;
- misleads readers;
- is the opposite of what the EU AI Act asks of providers of generative systems.
Disclosing while shipping well-sourced, on-brand, reviewed content is the position we are comfortable defending. Google's guidance evaluates whether content is helpful, not how it was produced; nobody can promise a ranking either way.