news 2026/9/11 13:41:13

ppt-master Web 图片来源与内联署名(Attribution)执行规范:executor-web-image 权限分支全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ppt-master Web 图片来源与内联署名(Attribution)执行规范:executor-web-image 权限分支全解析

ppt-master Web 图片来源与内联署名(Attribution)执行规范:executor-web-image 权限分支全解析

【免费下载链接】ppt-masterAI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations,>项目地址: https://gitcode.com/GitHub_Trending/ppt/ppt-master

本指南聚焦 ppt-master 中 Web 图片来源(Status: Sourced)与衍生图的内联署名执行分支executor-web-image.md)。你将在本文掌握:如何依据image_sources.jsonlicense_tier判定每张 Web 图片在幻灯片上的署名策略,如何在所撰写的 SVG 中渲染"可读、无歧义绑定到具体资产"的署名,以及svg_quality_checker.py如何逐文件校验作者与许可证、阻断缺失署名的导出。

1. 分支定位:条件性执行权(Conditional Executor Authority)

在 ppt-master 的执行器(Executor)权限体系中,executor-web-image.md加载于executor-image.md之后的一个条件分支(conditional branch),专门授予 Executor 对Web 来源图片及其已制备衍生图进行内联署名(inline attribution)的执行权。

  • 上游依赖:executor-image.md(图片状态处理、放置与裁剪契约)与 image-searcher.md(Web 图片获取路径的角色手册)。
  • 触发条件:任何被放置且状态为Status: Sourced的图片,或文件名中携带一份被复制进来的image_sources.json记录的衍生图。Quick 流程使用同一份清单(manifest)且不进行交互。

从 executor-image.md 的状态处理表可以看出,该分支是 Web 图片状态的"下游消费者":Sourced(由 Image_Searcher 获取)与Generated(由 Image_Generator 生成且由清单背书)两类资产都要求"读取image_sources.json获取署名信息,并加载 executor-web-image 分支"。换言之:来源记录一旦建立,署名义务就自动落在 Executor 的 SVG 撰写阶段

2. 核心契约:license_tier驱动的署名动作

本分支的**契约(Contract)**非常明确:

查找filename对应的清单条目,并依据license_tier采取动作——清单是署名的唯一事实来源(single source of credits),且署名必须在您撰写的 SVG 中渲染,绝不能通过后处理(post-processing)或导出阶段补加。

license_tier本页动作
no-attribution<image>,无署名
attribution-required<image>+ 可见的内联署名,保留该资产的原作者、来源/提供商、以及 CC BY / CC BY-SA 许可信息
manual<image>—— 用户提供的--from-url替换图,其权利与署名责任由用户承担

三种层级与 image-searcher.md §1 的许可层级纪律一一对应:

层级对应许可页内署名
no-attributionCC0、Public Domain、Pexels License、Pixabay Content License
attribution-requiredCC BY、CC BY-SA页内内联<text>署名
manual用户直接选定 URL 或采纳页图片,许可未核验无——权利与署名责任在用户

值得强调的是:manual层级允许--from-url直接替换或采纳页包图片,绝不允许"来源未知的提供商结果"被归入manual。下游消费者(Executor、校验器)只读取license_tier,从不自行解释原始许可字符串。

3. 从清单到署名:attribution_text 与压缩语法

3.1 以attribution_text为起点

Executor 的署名工作从清单的attribution_text字段起步。该字段由image_search.py写入清单时通过 provider_common.py 的build_attribution_text生成,其规范格式为:

filename — "title" by author, via Provider, license: name (url)

空字段会被优雅省略。例如:

  • team.jpg — "Untitled" via Openverse — license: CC0 (...)
  • team.jpg — "Sunset" by Jane Doe via Wikimedia Commons — license: CC BY-SA 4.0 (...)

3.2 允许压缩,但不得丢失必需事实

当来源保持清晰时,文件名与完整 URL 可以去掉,但作者与许可必须保留,以便校验器能将署名与资产绑定。压缩语法示例(来自 image-searcher.md §7):

  • team.jpg — "Untitled" via Openverse — license: CC0 (...)via Openverse / CC0
  • team.jpg — "Sunset" by Jane Doe via Wikimedia Commons — license: CC BY-SA 4.0 (...)© Jane Doe / Wikimedia / CC BY-SA 4.0

注意:manual条目在清单中attribution_text为空(见 image_search.py 中license_tier: "manual"时写入"attribution_text": ""),因为其署名责任在用户。

3.3 版式自由度与底线

署名的大小、位置、颜色、逐图 vs 合并处理、标签、以及任何对比度遮罩/渐变,都属于 Executor 的裁量范围per-image versus combined treatment、labels、contrast scrim/gradient),前提是:

  • 署名可读(readable)
  • 署名与对应资产无歧义地绑定(unambiguously bound)

4. 校验闭环:svg_quality_checker.py的强制约束

本分支给出明确的"红线":svg_quality_checker.py会在以下场景报错(errors)

  1. 缺少图片专属的作者 + 许可署名——一个通用的 CC token 不能覆盖多张图片文件
  2. image_sources.json清单不可读;
  3. 缺少逐文件来源记录(per-file provenance)。

这些错误必须在后处理或 Quick 导出之前修复。同时,切勿把署名重复塞进演讲者备注(speaker notes)或其他产物中——署名只存在于 SVG 页面。

4.1 校验器的真实实现证据

