如何修复Telegram链接预览显示'A new flutter project'旧描述问题
Flutter Web项目Telegram链接预览显示旧内容的解决方法
你已经修改的pubspec.yaml描述、普通title和description meta标签不会被Telegram作为预览内容的优先读取源,问题核心在于Open Graph标签未修改、Telegram缓存未刷新,按以下步骤处理即可:
1. 补全修改web/index.html内的Open Graph(OG)标签
Telegram、WhatsApp等社交平台的链接预览优先读取OG元标签,不会优先使用普通的页面title和description,Flutter默认生成的项目里OG标签写死了初始的"A new Flutter project."内容,很多人修改普通标签时会漏掉这部分。
找到项目web/index.html的<head>区域,修改/新增以下标签,替换为你自己的内容:
<!-- 基础OG标签,是Telegram读取的核心内容 --> <meta property="og:title" content="你的项目正式标题" /> <meta property="og:description" content="你的项目正式描述内容" /> <meta property="og:type" content="website" /> <meta property="og:url" content="你的站点正式访问地址" /> <!-- 预览图必须是公网可直接访问的绝对路径,不能用相对路径 --> <meta property="og:image" content="预览图的完整公网链接" /> <!-- 兼容Twitter类平台的卡片配置 --> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:title" content="你的项目正式标题" /> <meta name="twitter:description" content="你的项目正式描述内容" /> <meta name="twitter:image" content="预览图的完整公网链接" />
2. 重新构建部署,确认线上内容生效
改完本地文件后,执行flutter build web重新生成Web产物,将build/web目录下的文件全量上传到你的服务器/托管平台。如果用了CDN服务,记得同步刷新CDN缓存,避免Telegram抓取到旧版本的index.html文件。
你可以用以下命令模拟Telegram爬虫请求,确认线上返回的页面内OG标签已经是修改后的内容:
curl -A "TelegramBot (like TwitterBot)" 你的站点地址
3. 刷新Telegram的链接缓存
Telegram对已抓取过的链接有最长7天的缓存周期,不需要等自动过期,直接使用Telegram官方提供的链接预览调试工具提交你的站点地址,手动触发重新抓取即可,刷新完成后等待1-2分钟再发送链接就会显示新的预览内容。
如果是在已有对话里测试,可以在链接末尾拼接一个无意义的查询参数(比如?v=1),绕过对话内的本地预览缓存。
内容的提问来源于stack exchange,提问作者Guillem Poy
相关产品推荐
相关产品推荐

