如何在静态站点上动态呈现社交分享按钮的元标签
How to dynamically render meta tags for social share button on a static site?
我有一个静态站点,用户可以在其中无限组合生成图像和内容。当用户完成后,生成永久链接,允许他们通过Facebook/Twitter/GooglePlus/等分享他们的创作。我希望他们的共享帖子包含用户的图像和内容,但我发现社交媒体机器人只解析HTML元标签从我的永久链接,他们不评估任何Javascript。
如何让用户的内容出现在共享的社交媒体帖子上?当单击永久链接时,客户端Javascript将计算永久链接的查询参数并呈现用户的内容。我也可以在HTML元标签中呈现用户的内容,这是Twitter和FB用来填充帖子的内容,但机器人不评估任何javascript,所以元标签不呈现。
我探索的一个可能的解决方案是预渲染。也许我的永久链接可以是AWS S3存储桶上HTML文件的位置,我可以在用户共享其永久链接时立即创建该存储桶。S3上的HTML文件可以包含特定于用户的元标记,我可以将其提供给社交媒体机器人。当文件被访问时,我可以让它重定向到我的永久链接。这看起来合理吗?我可以在试用后向您报告。
另一个解决方案是使用预呈现服务,如https://prerender.io/。它看起来有点笨重和黑盒化,但它可能比我上面的S3解决方案更健壮和可靠。什么好主意吗?
我愿意接受反馈和其他解决方案,任何建议都会很棒。
其他相关信息:
这个答案似乎很有趣,它涉及到激活Facebook Javascript SDK:https://stackoverflow.com/a/34178987/1884158
我知道像Twitter的Card Validator和facebook的Share Debugger这样的工具:https://cards-dev.twitter.com/validatorhttps://developers.facebook.com/tools/debug/这对于测试任何解决方案都很有用。
如果有帮助的话,我的网站是一个React应用程序,捆绑在HTML/CSS/JS中,并完全在客户端呈现。
我还没有找到一个合适的解决方案来解决这个问题,但我确实提出了一个解决方法/hack,包括设置一个单独的服务。下面是我想到的服务:https://github.com/mapseed/sharing/blob/master/share.js
如果我们的静态站点托管在example.com
,我们可以启动一个运行在sharing.example.com
的服务器,该服务器接受请求并将请求从sharing.example.com/my/route
重定向到example.com/my/route
。但是,如果请求具有与社交媒体爬虫匹配的user-agent
HTTP头,就像我们在这里所做的那样,那么我们返回一个只包含元标签的html页面,就像我们在这里所做的那样。
这种方法有一些限制,但是:
-
我们想在社交媒体上分享的链接需要指向我们的
sharing.example.com
子域。如果请求来自社交媒体机器人,这将使我们的服务能够返回带有适当元标签的HTML页面,否则将请求重定向到我们的example.com
网站。 -
为了生成元标签的内容,我们的可共享链接必须有查询参数来传递所有信息以填充我们的元标签。例如,我们的可共享链接看起来像这样:
sharing.example.com/post/my-post?title=my-title&desc=my-description
。这意味着我们的可共享链接可以变得相当长。您可以看到我们如何从查询参数中提取信息,并将其注入到HTML模板中,这里使用元标签:https://github.com/mapseed/sharing/blob/master/share.js#L18-L27
如果这些限制是可以接受的,那么这个解决方案工作得很好。请注意,这对SEO也有不利的一面,因为将被分享的链接来自sharing.example.com
,而不是我们的example.com
网站。
同样,我们将不得不启动一个额外的服务器来运行这个服务。虽然我们应该能够将此实现迁移到无服务器架构中,如AWS Lambda。
- 社交分享按钮呈现错误
- 显示多个推特分享按钮
- 点击Facebook上的分享按钮后重定向
- 阻止推特分享按钮加载不正确
- Blogger上的Tumblr自定义分享按钮 - 打开弹出窗口
- 动态脸书分享按钮
- Facebook分享按钮没有显示
- Twitter分享按钮与JavaScript测验
- 如何在iframe中加载谷歌加分享按钮
- 通过jQuery的动态Facebook分享按钮
- 推特分享按钮动态网址分享
- 推特“推文分享”按钮不起作用
- 无法通过 Javascript 加载 Twitter 分享按钮
- 微信分享按钮
- 社交分享按钮,如CNET
- 谷歌社交互动分析与汤博乐分享按钮
- 领英分享按钮没有抓取图片或内容进行分享
- 社交分享按钮加速
- 在Google Plus上分享链接,分享按钮就在旁边
- Facebook喜欢和分享按钮javascript更新我的网页内容,如重新加载页面