在 checker.py 的_check_sourced_image_attribution中可以看到该契约的落地逻辑:

  • 加载images/image_sources.json;清单不可读则直接追加"Invalid image source manifest: ..."错误;
  • 收集 SVG 内可见文本块_visible_svg_text_blocks,会展开<use>引用并剔除隐藏/非视觉内容)与被引用的图片 basename
  • 仅处理attribution_requiredlicense_tier == 'attribution-required'且被 SVG 引用的条目;
  • 从清单取authorlicense_name,据此推导许可 token(CC BY-SACC BY);
  • 校验规则:同一可见文本块中必须同时包含作者名(大小写不敏感)与许可 token,否则报错"Missing image-specific inline attribution for sourced image ..."——这正是"一个通用 CC token 无法覆盖多个文件"的代码级体现。

4.2 清单级别的来源一致性检查

同一文件 checker.py 还执行项目级来源校验:

  • 合法license_tier集合固定为{'no-attribution', 'attribution-required', 'manual'},出现其他值报sourced_image_invalid_license_tier
  • Sourced图片必须能在清单中找到条目(sourced_image_missing_provenance);
  • manual外,attribution_text不得为空(sourced_image_missing_attribution_text);
  • attribution-required条目的author不得为空(sourced_image_missing_author)。

5. 触发与数据流:从 Image_Searcher 到 SVG

结合 executor-image.md 与 image-searcher.md,Web 图片的完整数据流如下:

  1. 获取Image_Searcher通过 image_search.py 在开放许可提供商(Pexels → Pixabay → Openverse → Wikimedia,均为默认链)中检索,只下载一份许可已清(license-cleared)的原始图片到project/images/
  2. 记录:每次成功下载都会向images/image_sources.json追加或替换一条以filename为键的记录,包含providerlicense_namelicense_urllicense_tierauthorattribution_text、实测width/heightselection_method等(见 image.md 的image_sources.json格式示例);
  3. 触发分支:任何被放置的Sourced图片触发 executor-web-image 分支;
  4. 渲染署名:Executor 读取清单,依据license_tier决定是否在 SVG 中加入可见署名;
  5. 校验svg_quality_checker.py对每个引用 attribution-required 图片的 SVG 页面验证"作者 + 许可"成对出现,任何缺失都会阻断后处理与 Quick 导出。

如果图片在image_treat.py中生成了非破坏性 PNG 衍生图,只要源文件名存在于images/image_sources.json,新记录会**继承该法律来源(provenance)**并记录derived_from与有序treatments——这正是本分支"放置的衍生图其文件名携带复制来的image_sources.json记录"所指的场景。

6. 实战自查清单

在撰写或评审 Web 图片来源的幻灯片时,按以下顺序自查:

  1. 触发识别:本页是否有Sourced图片或带清单记录的衍生图?有则加载本分支;
  2. 层级判定:查image_sources.json中该filenamelicense_tier
    • no-attribution/manual→ 仅<image>
    • attribution-required→ 必须加可见署名;
  3. 署名内容:以attribution_text为起点,可压缩文件名与 URL,但作者 + 许可(CC BY / CC BY-SA)必须保留,且与具体资产一一绑定;
  4. 版式落地:大小、位置、颜色、合并/逐图、遮罩均自由裁量,但保证可读性与无歧义绑定;
  5. 校验通过:运行svg_quality_checker.py确认无"Missing image-specific inline attribution"类错误;同时确认清单可读、逐文件来源记录齐全;
  6. 唯一性:署名只出现在 SVG 中,不要写入演讲者备注或其他产物。

7. 相关参考文档

  • executor-web-image.md——本文主题文档,条件性署名执行分支
  • executor-image.md——上游图片状态处理分支(状态表、裁剪策略、硬规则)
  • image-searcher.md——Web 图片获取角色手册(许可层级、查询翻译、署名契约 §7)
  • image.md——image_search.py参数表、批量运行器与image_sources.json完整格式
  • checker.py——署名校验与来源一致性检查的实现
  • provider_common.py——attribution_text规范字符串的生成实现

【免费下载链接】ppt-masterAI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations,>项目地址: https://gitcode.com/GitHub_Trending/ppt/ppt-master

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 13:41:02

ESP32-S3 N16R8开发实战:PlatformIO工程结构与PSRAM优化指南

1. 这块板子到底值不值得买&#xff1f;先说清楚它能干什么ESP32-S3 N16R8 这个型号&#xff0c;光看名字容易被绕晕——它不是某个神秘新品&#xff0c;而是乐鑫官方认证的、带具体存储配置的量产模组型号。N16R8 指的是16MB Flash 8MB PSRAM的组合&#xff0c;这个配置在当前…

作者头像 李华
网站建设 2026/9/11 13:40:44

AI论文写作工具实测:从选题到降重,千笔如何辅助MBA论文?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 13:38:56

静态代码分析工具盘点与实战:从选型到CI落地指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 13:36:34

嵌入式全栈安全体系实战:从纵深防御到应急响应

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 13:33:39

数字化时代工作家庭平衡:工具精简与时间管理策略

1. 项目背景与现象解析这个看似荒诞的标题实际上反映了一个普遍存在的社会现象——现代人在工作与家庭之间的平衡困境。标题中"据说用好的可敌国"暗示某种被宣传为高效生产力工具或方法&#xff0c;而"被媳妇赶下床"则直指过度投入工作导致的家庭矛盾。这种…

作者头像 李华