Google 图片搜索还可以过滤图片的重复使用许可。我想知道他们如何知道图像是根据哪个许可证发布的。如何在我的网站上声明该许可证?是否可以为页面上的每个图像声明许可证,或者只为包括所有引用图像(可能包括预取内容)的整个页面声明许可证?谷歌理解哪些许可证可以分类到他们的过滤器中?
2 回答
感谢知识共享,我搜索了一段时间,终于找到了解决方案。简而言之,要让谷歌(和其他搜索引擎)知道特定页面上的内容属于什么许可证,你必须告诉它。
这与您向 Google 提供页面关系等其他数据的方式相同 - 使用页面的 HTML 结构。在这种情况下,您使用标签的rel
属性。a
声明单页许可证:
<a href="license-url" rel="license">License</a>
当然,您可以将链接文本更改为任何内容,但重要的是rel
属性。href
应该指向许可证本身。
我不知道 Google 是如何知道它是什么许可证,但这就是您声明它的方式,Google 的机器人将为您施展魔法。在批量许可方面,我敢说您可以使用 PHP(可能与 SQL 数据库一起)预处理页面以插入此许可标签。
来源:
知识共享许可选择器;
MicroFormats 的 RelLicense
您还可以查看Sitepoint 的属性定义及其rel
用途。
希望这可以帮助。
在这个答案中,我假设:
- 您拥有一组根据知识共享许可获得许可的图像。
- 当用户过滤类似知识共享的图像时,您希望图像搜索引擎返回您的图像。
创建元数据 HTML 页面
我认为将许可信息附加到图像的最佳方法是创建一个与每个图像对应的规范 HTML 页面——就像Wikipedia或 Flickr 的做法一样。
假设我们要在CC BY-SA 3.0下许可一个图片库,其中每个图片都有一个格式为https://example.com/img1.jpg
.
在这种情况下,我们将许可信息嵌入 HTML 页面中,其 URL 看起来像https://example.com/img1.jpg.html
.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Viewing img1.jpg</title>
<meta property="og:image" content="https://example.com/img1.jpg" />
<link rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"/>
<link rel="canonical" href="https://example.com/img1.jpg.html"/>
</head>
<body>
<div>
<img src="https://example.com/img1.jpg" />
<small>
This image is licensed under a
<a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)</a> license
</small>
</div>
</body>
</html>
使用 schema.org 元数据
我们也可以 schema.org ImageObject元数据到我们的元数据页面——将我们的元数据编码为微数据、RDFa 或 JSON-LD。schema.org 标记可以添加额外的注释来描述版权所有者以及如何获得使用图像的许可。
下面是一个 JSON-LD 文档示例,您可以将其放入<head>
标签中。
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ImageObject",
"author": "Bob Smith",
"copyrightHolder": "Bob Smith's employer",
"copyrightYear": 2021,
"contentUrl": "https://example.com/img1.jpg",
"license": "https://creativecommons.org/licenses/by-sa/3.0/",
"acquireLicensePage": "https://example.com/img1.jpg.html"
}
</script>
向搜索引擎公开您的元数据 HTML 页面
最后,您应该让爬虫更容易找到这些 HTML 页面。每当您嵌入一张图片时,您都可以有机地添加这些 HTML 页面的链接。或者,您可以使用Sitemap Protocol列出所有 HTML 页面。