Az aidisclose.js az a helyszíni szkript, amely beolvassa az ai-disclosure.json manifesztumot, és megjeleníti a jogszabály által előírt közzétételeket: interakciós sávot a chatbotokhoz, tartós tartalmi értesítést, látható címkéket a megjelölt médián, valamint géppel olvasható oldalmetaadatokat. Függőségektől mentes, gzip-tömörítve körülbelül 8.2 KB, és megfelel a WCAG 2.1 AA követelményeinek.
Ez az oldal a teljes beállítási és testreszabási referencia. A platformonkénti telepítési lépésekért (WordPress, Shopify, Webflow, címkekezelők) lásd a telepítési útmutatót. Ezt a dokumentumot nyers markdown formátumban is elolvashatja.
Áttekintés
Egyetlen szkriptcímke mindent vezérel. Betöltéskor a kódrészlet letölti a manifesztumot, majd csak azt jeleníti meg, amit a manifesztum bejelent:
- Interakciós sáv,
conversationalrendszerhez: értesítés arról, hogy a látogató MI-vel beszélget. - Tartalmi értesítés,
scope: sitevagyscope: pagebeállításúcontent-generationrendszerhez: egy kis tartós jelvény. Rákattintva rövid magyarázat nyílik meg az értesítés szövegével, a manifesztumból származó kiadói névvel és rendszercéllal, valamint a manifesztumfájlra mutató hivatkozással; az értesítés szövege egy közérthető magyarázatra hivatkozik az aidisclose.io oldalon. Az „emberek készítették” jelvény ugyanezt a kártyát nyitja meg a kiadói névvel. - Elemenkénti címkék, minden olyan elemen, amelyet
data-ai-contentattribútummal jelöl meg: egy látható „MI” jelvény, valamint egy géppel olvashatódata-digital-source-type. - Oldalmetaadatok: egy
<link rel="ai-disclosure">és egy<meta name="ai-disclosure">, amelyek a manifesztumra mutatnak. - „Emberek készítették” jelvény, ha a manifesztum beállítja a
noAiDeclaredértéket.
Az alábbiak mind opcionálisak. Beállítás nélkül a kódrészlet a /.well-known/ai-disclosure.json fájlt olvassa be, a látogató nyelvén jelenik meg 28 nyelven, követi az operációs rendszer világos vagy sötét beállítását, és az ismert cookie-hozzájárulási sávok fölé rendeződik, így a kettő soha nem fedi egymást.
Telepítés
Adja hozzá a címkét egyszer a webhely közös sablonjában, a téma fejlécében vagy a címkekezelőben, és minden oldallal együtt betöltődik. Elhelyezhető a <head> szakaszban vagy bárhol a </body> előtt; késleltetett (deferred) betöltésű, így az elhelyezés nem változtatja meg a viselkedést:
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>
Attribútumok nélkül a kódrészlet a https://YOURDOMAIN/.well-known/ai-disclosure.json címen olvassa be a manifesztumot. Ha a platformja nem tud fájlt kiszolgálni a domain gyökeréből, tárolja a manifesztumot az AIDisclose-nál, és kulcs alapján hivatkozzon rá a címkében:
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>
Ha a manifesztum nem érhető el, a kódrészlet figyelmeztetést ír a konzolra, és nem jelenít meg manifesztum-vezérelt értesítéseket, így egy sikertelen letöltés soha nem mutat kitalált értesítést. Az oldalmetaadatok, a [data-ai-content] címkéi és a data-banner="true" beállítással kikényszerített sáv továbbra is megjelennek.
Beállítás
A kódrészlet háromféleképpen állítható be. Használja azt, amelyik a platformjához illik.
1. Attribútumok a szkriptcímkén. A legegyszerűbb út, extra kód nélkül:
<script src="https://cdn.aidisclose.io/v1/aidisclose.js"
data-theme="light" data-lang="fr" defer></script>
2. Globális konfigurációs objektum. Határozza meg a window.AIDiscloseConfig objektumot, mielőtt a szkript lefut. Ez a teljes beállításkészletet elérhetővé teszi, beleértve azokat a szelektor-beállításokat is, amelyeknek nincs attribútumos formája:
<script>
window.AIDiscloseConfig = {
theme: 'light',
mountSelector: '#ai-disclosure-slot',
triggerSelector: '#chat-launcher',
};
</script>
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>
3. Kézi inicializálás. Adja hozzá a data-manual attribútumot az automatikus indítás késleltetéséhez, majd hívja meg saját maga az AIDisclose.init() függvényt, amint az alkalmazása készen áll (egyoldalas alkalmazásokban hasznos):
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-manual defer></script>
<script>
AIDisclose.init({ theme: 'dark', persistentChip: false });
</script>
Ha egynél több forrás van jelen, a window.AIDiscloseConfig az irányadó: felülírja mind a szkriptcímke attribútumait, mind az AIDisclose.init() függvénynek átadott objektumot.
Beállítások referenciája
A beállítási felület stabil az 1.x sorozatban.
| Beállítás | Attribútum | Értékek | Alapértelmezett | Hatás |
|---|---|---|---|---|
theme |
data-theme |
light, dark, auto |
auto |
Színséma. Az auto a látogató operációs rendszerének beállítását követi. |
siteKey |
data-aidisclose |
szöveg | nincs | Az ehhez a kulcshoz tartozó, AIDisclose által tárolt manifesztum betöltése a well-known fájl helyett. |
manifestUrl |
data-manifest-url |
URL | /.well-known/ai-disclosure.json |
A manifesztum beolvasása egyéni URL-ről. |
lang |
data-lang |
BCP-47 kód | az oldal <html lang> értéke, egyébként a látogató nyelve |
Megjelenítési nyelv kényszerítése. |
banner |
data-banner |
true, false |
auto | Az interakciós sáv be- vagy kikapcsolásának kényszerítése. Beállítás nélkül csak akkor jelenik meg, ha a manifesztum társalgási (chatbot) rendszert jelent be. |
persistentChip |
— | true, false |
true |
Az interakciós sáv összecsukott mini-jelvényének (a kis pirula, amivé lekicsinyül) megjelenítése vagy elrejtése. |
alwaysShow |
— | true, false |
false |
A sáv újbóli megjelenítése minden látogatáskor, figyelmen kívül hagyva a látogató korábbi elutasítását (amelyet a böngésző localStorage-a tárol). |
mountSelector |
— | CSS-szelektor | nincs | A sáv beágyazott megjelenítése ezen az elemen belül a rögzített alsó átfedés helyett. |
triggerSelector |
— | CSS-szelektor | nincs | Az interakciós sáv csak azután jelenik meg, hogy a látogató erre az elemre kattint, például egy chatindítóra. Az egyező elemet nem tartalmazó oldalakon nem jelenik meg sáv, így egy csak bizonyos oldalakon létező chatbot csak ott közöl. A betöltés után beszúrt indítók is működnek. Az a látogató, aki korábban elutasította a sávot, továbbra is látja a mini-jelvényt. |
adjacentSelector |
— | CSS-szelektor | nincs | Címke elhelyezése olyan elem mellé, amelyet nem tud közvetlenül megjelölni, például egy zárt widget vagy egy iframe mellé. |
observe |
— | true, false |
true |
A DOM figyelése a később hozzáadott tartalmakért, és azok címkézése. Teljesen statikus oldalakon állítsa false értékre. |
beaconUrl |
— | URL | nincs | Anonim {siteKey, flag} jelzés küldése jelentős események esetén. Nincsenek cookie-k, nincsenek személyes adatok. |
A data-manual nem beállításérték: jelenléte a címkén késlelteti az automatikus indítást, hogy saját maga hívhassa meg az AIDisclose.init() függvényt.
Témázás és megjelenés
A beépített sémát a theme beállítással adhatja meg (light, dark vagy auto). A márkájával való pontos egyezéshez írja felül a kódrészlet CSS egyéni tulajdonságait a saját stíluslapjában. Ezek a .aid-banner, .aid-chip szelektorokon vannak meghatározva:
| Változó | Vezérli |
|---|---|
--aid-bg |
Háttér |
--aid-fg |
Szöveg |
--aid-line |
Szegély |
--aid-btn |
Az elvetés gomb szegélye |
--aid-btnfg |
Az elvetés gomb szövege |
--aid-hov |
Az elvetés gomb hover állapota |
.aid-banner, .aid-chip {
--aid-bg: #0b1020;
--aid-fg: #e8eaed;
--aid-line: #2a2f36;
}
A kódrészlet nem tartalmaz !important szabályokat, és alacsony specificitású szelektorokat használ, így az Ön CSS-e érvényesül. A kapaszkodó osztályok: .aid-banner, .aid-chip, .aid-badge, .aid-badge-inline, .aid-wrap, .aid-ai (tartalmi értesítés) és .aid-hm („emberek készítették”). A térközt, a lekerekítést és az árnyékot közvetlenül ezeken szabhatja át.
Alapértelmezés szerint a sáv egy rögzített átfedés a nézetablak alján. Állítsa be a mountSelector értékét, hogy beágyazottan és statikusan jelenjen meg egy Ön által vezérelt elemen belül, így a saját elrendezésébe illeszkedik.
Egyéni szövegezés
A sáv és a jelvény alapból pontos, honosított szöveget tartalmaz 28 nyelven. A szövegezés felülírásához:
- Nyelvenként, a manifesztumban. Adja hozzá a
disclosure.textsmezőt egy rendszerhez, nyelvi kód szerint kulcsolva. A kódrészlet az Ön szövegét használja az egyező látogatói nyelvhez:
{
"disclosure": {
"texts": { "en": "Some copy on this page was drafted with AI.", "fr": "Une partie du texte a été rédigée avec de l'IA." }
}
}
- Elemenként. Adja hozzá a
data-ai-labelattribútumot egy megjelölt elemhez az adott jelvény címkéjének beállításához.
Ha egy rendszer beállítja az editorialResponsibility.humanReview: true értéket, és a tartalma nem teljesen MI által generált vagy manipulált, az értesítés automatikusan „MI-vel segített, ember által ellenőrzött” szöveget jelenít meg a látogató nyelvén, az „MI által generált” helyett.
Az MI-tartalom megjelölése
A kódrészlet csak azt címkézi, amit megjelöl. Adja hozzá a data-ai-content attribútumot bármely MI által generált elemhez:
<img data-ai-content src="/img/generated.webp" alt="…">
<p data-ai-content>AI-drafted summary…</p>
<video data-ai-content src="/clip.mp4"></video>
Minden megjelölt elem kap egy látható „MI” jelvényt és egy géppel olvasható data-digital-source-type attribútumot (alapértelmezés szerint trainedAlgorithmicMedia, egy IPTC- és schema.org-kompatibilis érték). Egyéni címkeszöveghez adja hozzá a data-ai-label attribútumot, vagy állítsa be saját maga a data-digital-source-type értékét a pontosabb meghatározáshoz.
Az olyan MI-hez, amelyet nem tud közvetlenül megjelölni, például egy zárt iframe-ben lévő külső féltől származó chat-widgethez, használja az adjacentSelector beállítást címke elhelyezéséhez mellette, vagy a triggerSelector beállítást az interakciós sáv megjelenítéséhez, amikor a widget megnyílik.
Egy tartalomgenerálási értesítés kiterjedhet a teljes webhelyre (disclosure.scope: "site") vagy meghatározott oldalakra (disclosure.scope: "page" a disclosure.pages útvonalmintáinak listájával, például /blog/*). Az oldalszintű egyezés elsőbbséget élvez a webhelyszintűvel szemben, és egy oldalszintű rendszer, amelynek nincs egyező útvonala, ott semmit nem jelenít meg.
Egyoldalas alkalmazások és keretrendszerek
A kódrészlet egy MutationObserver segítségével figyeli a DOM-ot, és útvonalváltáskor újraértékeli az alkalmazandó értesítést, így a betöltés után hozzáadott tartalmak és oldalak is címkézésre kerülnek. Egy SPA esetén:
- Hagyja az
observebeállítást az alapértelmezett (true) értéken, hogy a kliensoldalon renderelt tartalmat is elkapja. - Ha az inicializálást az alkalmazás készenlétéhez köti, adja hozzá a
data-manualattribútumot, és hívja meg azAIDisclose.init()függvényt, miután a keretrendszere csatlakozott (mount). - Az oldalszintű értesítések automatikusan frissülnek az útvonal változásakor; nincs szükség útvonalankénti hívásra.
Az observe: false beállítást csak teljesen statikus oldalakon használja, ahol a betöltés után semmit nem szúrnak be.
Content Security Policy
Ha Content Security Policy-t érvényesít, engedélyezze kifejezetten a kódrészletet.
Fontos
Egy szigorú script-src 'self' csendben blokkolja a CDN-ről betöltött kódrészletet, és a közzétételek soha nem jelennek meg. Ez a leggyakoribb oka annak, hogy egy helyesen bejelentett webhely nem éri el a 2. szintet.
script-src: adja hozzá ahttps://cdn.aidisclose.iocímet, vagy tárolja saját maga azaidisclose.jsfájlt a saját tartományában, és tartsa meg a'self'értéket.style-src: a kódrészlet beágyazottan (inline) szúrja be a stílusait, így az'unsafe-inline'elegendő. Ha nem engedélyezi a beágyazott stílusokat, akkor tartalékként a szkript könyvtárából tölti be azaidisclose.cssfájlt, ezért engedélyezze ahttps://cdn.aidisclose.iocímet astyle-srcszabályban is (vagy tárolja saját maga ezt a fájlt a szkript mellett).connect-src: a well-known fájl esetén a manifesztum letöltése azonos tartományból történik, és nincs szükség további engedélyre. Ha a manifesztumot kulcs alapján tölti be, engedélyezze ahttps://cdn.aidisclose.iocímet.
A manifesztum letöltése hitelesítő adatok nélkül történik, ezért nyilvánosan szolgálja ki: egy olyan végpont, amely cookie-kat vagy hitelesítést igényel, nem fogja megkapni azokat.
Verziókezelés és integritás
A CDN három sávot szolgál ki:
- A
/v1/aidisclose.jsa legújabb 1.x kiadást követi. A legtöbb webhely számára ez ajánlott. - A
/v1.0.0/aidisclose.jsegy rögzített, változatlan verzió, amelyet rögzíthet, Subresource Integrity támogatással:
<script src="https://cdn.aidisclose.io/v1.0.0/aidisclose.js"
integrity="sha384-…" crossorigin="anonymous" defer></script>
- A
/latest/aidisclose.jsmindig a legújabb kiadást követi, a fő verziókon átívelően.
A rögzítéshez szükséges SRI-hash megszerzéséhez fordítsa le a kódrészletet: a packages/snippet mappában futtatott npm run build kiírja azt (a forráskód nyíltan elérhető a GitHubon).
Saját közzétételi felület építése
A beépített helyett saját közzétételi felületet is megjeleníthet. Nincs egyetlen kikapcsológomb: a data-banner="false" és a persistentChip: false csak az interakciós sávot és annak jelvényét némítja el, míg a tartalmi értesítések, az elemenkénti [data-ai-content] jelvények és az „emberek készítették” jelvény továbbra is megjelennek a manifesztumból és a jelölésből. A teljesen egyéni felület azt jelenti, hogy nem támaszkodik ezekre, és a sajátját jeleníti meg.
Megjegyzés
Az AIDisclose ellenőrző a referencia-kódrészlet jelölésének felismerésével igazolja a megjelenítést. Egy teljesen kézzel épített közzététel érvényes, de nem ismerhető fel automatikusan, így a webhely az 1. szinten (Bejelentett) marad a 2. szint (Megjelenített) helyett, hacsak az egyéni jelölése nem reprodukálja azt, amit az ellenőrző keres. Ha a 2. szint fontos Önnek, tartsa meg a beépített megjelenítést, és szabja át CSS-sel.
Akadálymentesség
A megjelenített felület megfelel a WCAG 2.1 AA követelményeinek: látható :focus-visible körvonalak az interaktív vezérlőkön, helyes szerepek és címkék, világos és sötét témában is megfelelő kontraszt, valamint a prefers-reduced-motion mögé zárt animáció. A kódrészlet felismeri az ismert cookie-hozzájárulási sávokat is, és föléjük rendeződik, így a közzétételeket soha nem takarja el egy CMP. Nagyon keskeny képernyőkön az interakciós sáv a kompakt jelvény formájában nyílik meg, így soha nem takarja el a tartalmat.