aidisclose.js yra svetainėje veikiantis scenarijus, kuris nuskaito jūsų ai-disclosure.json manifestą ir atvaizduoja teisės aktų reikalaujamus atskleidimus: sąveikos juostą pokalbių robotams, nuolatinį turinio pranešimą, matomus pažymėto turinio ženklus ir kompiuterio skaitomus puslapio metaduomenis. Jis neturi priklausomybių, yra maždaug 8.2 KB gzip suglaudintas ir atitinka WCAG 2.1 AA.
Šis puslapis yra išsamus konfigūravimo ir pritaikymo žinynas. Diegimo žingsnius pagal platformą (WordPress, Shopify, Webflow, žymų tvarkyklės) rasite diegimo vadove. Šį dokumentą taip pat galite skaityti kaip neapdorotą Markdown.
Apžvalga
Viską valdo vienas scenarijaus žymuo. Įsikėlus fragmentas gauna jūsų manifestą ir atvaizduoja tik tai, ką manifestas deklaruoja:
- Sąveikos juosta, skirta
conversationalsistemai: pranešimas, kad lankytojas bendrauja su DI. - Turinio pranešimas, skirtas
content-generationsistemai suscope: sitearbascope: page: mažas nuolatinis žetonas. Jį spustelėjus atsiveria trumpas paaiškinimas su pranešimo tekstu, jūsų leidėjo pavadinimu ir sistemos paskirtimi iš manifesto bei nuoroda į manifesto failą; pranešimo tekstas nukreipia į paprastos kalbos paaiškinimą aidisclose.io svetainėje. Ženklas „sukurta žmonių“ atveria tą pačią kortelę su leidėjo pavadinimu. - Atskirų elementų ženklai, ant bet kurio elemento, kurį pažymite su
data-ai-content: matomas „DI“ ženklas ir kompiuterio skaitomasdata-digital-source-type. - Puslapio metaduomenys:
<link rel="ai-disclosure">ir<meta name="ai-disclosure">, nukreipiantys į jūsų manifestą. - Ženklas „sukurta žmonių“, kai manifestas nustato
noAiDeclared.
Viskas žemiau yra pasirenkama. Be jokios konfigūracijos fragmentas nuskaito jūsų /.well-known/ai-disclosure.json, atvaizduoja lankytojo kalba 28 kalbomis, laikosi operacinės sistemos šviesios arba tamsios temos nuostatos ir dedasi virš žinomų slapukų sutikimo juostų, kad jos niekada nepersidengtų.
Diegimas
Įtraukite žymą vieną kartą į bendrą svetainės šabloną, temos antraštę arba žymų tvarkyklę, ir ji bus pateikiama su kiekvienu puslapiu. Ji gali būti <head> dalyje arba bet kur prieš </body>; ji yra atidėta, todėl vieta nekeičia elgsenos:
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" defer></script>
Be atributų fragmentas nuskaito manifestą adresu https://YOURDOMAIN/.well-known/ai-disclosure.json. Jei jūsų platforma negali pateikti failo domeno šaknyje, talpinkite manifestą su AIDisclose ir nukreipkite žymą į jį pagal raktą:
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-aidisclose="YOUR_SITE_KEY" defer></script>
Jei manifesto pasiekti nepavyksta, fragmentas įrašo įspėjimą į konsolę ir neatvaizduoja jokių iš manifesto kilusių pranešimų, todėl gavimo klaida niekada neparodo atspėto pranešimo. Puslapio metaduomenys, jūsų [data-ai-content] ženklai ir juosta, priverstinai įjungta su data-banner="true", vis tiek atvaizduojami.
Konfigūravimas
Yra trys būdai konfigūruoti fragmentą. Naudokite tą, kuris tinka jūsų platformai.
1. Atributai scenarijaus žymoje. Paprasčiausias būdas, be papildomo kodo:
<script src="https://cdn.aidisclose.io/v1/aidisclose.js"
data-theme="light" data-lang="fr" defer></script>
2. Globalusis konfigūracijos objektas. Apibrėžkite window.AIDiscloseConfig prieš paleidžiant scenarijų. Jis atveria visą parinkčių rinkinį, įskaitant selektoriaus parinktis, kurios neturi atributo formos:
<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. Rankinis inicijavimas. Pridėkite data-manual, kad atidėtumėte automatinį paleidimą, tada patys iškvieskite AIDisclose.init(), kai jūsų programa bus paruošta (naudinga vienpuslapėse programose):
<script src="https://cdn.aidisclose.io/v1/aidisclose.js" data-manual defer></script>
<script>
AIDisclose.init({ theme: 'dark', persistentChip: false });
</script>
Jei yra daugiau nei vienas šaltinis, laimi window.AIDiscloseConfig: jis nustelbia ir scenarijaus žymos atributus, ir bet kurį objektą, perduotą į AIDisclose.init().
Parinkčių žinynas
Parinkčių sąsaja yra stabili 1.x linijoje.
| Option | Attribute | Reikšmės | Numatytoji | Poveikis |
|---|---|---|---|---|
theme |
data-theme |
light, dark, auto |
auto |
Spalvų schema. auto laikosi lankytojo OS nuostatos. |
siteKey |
data-aidisclose |
eilutė | nėra | Įkelti AIDisclose talpinamą manifestą pagal šį raktą vietoj well-known failo. |
manifestUrl |
data-manifest-url |
URL | /.well-known/ai-disclosure.json |
Nuskaityti manifestą iš pasirinktinio URL. |
lang |
data-lang |
BCP-47 kodas | puslapio <html lang>, priešingu atveju lankytojo kalba |
Priverstinai nustatyti rodymo kalbą. |
banner |
data-banner |
true, false |
auto | Priverstinai įjungti arba išjungti sąveikos juostą. Nenustačius ji rodoma tik tada, kai jūsų manifestas deklaruoja pokalbių (chatbot) sistemą. |
persistentChip |
— | true, false |
true |
Rodyti arba slėpti sąveikos juostos suskleistą mažąjį žetoną (mažą piliulę, į kurią ji sumažinama). |
alwaysShow |
— | true, false |
false |
Rodyti juostą per kiekvieną apsilankymą, nepaisant lankytojo atmetimo (įsimenamo naršyklės localStorage). |
mountSelector |
— | CSS selektorius | nėra | Atvaizduoti juostą įterptinai šio elemento viduje, o ne kaip fiksuotą apatinį perdangą. |
triggerSelector |
— | CSS selektorius | nėra | Rodyti sąveikos juostą tik po to, kai lankytojas spustelėja šį elementą, pavyzdžiui, pokalbio paleidiklį. Puslapiai be atitinkančio elemento juostos nerodo, todėl pokalbių robotas, esantis tik kai kuriuose puslapiuose, atskleidžiamas tik ten. Paleidikliai, įterpti po įkėlimo, taip pat veikia. Lankytojas, anksčiau atmetęs juostą, vis tiek mato mažąjį žetoną. |
adjacentSelector |
— | CSS selektorius | nėra | Įdėti ženklą šalia elemento, kurio negalite pažymėti tiesiogiai, pavyzdžiui, uždaro valdiklio arba iframe. |
observe |
— | true, false |
true |
Stebėti DOM, ar nepridedamas turinys vėliau, ir jį pažymėti. Nustatykite false visiškai statiniuose puslapiuose. |
beaconUrl |
— | URL | nėra | Siųsti anoniminį {siteKey, flag} signalą svarbių įvykių metu. Jokių slapukų, jokių asmens duomenų. |
data-manual nėra parinkties reikšmė: jos buvimas žymoje atideda automatinį paleidimą, kad galėtumėte patys iškviesti AIDisclose.init().
Temos ir išvaizda
Nustatykite integruotą schemą su theme (light, dark arba auto). Kad tiksliai atitiktų jūsų prekės ženklą, savo stiliaus lentelėje nustelbkite fragmento CSS pasirinktines savybes. Jos apibrėžtos .aid-banner, .aid-chip:
| Kintamasis | Valdo |
|---|---|
--aid-bg |
Fonas |
--aid-fg |
Tekstas |
--aid-line |
Kraštinė |
--aid-btn |
Atmetimo mygtuko kraštinė |
--aid-btnfg |
Atmetimo mygtuko tekstas |
--aid-hov |
Atmetimo mygtuko užvedimas |
.aid-banner, .aid-chip {
--aid-bg: #0b1020;
--aid-fg: #e8eaed;
--aid-line: #2a2f36;
}
Fragmentas nepateikia jokių !important taisyklių ir naudoja mažo specifiškumo selektorius, todėl jūsų CSS laimi. Klasių kabliukai yra .aid-banner, .aid-chip, .aid-badge, .aid-badge-inline, .aid-wrap, .aid-ai (turinio pranešimas) ir .aid-hm („sukurta žmonių“). Tarpus, apvalinimą ir šešėlį keiskite tiesiogiai šiuose.
Pagal numatytuosius nustatymus juosta yra fiksuota perdanga peržiūros srities apačioje. Nustatykite mountSelector, kad ją atvaizduotumėte įterptinai ir statiškai jūsų valdomo elemento viduje, kad ji būtų jūsų pačių išdėstyme.
Pasirinktinis tekstas
Juosta ir žetonas turi tikslų lokalizuotą tekstą 28 kalbomis iš karto. Kad pakeistumėte tekstą:
- Pagal kalbą, manifeste. Pridėkite
disclosure.textsprie sistemos, indeksuojant pagal kalbos kodą. Fragmentas naudoja jūsų tekstą atitinkamai lankytojo kalbai:
{
"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." }
}
}
- Pagal elementą. Pridėkite
data-ai-labelprie pažymėto elemento, kad nustatytumėte to ženklo etiketę.
Kai sistema nustato editorialResponsibility.humanReview: true ir jos turinys nėra visiškai sukurtas DI ar manipuliuotas, pranešimas automatiškai rodo „sukurta padedant DI, peržiūrėta žmogaus“ lankytojo kalba, o ne „sukurta DI“.
DI turinio žymėjimas
Fragmentas pažymi tik tai, ką pažymite jūs. Pridėkite data-ai-content prie bet kurio DI sukurto elemento:
<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>
Kiekvienas pažymėtas elementas gauna matomą „DI“ ženklą ir kompiuterio skaitomą data-digital-source-type (pagal numatytuosius nustatymus trainedAlgorithmicMedia, su IPTC ir schema.org suderinama reikšmė). Pridėkite data-ai-label pasirinktiniam etiketės tekstui arba patys nustatykite data-digital-source-type, kad būtų tiksliau.
DI, kurio negalite anotuoti tiesiogiai, pavyzdžiui, trečiosios šalies pokalbių valdiklio uždarame iframe, naudokite adjacentSelector, kad įdėtumėte ženklą šalia jo, arba triggerSelector, kad atskleistumėte sąveikos juostą, kai valdiklis atsidaro.
Turinio generavimo pranešimas gali apimti visą svetainę (disclosure.scope: "site") arba konkrečius puslapius (disclosure.scope: "page" su disclosure.pages kelių šablonų sąrašu, pavyzdžiui, /blog/*). Puslapio srities atitikmuo turi pirmenybę prieš svetainės srities atitikmenį, o puslapio srities sistema be atitinkančio kelio ten nieko neatvaizduoja.
Vienpuslapės programos ir karkasai
Fragmentas stebi DOM su MutationObserver ir iš naujo įvertina taikomą pranešimą pasikeitus maršrutui, todėl po įkėlimo pridėtas turinys ir puslapiai vis tiek pažymimi. SPA programoje:
- Palikite
observenumatytosios reikšmės (true), kad būtų aptiktas kliento pusėje atvaizduotas turinys. - Jei inicijavimą susiejate su programos parengtimi, pridėkite
data-manualir iškvieskiteAIDisclose.init()po to, kai jūsų karkasas prisijungia. - Puslapio srities pranešimai atnaujinami automatiškai keičiantis maršrutui; atskiro iškvietimo kiekvienam maršrutui nereikia.
Nustatykite observe: false tik visiškai statiniuose puslapiuose, kuriuose po įkėlimo nieko neįterpiama.
Content Security Policy
Jei taikote Content Security Policy, aiškiai leiskite fragmentą.
Svarbu
Griežtas script-src 'self' tyliai blokuoja CDN fragmentą, ir atskleidimai niekada neatvaizduojami. Tai dažniausia priežastis, dėl kurios teisingai deklaruota svetainė nepasiekia 2 lygio.
script-src: pridėkitehttps://cdn.aidisclose.ioarba talpinkiteaidisclose.jssavo paties šaltinyje ir palikite'self'.style-src: fragmentas įterpia savo stilius įterptinai, todėl'unsafe-inline'pakanka. Jei neleidžiate įterptinių stilių, jis grįžta prieaidisclose.cssįkėlimo iš scenarijaus katalogo, todėlstyle-srctaip pat leiskitehttps://cdn.aidisclose.io(arba talpinkite tą failą kartu su scenarijumi).connect-src: manifesto gavimas yra to paties šaltinio well-known failui ir nereikalauja nieko papildomo. Jei įkeliate manifestą pagal raktą, leiskitehttps://cdn.aidisclose.io.
Manifestas gaunamas be prisijungimo duomenų, todėl pateikite jį viešai: galinis taškas, kuriam reikia slapukų ar autentifikavimo, jų negaus.
Versijų valdymas ir vientisumas
CDN teikia tris kryptis:
/v1/aidisclose.jsseka naujausią 1.x leidimą. Rekomenduojama daugumai svetainių./v1.0.0/aidisclose.jsyra fiksuota, nekintanti versija, kurią galite prisegti, su Subresource Integrity:
<script src="https://cdn.aidisclose.io/v1.0.0/aidisclose.js"
integrity="sha384-…" crossorigin="anonymous" defer></script>
/latest/aidisclose.jsvisada seka naujausią leidimą įvairiose pagrindinėse versijose.
Kad gautumėte SRI maišą prisegimui, sukompiliuokite fragmentą: npm run build kataloge packages/snippet jį atspausdina (šaltinis yra atviras GitHub).
Nuosavos atskleidimo sąsajos kūrimas
Galite atvaizduoti savo pačių atskleidimo sąsają vietoj integruotos. Nėra vieno išjungimo jungiklio: data-banner="false" ir persistentChip: false slopina tik sąveikos juostą ir jos žetoną, o turinio pranešimai, atskirų elementų [data-ai-content] ženklai ir ženklas „sukurta žmonių“ vis tiek atvaizduojami iš jūsų manifesto ir žymėjimo. Visiškai pasirinktinė sąsaja reiškia nesiremti jais ir atvaizduoti savo pačių.
Pastaba
AIDisclose tikrinimo įrankis patikrina atvaizdavimą aptikdamas etaloninio fragmento žymėjimą. Visiškai ranka sukurtas atskleidimas galioja, bet nėra automatiškai aptinkamas, todėl svetainė lieka 1 lygyje (deklaruota), o ne 2 lygyje (atvaizduota), nebent jūsų pasirinktinis žymėjimas atkuria tai, ko ieško tikrinimo įrankis. Jei jums svarbus 2 lygis, palikite integruotą atvaizdavimą ir perkurkite jo stilių su CSS.
Prieinamumas
Atvaizduota sąsaja atitinka WCAG 2.1 AA: matomi :focus-visible kontūrai ant interaktyvių valdiklių, teisingos rolės ir etiketės, kontrastas, išliekantis šviesioje ir tamsioje temoje, ir animacija, apribota prefers-reduced-motion. Fragmentas taip pat aptinka žinomas slapukų sutikimo juostas ir dedasi virš jų, kad atskleidimai niekada nebūtų paslėpti už CMP. Labai siauruose ekranuose sąveikos juosta atsidaro kaip kompaktiškas žetonas, kad niekada neuždengtų turinio.