Add per profile AI disclosure checkbox

This commit is contained in:
Justin Oros
2026-09-20 17:16:41 -07:00
parent 2a4bc09b4f
commit 29fc72df71
2 changed files with 8 additions and 3 deletions
+7 -3
View File
@@ -87,6 +87,7 @@ PROFILE_DEFAULTS = {
"made_for_kids": False,
"kids_manual_review": True,
"kids_llm_review": "advisory",
"ai_disclosure": True,
"upload_category_id": "24",
"privacy_status": "private",
"trending_query": "",
@@ -1328,10 +1329,13 @@ def upload_video(s, path, script, tags):
"status": {
"privacyStatus": privacy,
"selfDeclaredMadeForKids": kids,
"containsSyntheticMedia": True,
"containsSyntheticMedia": bool(s["ai_disclosure"]),
},
}
logger.info("Uploading to %s as category %s, made for kids: %s", profile_channel(s["profile_id"]), body["snippet"]["categoryId"], kids)
logger.info(
"Uploading to %s as category %s, made for kids: %s, AI disclosure: %s",
profile_channel(s["profile_id"]), body["snippet"]["categoryId"], kids, bool(s["ai_disclosure"]),
)
media = MediaFileUpload(str(path), mimetype="video/mp4", resumable=True, chunksize=8 * 1024 * 1024)
req = yt.videos().insert(part="snippet,status", body=body, media_body=media)
resp = None
@@ -1465,7 +1469,7 @@ def run_job(s):
set_stage("uploading to YouTube", step=4 + n * 2)
vid, held = upload_video(s, final, script, tags)
compliance["made_for_kids_flag"] = kids
compliance["synthetic_media_flag"] = True
compliance["synthetic_media_flag"] = bool(s["ai_disclosure"])
compliance["held_for_review"] = held
compliance["youtube_id"] = vid
with state_lock:
+1
View File
@@ -120,6 +120,7 @@ const FIELDS=[
["kids_llm_review","LLM script review","select:advisory=Advisory (show notes, you review)|block=Block (reject flagged scripts)|off=Off","Advisory only applies while manual review is on, otherwise it blocks. Word filters and vision checks always block","p"],
["upload_category_id","Upload category","select:"+CATS,"","p"],
["privacy_status","Upload privacy","select:private|unlisted|public","","p"],
["ai_disclosure","Disclose AI generated content","checkbox","YouTube only requires this for realistic synthetic content, not cartoons. Leave on to be transparent with parents","p"],
["trending_query","Trending search query","text","Blank uses the general trending chart. e.g. kids animated story","p"],
["trending_days","Search window (days)","number","Only used with a search query","p"],
["category_id","Source category","select:=All|"+CATS,"Filters source videos","p"],