×
¥
查看详情
🔥 会员专享 文生文 SEO

网站图片SEO优化清单生成器

👁️ 517 次查看
📅 Dec 11, 2025
💡 核心价值: 根据用户提供的网站类型、图片数据及业务目标,生成一份定制化、可执行的图片SEO优化清单。清单覆盖压缩、ALT标签、命名规范及性能优化等关键环节,并提供具体操作步骤与工具建议,助力提升网站图片搜索排名与页面加载速度。

🎯 可自定义参数(6个)

网站类型
需要优化图片的网站所属类型
核心优化目标
本次图片SEO优化的主要目标方向
待优化图片样本信息
待优化图片的典型示例信息
目标受众特征
网站主要访问者的特征描述
技术栈与平台限制
网站使用的技术栈与平台限制说明
性能基准数据
现有的网站性能测试基准数据

🎨 效果示例

图片SEO优化清单(针对电子商务网站网站)

  1. 图片压缩

    • 建立图片清单与分组
      • 导出全站图片URL、类型、尺寸、文件大小、引用页面与SKU映射(详情页/列表/横幅/图标)。
      • 按类型分组并设定“预算”目标:
        • 商品主图/细节图(1200x1200):WebP 150–320KB(细节近景上限400KB),色准需求高的款式优先高质量。
        • 列表缩略图(≤300x300):WebP 20–60KB。
        • 轮播/横幅(1920x600):优先改为HTML文字叠加+背景图;图片部分WebP 180–380KB。
        • 图标(SVG/PNG):SVG 优先;PNG ≤10KB,或合并为SVG Sprite。
    • 确定格式策略(结合现有能力:仅支持WebP,不支持AVIF)
      • 照片类(主图/细节/缩略图):WebP 有损,质量系数q=68–78;对高反差细节图试q=80对比抽检。
      • 含大块文字/图形横幅:优先WebP无损或接近无损;如品牌规范需100%锐度,保留PNG或WebP无损,但强烈建议把文字用HTML/CSS输出。
      • 图标:首选SVG;现有小PNG转WebP无明显收益时保留PNG;统一sRGB色域。
    • 生成响应式多尺寸与DPR变体(前端已有React,构建可批处理)
      • 主图基线尺寸集(正方形):320/480/720/960/1200/1600(px),为2x屏提供更细粒度;仅在需要时加载≥1200。
      • 列表图:160/240/300(px)。
      • 横幅:768/1200/1440/1920(px)。
      • 使用Sharp/Squoosh在CI生成:去除EXIF,保留sRGB,渐进式JPEG只作为极端回退无需上线。
    • 具体压缩参数建议(用于批处理脚本)
      • WebP(主图/细节):q=72,auto-filter开启,effort=5–6;含精细纹理的局部样本抽检,必要时该SKU提升到q=78。
      • WebP(列表图):q=60–65,effort=4。
      • WebP(横幅):文字边缘锯齿明显则q=80或采用无损;优先将文字移到HTML层,图片仅承载背景。
      • PNG(保留场景):zopfli 压缩,去除无用ICC/EXIF。
    • URL 与版本化策略(提升CDN命中率与避免重复)
      • 文件名带内容hash:{sku}--main-front--black--1200.ab12cd.webp;Cache-Control: public, max-age=31536000, immutable。
      • 对历史无hash资源,发布一次性301到新URL;对象存储按内容hash去重,避免同图多路径。
    • 重新上传与回填映射
      • 以CSV导入映射:old_url,new_url,sku,variant,size,批量更新数据库与模板引用。
      • 部署后跑全站链接校验,保证图片404率降至<0.1%。
    • 质量抽检与A/B
      • 按品类抽检10%产品:放大细节、肤色/布料纹理对比;监控退货理由涉及“色差/不清晰”变化。
      • 以列表页为样本,比较q=68/72/76对LCP与转化的影响,选最优。
  2. ALT标签

    • 梳理生成规则并落地到可导入CSV
      • 针对商品图(PDP):[品牌] [性别可选] [类目/款式] [材质/关键卖点] [颜色] [视角/细节]。示例:“Acme 长款呢子大衣 羊毛混纺 黑色 正面主图”;
      • 细节图使用部位词:“… 口袋细节”“… 拉链细节”“… 里衬做工”;
      • 变体图必须包含颜色/图案:“… 海军蓝 侧面”;尺码不进ALT(非视觉差异)。
    • 列表页缩略图ALT(简洁版)
      • “[品牌] [类目/款式] [颜色] 缩略图”。避免营销词如“热卖”“特价”堆砌。
    • 横幅与活动图
      • 若文字移至HTML:图片alt设为主题背景描述,如“春季上新背景图”,将促销文案写在可读文本与aria-label中。
      • 若暂未改造:ALT简述关键信息,不逐字抄写长文案,如“女装春季新品 立减200元 活动横幅”。
    • 图标与装饰图
      • 纯装饰图标:alt="" 并加role="presentation"或aria-hidden="true"。
      • 功能性图标(尺码表、材质说明):alt如“尺码对照表图标”“材质:100%棉 图标”,同时提供可访问文本说明或表格链接。
    • ALT写作规范
      • 长度建议80–120字节(切勿超过125字符),自然语言、与页面上下文一致。
      • 包含1个核心关键词即可,避免堆砌和重复(如“产品图片”“图1”禁用)。
      • 不使用“图片/照片/图像的”冗词开头;直接描述主体。
      • 每张图唯一ALT;同一SKU的不同角度/细节不得复用。
    • 执行与校验
      • 从PIM/商品库自动拼装ALT初稿,导出CSV人工抽检后批量导入。
      • 上线后用爬虫抽样比对:空ALT率目标<1%,重复ALT占比<3%。
      • 针对辅助功能用户进行屏幕阅读器抽测(NVDA/VoiceOver),验证阅读顺序与理解度。
  3. 文件命名规范

    • 制定统一命名方案(小写、连字符、可读、包含关键信息)
      • 模板:{sku}--{视角/用途}--{颜色/图案}--{尺寸宽度}px[.hash].webp
      • 视角/用途枚举:main-front, main-back, side, detail-zipper, detail-fabric, thumb, banner-home, banner-sale 等。
      • 仅使用a-z, 0-9, 连字符- 与双连字符--分隔层级;禁止空格、中文、下划线、特殊字符。
      • 变体必须唯一:颜色英文或转写(heise→black,hai-jun-lan→navy),避免同名覆盖。
    • 示例(将现状映射为规范)
      • /p/coat/IMG_20240213_000123.jpg → /img/p/coat/sku98765/sku98765--main-front--black--1200.webp
      • /thumbs/sku12345-01.jpg → /img/p/sku12345/sku12345--thumb--red--300.webp
      • /banner/home_new_arrivals.png → /img/b/banner/2025-ss/2025-ss--home-hero-1--1920.webp(文字放HTML后可改为…--bg--1920.webp)
      • 图标:/img/i/ui-icon--size-guide.svg 或 /img/i/material--wool-badge.svg
    • 路径与版本
      • 路径分仓:/img/p/{sku}/…(商品),/img/b/{campaign}/…(横幅),/img/i/…(图标)。
      • 内容hash置于扩展名前以实现长缓存;变更即新URL,无需强制清CDN。
    • 批量改名与回写
      • 用脚本生成old→new映射CSV;后台导入后,写301重定向表并更新站内引用与image-sitemap。
      • 对历史重复文件做感知哈希(pHash/dHash)去重,统一指向规范URL。
  4. 其他注意事项

    • 延迟加载与优先级
      • 首屏LCP图片:loading="eager" + fetchpriority="high" + decoding="async";其余均loading="lazy"(IntersectionObserver兜底阈值200–300px)。
      • 使用轻量占位(LQIP/blurhash或10–20px模糊WebP base64)避免感知空白。
    • 响应式图片
      • 为主图/列表图提供srcset和sizes,避免使用客户端提示头变体(CDN不支持按请求头缓存)。
      • 例:srcset含320–1200宽度描述符;sizes基于断点,如“(max-width: 768px) 50vw, (max-width: 1200px) 33vw, 600px”。
    • 明确width/height与CLS治理
      • 模板中注入width、height或CSS aspect-ratio,数据源来自构建阶段生成的元信息JSON。
      • 列表与瀑布流容器预留固定比例占位,目标CLS P75维持≤0.05。
    • CDN与缓存
      • 静态域名启用HTTP/2/3;关闭域名分片;开启Brotli压缩(SVG/JSON)。
      • Cache-Control: max-age=31536000, immutable;ETag/Last-Modified基于内容hash。
      • 统一URL,消除“同图多路径”;目标CDN命中率提升至≥90%。
    • 图片站点地图(image-sitemap)
      • 为每个产品URL列出所有代表性图片的image:image,包含image:title(短标题)、image:caption(角度/卖点)、image:license(如适用)。
      • 对颜色变体各列一张主图;提交至GSC并分卷(每5万URL一份)。
    • 结构化数据与社交卡片
      • Product schema中image数组列出从大到小的主图URL;为每张图添加ImageObject的width、height、caption。
      • Open Graph与Twitter Card使用压缩后的专用图(1200x630,≤300KB),避免使用首屏大横幅原图。
    • 横幅改造(提升转化与可访问性)
      • 将文字移至HTML(可检索/可翻译/可读屏),图片仅作背景;按钮添加aria-label与可聚焦状态。
      • 移动端提供更窄更高的裁切版本,避免加载1920宽大图。
    • 色彩与准确度
      • 全量转为sRGB;去除多余ICC配置文件;校色敏感SKU提高质量系数并保留对照样本。
      • 拍摄/后期统一灰卡与背景,减少色偏退换货。
    • 上线前后监控
      • 指标目标:详情页图片总字节下降≥50%,LCP P75 ≤2.5s(4G),首页横幅首屏图≤350KB,图片请求数减少20–30%。
      • 监控项:图片字节占比、CDN命中、404、GSC图片索引覆盖、自然图片流量占比、转化率与跳出率。
    • 定期图片优化审计(每月)
      • 抽查ALT唯一性、文件命名合规率、超预算大图名单、重复图片与未用图片清理。
      • Lighthouse/WebPageTest对关键模板回归测试;CrUX监控Core Web Vitals。
    • 回退与兼容
      • 极少数不支持WebP的客户端可通过服务器UA白名单回退JPEG,但当前主流移动端已全量支持,可不部署回退以简化。
    • 开发落地建议(结合技术栈)
      • 构建:Node+Sharp管线,产出多尺寸WebP与meta.json(width/height/hash/bytes)。
      • 前端组件:统一,封装srcset/sizes/lazy/占位/优先级;仅接受规范化命名与元信息。
      • Nginx:开启Gzip/Brotli for SVG/JSON,添加长期缓存头;301映射表托管于Nginx map。
      • 后台:支持CSV批量ALT与重命名导入;阻止重复SKU颜色同名上传(校验命名规则与感知哈希)。
      • 数据迁移脚本:为历史内容批量注入width/height与更新引用URL。
    • SEO与法务
      • robots.txt允许抓取图片目录;禁止屏蔽CDN图片域。
      • 如有版权要求,统一添加license与来源;必要时在image-sitemap中声明。

本清单聚焦电商场景,优先满足提升图片搜索排名、缩短页面加载时间、提升用户转化率、降低服务器带宽成本四大目标:通过响应式WebP压缩与长缓存大幅降本提速;严格ALT与命名规范提升图片可见性与可访问性;使用image-sitemap与结构化数据增强收录;以优先级加载、尺寸占位与横幅文本改造改善用户体验与转化。

图片SEO优化清单(针对博客/个人网站)

  1. 图片压缩

    • 盘点与分组:按类型建立清单(封面≈120张、截图/示例、信息图/流程图≈180张),导出分辨率、大小、路径(如 /posts/2024/cover.jpg、/assets/img/screenshot-20231102.png)。
    • 统一色彩空间:将所有位图从 Display P3/未标注ICC 转换为 sRGB,保留ICC配置文件,去除其余元数据(EXIF/缩略图),避免显色不一致与冗余体积。
    • 确定目标格式(按类型):
      • 文章封面/摄影类:主用 WebP(有损,q=72–80),回退 JPEG(MozJPEG q=74–82);仅当需透明才用 PNG。
      • 截图/代码/界面:主用 WebP 无损或 PNG(pngquant 质量 65–85);确保文字/UI 边缘清晰。
      • 信息图/流程图:优先导出为 SVG(文本/矢量保留);临时位图用 WebP 无损;评估矢量化替代(见“其他注意事项”)。
    • 设定响应式尺寸断点(覆盖移动60%/高分屏需求):
      • 封面(容器常见最大宽度≈1200–1400):生成 400/640/800/1200/1600w。
      • 正文图(容器宽≈720–800):生成 360/480/720/960/1200w(含 2x 密度)。
      • 可放大原图:提供单独原图下载/灯箱加载,不默认首屏加载。
    • 压缩参数基线:
      • WebP 有损 q=72–80;WebP 无损开启 near-lossless=60–80 视文本锐度。
      • JPEG(MozJPEG)q=74–82,开启 progressive;PNG 使用 pngquant --quality=65-85 + oxipng -o6。
      • SVG 使用 SVGO 去冗余(保留 /<desc>)。</li> </ul> </li> <li><input type="checkbox" disabled=""> 响应式标注模板(用于构建产物):为每张图生成 srcset(含 w 描述符)与 sizes;正文 sizes: "(max-width: 768px) 100vw, 720px";封面 sizes 依据主题容器宽设置,如"(max-width: 768px) 100vw, 1200px"。</li> <li><input type="checkbox" disabled=""> 替换与回填:批量将 Markdown/模板中的单 src 更新为 <picture>(webp 源 + jpg/png 回退)或 img[srcset];首屏封面保留高质量版本。</li> <li><input type="checkbox" disabled=""> 体积目标与验收: <ul> <li><input type="checkbox" disabled=""> 首屏封面 ≤ 200–300KB(WebP 1200–1600w),正文单图 ≤ 80–160KB,长图≤ 280KB。</li> <li><input type="checkbox" disabled=""> 首页 LCP P75 目标 < 2.5s;长文页总图片体积下降 ≥ 40%。</li> </ul> </li> <li><input type="checkbox" disabled=""> 去重与复用:启用感知哈希/内容哈希去重(构建时检测重复上传),同图跨文统一路径,提升CDN命中。</li> <li><input type="checkbox" disabled=""> 重新上传与缓存:采用文件名版本化(-v2 或 -h{短哈希}),CDN 配置 Cache-Control: public, max-age=31536000, immutable。</li> </ul> </li> <li> <p>ALT标签</p> <ul> <li><input type="checkbox" disabled=""> 全量审查:导出所有图片 ALT;标记空值与“图1/截图”等泛化描述,统计修复清单与优先级(封面/信息图优先)。</li> <li><input type="checkbox" disabled=""> 设定 ALT 编写规则(适配技术读者与无障碍): <ul> <li><input type="checkbox" disabled=""> 长度:建议 80–125 字符;可读的自然语言,避免关键词堆砌(主要关键词≤1次,贴合上下文)。</li> <li><input type="checkbox" disabled=""> 语义模板: <ul> <li><input type="checkbox" disabled=""> 封面:主题 + 角度/价值主张(如“Docker Compose 教程:多服务本地开发环境实例架构图”)。</li> <li><input type="checkbox" disabled=""> 截图/示例:操作对象 + 步骤/设置 + 预期结果(如“VS Code 中将 ‘Format on Save’ 选项设为 true,保存时自动格式化”)。</li> <li><input type="checkbox" disabled=""> 信息图/流程图:图表类型 + 变量/层级 + 关键结论(如“CI/CD 流水线:提交触发构建→测试→部署,主分支仅经审核合并”)。</li> </ul> </li> <li><input type="checkbox" disabled=""> 装饰性图:无信息价值时使用空 ALT(alt=""),并添加 role="presentation"/aria-hidden="true"。</li> </ul> </li> <li><input type="checkbox" disabled=""> 复杂图长描述:信息图/流程图在图下提供要点列表或“查看文本版”链接;使用 figure/figcaption + aria-describedby 关联。</li> <li><input type="checkbox" disabled=""> SVG 可访问性:内嵌 <title> 与 <desc>,外层 role="img";确保标题与描述与 ALT 对齐且不冲突。</li> <li><input type="checkbox" disabled=""> 与内容一致:ALT 不要出现“图片/图示”等无效前缀;避免不实内容或读者看不到的信息。</li> <li><input type="checkbox" disabled=""> 工作流与来源: <ul> <li><input type="checkbox" disabled=""> 在 Markdown 前置元数据中新增 image.alt、image.caption、image.license 字段,构建时注入到 HTML。</li> <li><input type="checkbox" disabled=""> 建立审核清单(PR 必须包含 ALT/说明),无 ALT 阻止合并。</li> </ul> </li> <li><input type="checkbox" disabled=""> 测试:使用 NVDA/VoiceOver 实测阅读顺序、ALT 朗读体验;确保标题/说明不重复冗余。</li> </ul> </li> <li> <p>文件命名规范</p> <ul> <li><input type="checkbox" disabled=""> 制定统一命名规则:小写、连字符分词、含文章 slug/主题关键词/类型/可选尺寸或模式;禁止空格、中文、下划线、时间戳命名。</li> <li><input type="checkbox" disabled=""> 基础模式:{slug}-{关键词}-{类型}[-{宽度}w][-dark|-light][-v{版本}|-h{短哈希}].{ext}</li> <li><input type="checkbox" disabled=""> 目录规范:文章内图放 /posts/{year}/{slug}/img/;跨文共用素材放 /assets/img/shared/;避免重复拷贝。</li> <li><input type="checkbox" disabled=""> 示例: <ul> <li><input type="checkbox" disabled=""> cover-docker-compose-guide-1600w.webp(封面)</li> <li><input type="checkbox" disabled=""> screenshot-vscode-format-on-save-node-js-720w.webp(截图)</li> <li><input type="checkbox" disabled=""> infographic-ci-cd-pipeline.svg(信息图)</li> <li><input type="checkbox" disabled=""> flowchart-git-branching-strategy-dark.svg(暗色版流程图)</li> <li><input type="checkbox" disabled=""> docker-network-modes-960w-h8f2c3.webp(含短哈希缓存戳)</li> </ul> </li> <li><input type="checkbox" disabled=""> 既有资源改名计划:批量重命名并更新引用;对已被外链的图片保留旧路径 301→新文件或保留别名副本,避免外链失效。</li> <li><input type="checkbox" disabled=""> 构建自动化:在构建脚本中强制命名校验(正则规则),不符合即失败;自动附加 -{宽度}w 与短哈希。</li> </ul> </li> <li> <p>其他注意事项</p> <ul> <li><input type="checkbox" disabled=""> 延迟加载与 LCP 优化: <ul> <li><input type="checkbox" disabled=""> 首屏最大可见图(封面)禁用懒加载:loading="eager"、decoding="sync"、fetchpriority="high"。</li> <li><input type="checkbox" disabled=""> 预加载:<link rel="preload" as="image" imagesrcset="…" imagesizes="…"> 仅针对首屏实用尺寸。</li> <li><input type="checkbox" disabled=""> 其余图片使用 loading="lazy"、decoding="async"、fetchpriority="low";设置明确的 width/height 防 CLS。</li> </ul> </li> <li><input type="checkbox" disabled=""> 响应式图片与高分屏支持: <ul> <li><input type="checkbox" disabled=""> 全站模板接入 <picture>(webp 源 + jpg/png 回退)或 img[srcset],覆盖 1x/2x;sizes 与容器宽匹配。</li> <li><input type="checkbox" disabled=""> 灯箱/放大:正文默认加载至容器 2x(如 720–800 宽容器→加载 ≤1600w),原图放大点击后惰性加载。</li> </ul> </li> <li><input type="checkbox" disabled=""> CDN 与缓存策略: <ul> <li><input type="checkbox" disabled=""> 静态资源走 CDN,开启 HTTP/2/3 与 Brotli;Cache-Control: public, max-age=31536000, immutable;开启 stale-while-revalidate。</li> <li><input type="checkbox" disabled=""> 路径去重:跨文引用统一到 /assets/img/shared/,提升 75%→90%+ 命中率。</li> <li><input type="checkbox" disabled=""> 依据路径缓存:避免 query 参数版本化,使用文件名版本化以利于 CDN 缓存。</li> </ul> </li> <li><input type="checkbox" disabled=""> 结构化数据与图片站点地图: <ul> <li><input type="checkbox" disabled=""> 生成 image-sitemap.xml,包含每页主要图片的 <a href="image:loc">image:loc</a>、<a href="image:title">image:title</a>(来自 caption/标题)、<a href="image:caption">image:caption</a>、可选 <a href="image:license">image:license</a>。</li> <li><input type="checkbox" disabled=""> 在文章模板注入 JSON-LD(Article/BlogPosting):image 为 ImageObject,含 url/contentUrl、width、height、caption、author、license,primaryImageOfPage 指向封面。</li> <li><input type="checkbox" disabled=""> 向 Google Search Console 提交并监控抓取与覆盖。</li> </ul> </li> <li><input type="checkbox" disabled=""> 暗色模式与对比度: <ul> <li><input type="checkbox" disabled=""> 为关键信息图提供 light/dark 两版(命名 -light/-dark),使用 <picture> + media="(prefers-color-scheme: dark)" 自动适配。</li> <li><input type="checkbox" disabled=""> 保证文字与背景对比度≥4.5:1;避免在暗色下浅灰文本。</li> </ul> </li> <li><input type="checkbox" disabled=""> 信息图可访问性与可缩放性: <ul> <li><input type="checkbox" disabled=""> 优先使用 SVG,保留文本元素(非轮廓化)以获得可检索与缩放清晰;若需嵌入字体,控制子集并声明许可。</li> <li><input type="checkbox" disabled=""> 在 SVG 中添加 <title>/<desc>;为复杂图提供正文“文字版要点/数据表”。</li> </ul> </li> <li><input type="checkbox" disabled=""> 安全与清理: <ul> <li><input type="checkbox" disabled=""> 内嵌 SVG 进行安全清洗(移除脚本/事件),配置 CSP:img-src 与 object-src 限制。</li> <li><input type="checkbox" disabled=""> 去除不必要元数据,保留版权声明(或转入 JSON-LD)。</li> </ul> </li> <li><input type="checkbox" disabled=""> 性能与质量基线: <ul> <li><input type="checkbox" disabled=""> 图片预算:单页图片总量 ≤ 1.5MB(长文可放宽至 ≤ 1.8MB),单图常规 ≤ 150KB,封面 ≤ 300KB。</li> <li><input type="checkbox" disabled=""> 核查弱网体验:在 3G Fast/Slow 模拟下阅读流畅,首屏可视图片在 ≤2.0s 内出现。</li> </ul> </li> <li><input type="checkbox" disabled=""> 构建与工具链建议(静态站适配): <ul> <li><input type="checkbox" disabled=""> 采用 sharp/eleventy-img/astro-imagetools/next-optimized-images 等在构建时生成多尺寸与 WebP;PNG 用 pngquant+oxipng;SVG 用 svgo。</li> <li><input type="checkbox" disabled=""> 提交前钩子:阻止 >500KB 原始位图进入仓库;自动转码/生成 srcset;校验 ALT 必填。</li> </ul> </li> <li><input type="checkbox" disabled=""> 定期图片优化审计(每季度): <ul> <li><input type="checkbox" disabled=""> Lighthouse CI + WebPageTest:跟踪 LCP/INP/总图片体积;抓取缺失 srcset/ALT 的比例。</li> <li><input type="checkbox" disabled=""> GSC 图片搜索表现:查看“图片”搜索展示与点击;对低展示封面优化 ALT/文件名/结构化。</li> <li><input type="checkbox" disabled=""> 资产清理:删除未引用图片、合并重复;更新 CDN 失效策略。</li> </ul> </li> </ul> </li> </ol> <p>补充:针对你站点的立即落地优先级</p> <ul> <li>优先级 P0(本周):封面专治(禁懒加载+预加载+WebP 多尺寸)、统一 sRGB、为封面/信息图重写 ALT、生成 srcset/sizes 模板并批量替换。</li> <li>优先级 P1(两周内):信息图 SVG 化(至少新稿与常青文)、文件命名规范与构建校验、图片站点地图与 JSON-LD 注入。</li> <li>优先级 P2(本月):去重与共享资产目录、弱网放大按需加载方案、暗色模式图片管线。</li> <li>目标对齐:图片搜索流量↑,移动端 LCP<2.5s,屏幕阅读器朗读自然、信息图可获得文本等价物。</li> </ul> </div> </div> </div> <div class="prompt-examples-v4-tab-content " id="example-2"> <div class="prompt-examples-v4-output"> <button class="prompt-examples-v4-popup-btn" onclick="showExamplePopup(2, 'SaaS图清单', this)" title="在弹窗中查看完整内容"> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> <path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3"/> </svg> </button> <div class="html-content-display prompt-examples-v4-output-text"> <p>图片SEO优化清单(针对SaaS服务平台网站)</p> <ol> <li> <p>图片压缩</p> <ul> <li><input type="checkbox" disabled=""> 盘点与分组:导出全站图片清单(路径、类型、尺寸、体积、引用页、是否首屏/LCP、是否复用),按以下分组标记:营销首屏大图与产品截图、功能对比与流程SVG、文档页截图与动图、客户案例Logo。</li> <li><input type="checkbox" disabled=""> 设定硬性预算(用于CI与日常评估): <ul> <li>LCP首屏图(hero/product):≤ 350–450 KB(WebP),≤ 1200ms解码;页面图片总量:营销页 ≤ 1.3 MB,文档页 ≤ 1.6 MB;单图默认上限 ≤ 180 KB(复杂图例除外)。</li> </ul> </li> <li><input type="checkbox" disabled=""> 确定格式策略(按资产类型): <ul> <li>营销首屏背景与产品截图:优先WebP(有透明需WebP-Lossy带alpha);必要时备用JPEG/PNG。暂不启用AVIF(平台不支持)。</li> <li>功能对比/流程示意:保持SVG,使用SVGO无损优化(删除隐藏层、缩短ID、合并路径、移除内嵌位图)。</li> <li>文档页动图:全部替换为视频容器(优先WebM VP9 + H.264 MP4双源),保留1帧静态poster(WebP/PNG);保留极少数必要GIF且≤ 1 MB。</li> <li>客户Logo:优先SVG;PNG Logo通过pngquant压缩并生成1x/2x位图。</li> </ul> </li> <li><input type="checkbox" disabled=""> 多尺寸与自适应出图: <ul> <li>构建阶段用sharp/squoosh生成固定宽度集合(避免过多变体):[320, 480, 640, 768, 960, 1280, 1600, 1920, 2560];文档图:增加[1200];Logo:[96, 144, 192]。</li> <li>如需额外尺寸,利用对象存储的按查询参数缩放(w, q, fmt)并依赖CDN缓存;控制尺寸步长(不小于160px)避免变体爆炸。</li> </ul> </li> <li><input type="checkbox" disabled=""> 质量参数建议: <ul> <li>WebP q=68–78(UI截图建议72+保障文字清晰);JPEG q=70–78;PNG使用pngquant --quality=65-80;移除所有EXIF/ICC元数据。</li> </ul> </li> <li><input type="checkbox" disabled=""> 渐进增强与回退: <ul> <li>使用<picture>提供WebP源与JPEG/PNG回退;避免基于Accept/UA协商(CDN不支持Vary UA)。</li> </ul> </li> <li><input type="checkbox" disabled=""> 重新上传与缓存: <ul> <li>采用固定命名+哈希指纹(见命名规范),长缓存Cache-Control: public, max-age=31536000, immutable。</li> <li>对按查询参数缩放的URL,确保CDN Cache Key包含查询参数并开启stale-while-revalidate。</li> <li>预热关键地域(国内/东南亚/欧美)CDN缓存:预抓取LCP与折叠上方图源。</li> </ul> </li> <li><input type="checkbox" disabled=""> 校验与回归: <ul> <li>使用Lighthouse/Calibre对关键落地页复测:LCP P75 → ≤ 2.5s,页面图片体积 ≤ 1.3 MB,图片请求数 ≤ 16(首屏≤ 8)。</li> </ul> </li> </ul> </li> <li> <p>ALT标签</p> <ul> <li><input type="checkbox" disabled=""> 全站审查:抓取DOM中<img>与<svg role="img">,导出alt缺失、重复、仅“screenshot”的项;营销页优先修复。</li> <li><input type="checkbox" disabled=""> 编写ALT准则(按类型): <ul> <li>长度:中文建议20–40字(≤ 80字上限);英文60–120字符。自然语言描述,避免堆砌关键词。</li> <li>关键词:仅在语义自然时融入1个核心词(如“在线报表SaaS”),勿硬塞品牌/功能词串列。</li> </ul> </li> <li><input type="checkbox" disabled=""> 类型化写法与示例: <ul> <li>营销首屏/产品截图:描述用户能达成的结果与界面要点(例:”可视化报表仪表盘,实时销售漏斗与自定义筛选“)。</li> <li>功能对比/流程图(复杂信息):img使用简要alt,详细说明放入<figure><figcaption>或以aria-describedby指向隐藏文本,避免超长alt。</li> <li>文档截图:交代步骤+界面位置(例:“Webhook设置页,添加签名密钥步骤2”)。</li> <li>动图/视频:对<video>添加aria-label或为poster图提供alt;为动效提供“发生了什么”而非“动画”。</li> <li>Logo:合作客户Logo使用公司名(例:“ABC公司 Logo”);若列表仅展示Logo墙且标题已说明“客户案例”,可使用简短alt=“ABC”。</li> <li>装饰性图:alt=""并加role="presentation";避免读屏冗余。</li> </ul> </li> <li><input type="checkbox" disabled=""> 多语言适配: <ul> <li>同一图片URL在不同语言页面使用本地化alt文本;文件名不含语言码。</li> </ul> </li> <li><input type="checkbox" disabled=""> 工程落地: <ul> <li>Vue组件统一接口:<AppImage :src ... :alt="t('…')">,强制alt为必填属性(装饰性传空字符串并显示lint警告)。</li> <li>CI规则:构建时扫描营销与文档目录,凡<img>无alt或为默认词汇(如“image”、“screenshot”)则阻断构建。</li> </ul> </li> <li><input type="checkbox" disabled=""> 无障碍验证: <ul> <li>使用axe/lighthouse a11y审查确保图表类内容具备等价文本;动图尊重prefers-reduced-motion,必要时提供“静态替代图”。</li> </ul> </li> </ul> </li> <li> <p>文件命名规范</p> <ul> <li><input type="checkbox" disabled=""> 约定统一规范(小写、连字符、语义化、无语言前缀、含尺寸/用途): <ul> <li>模板:类别-页面/模块-主题/对象-用途[-变体]-{宽度标识}w.{格式}</li> <li>仅用于缓存指纹的哈希置于扩展名前(.hash.),保留可读主干。</li> </ul> </li> <li><input type="checkbox" disabled=""> 命名规则细则: <ul> <li>使用小写字母与连字符,禁止空格与下划线;不含语言码(en/zh)与日期戳;避免无意义串(img001)。</li> <li>关键词自然、贴近搜索语料(如“dashboard”“workflow”);控制主干≤ 6个词根。</li> </ul> </li> <li><input type="checkbox" disabled=""> 示例(良好): <ul> <li>marketing-hero-dashboard-analytics-1920w.webp</li> <li>product-feature-workflow-approval-960w.webp</li> <li>docs-webhook-setup-step2-1200w.webp</li> <li>diagrams-data-sync-flow.svg</li> <li>logos/client-abc.svg</li> </ul> </li> <li><input type="checkbox" disabled=""> 示例(不推荐): <ul> <li>zh-hero1-final.PNG(含语言码、无语义、错误大小写)</li> <li>screenshot_new.png(无关键信息)</li> <li>clientABC_logo.png(驼峰与下划线)</li> </ul> </li> <li><input type="checkbox" disabled=""> 迁移策略: <ul> <li>新内容全面采用新规范;存量资源逐步替换,旧URL保留并做长期缓存。</li> <li>仅对高流量着陆页与图片搜索有价值的资源执行301跳转至新URL;其他维持就地更新以避免大规模缓存失效。</li> </ul> </li> <li><input type="checkbox" disabled=""> 地图/站点提交: <ul> <li>在image-sitemap.xml中使用新规范URL,包含<a href="image:title">image:title</a>与<a href="image:caption">image:caption</a>(与alt一致或扩展),提升图片检索质量。</li> </ul> </li> </ul> </li> <li> <p>其他注意事项</p> <ul> <li><input type="checkbox" disabled=""> LCP与优先级控制(营销页核心): <ul> <li>确保LCP资源是最终渲染的<img>而非CSS背景;为LCP图设置fetchpriority="high"、decoding="sync/auto"(勿lazy)、width/height明确定义。</li> <li>在<head>首部添加<link rel="preload" as="image" imagesrcset="…" imagesizes="…">指向与最终<img>一致的URL/变体,避免“预加载与实际渲染不一致”。</li> <li>SSR输出时将LCP图片放在DOM靠前位置;开启服务器Early Hints (103) 预告LCP资源。</li> </ul> </li> <li><input type="checkbox" disabled=""> 延迟加载策略: <ul> <li>折叠以下全部图片:loading="lazy" decoding="async";采用IntersectionObserver微调阈值rootMargin="200px"以平滑进入视口。</li> <li>对Logo墙与图库,分批分页/虚拟滚动,首批≤ 12个。</li> <li>对动图/视频,进入视口再替换poster为<video>;离开视口自动pause以降CPU。</li> </ul> </li> <li><input type="checkbox" disabled=""> 响应式图片: <ul> <li>使用<picture> + <source type="image/webp" srcset="…w 640w, … 1280w, … 1920w" sizes="(min-width:1200px) 960px, (min-width:768px) 80vw, 100vw"> + <img src="…-960w.jpg" …>。</li> <li>对UI截图文字清晰度要求高的区域,提供x描述符(1x/2x)变体;避免浏览器选择过度压缩的版本。</li> </ul> </li> <li><input type="checkbox" disabled=""> 动图替换为视频(重点降带宽与CPU): <ul> <li>将/docs/guides/*.gif迁移为<video autoplay loop muted playsinline poster="…">,提供<source src="…webm" type="video/webm"><source src="…mp4" type="video/mp4">,保留极简gif回退(仅≤ 1 MB)。</li> <li>尊重prefers-reduced-motion:自动停播并显示poster;提供“播放/暂停”按钮可达。</li> <li>更新CSP:media-src 与 img-src 允许第一方CDN子域。</li> </ul> </li> <li><input type="checkbox" disabled=""> CDN与网络优化: <ul> <li>启用HTTP/3(QUIC)与0-RTT;对图片开启大TTL与stale-while-revalidate。</li> <li>使用第一方子域(如 i.example.com)承载图片与视频,配置为CDN回源,保持同组织域避免企业网拦截;开启preconnect/dns-prefetch。</li> <li>提升命中率:统一尺寸集合、消除语言前缀导致的重复URL、确保Cache Key包含查询参数(w,q,fmt),对热点URL执行区域预热。</li> <li>发送Priority/pri(CDN支持时)让LCP图优先;服务器开启H2/H3优先级。</li> </ul> </li> <li><input type="checkbox" disabled=""> 首屏设计与可读性: <ul> <li>将首屏大图与背景装饰分离:背景用CSS渐变/小纹理,产品UI截图独立<img>以便更强压缩与更清晰文字。</li> <li>可用微型占位(LQIP/blurhash)替代空白,体积≤ 1 KB,避免影响评分。</li> </ul> </li> <li><input type="checkbox" disabled=""> 多语言与复用: <ul> <li>跨语言页面指向同一图片URL(去除语言前缀),仅本地化alt/figcaption与周边文案,减少重复抓取与缓存碎片。</li> </ul> </li> <li><input type="checkbox" disabled=""> 构建与CI/CD整合: <ul> <li>在构建阶段生成多尺寸与WebP变体;对SVG执行SVGO;产出manifest(原始→变体映射)供组件引用。</li> <li>设置性能预算:总图片体积、单图体积、图片请求数超标即失败;对无alt/无尺寸属性发出错误。</li> </ul> </li> <li><input type="checkbox" disabled=""> 定期审计与监控: <ul> <li>月度图片审计:导出Top带宽图片、低命中率URL、异常体积SVG;针对性优化。</li> <li>RUM采集LCP资源URL与尺寸,按地域与网络类型细分;目标:营销页LCP P75 ≤ 2.5s(4G),图片带宽占比≤ 55%(从78%下降)。</li> </ul> </li> <li><input type="checkbox" disabled=""> 结构化数据与图片地图: <ul> <li>在营销落地页添加WebPage/Product的primaryImageOfPage或ImageObject(含url、width、height、caption);提交image-sitemap,配合Open Graph/Twitter卡片提供优化后图源。</li> </ul> </li> <li><input type="checkbox" disabled=""> 元属性与防抖: <ul> <li>所有<img>声明width与height或使用CSS aspect-ratio,避免CLS;对非关键图添加referrerpolicy、fetchpriority="low"(支持时)降低争抢带宽。</li> </ul> </li> </ul> </li> </ol> <p>补充针对现状的优先修复序列(建议两周内执行)</p> <ul> <li>第1周(影响LCP与带宽大头) <ul> <li><input type="checkbox" disabled=""> 将营销首屏2.4MB大图替换为多尺寸WebP(1920/1280/960),目标≤ 380 KB;使用<img> + fetchpriority="high" + preload,一致的srcset/sizes;移除或拆分背景纹理。</li> <li><input type="checkbox" disabled=""> 全站替换GIF为WebM+MP4,补充poster与懒加载;关闭自动播放于非可视区域;预计文档页每个动图节省70–90%带宽与CPU。</li> <li><input type="checkbox" disabled=""> SVG批量SVGO;Logo墙统一SVG/PNG压缩并懒加载,分页展示。</li> </ul> </li> <li>第2周(稳态与治理) <ul> <li><input type="checkbox" disabled=""> 上线图片组件(封装<picture>、lazy、解码策略、占位符、alt必填)并替换营销与文档页用法。</li> <li><input type="checkbox" disabled=""> 迁移到第一方CDN子域(或保留同源但开启H3与优先级),加preconnect;CDN开启stale-while-revalidate与按查询参数缓存。</li> <li><input type="checkbox" disabled=""> 清理语言前缀资源,统一到语言无关URL;更新image-sitemap;修复营销页alt文本与图表figcaption。</li> <li><input type="checkbox" disabled=""> 接入Lighthouse CI与性能预算,RUM上报LCP资源与变体命中情况。</li> </ul> </li> </ul> <p>预期成效(与核心目标对应)</p> <ul> <li>提升网站整体性能评分:Lighthouse Performance +10–20;营销页LCP P75由4.8s降至≤ 2.5–3.0s。</li> <li>缩短页面加载时间:首屏图片体积下降70%+,请求数减少30–40%。</li> <li>提升无障碍访问体验:营销页ALT覆盖率达到≈100%,复杂图提供等价文本。</li> <li>降低服务器带宽成本:图片带宽占比从78%降至≤ 55%,CDN命中率由62%→75%+。</li> </ul> </div> </div> </div> </div> </div> </section> <div id="examplePopupModal" class="prompt-examples-v4-modal"> <div class="prompt-examples-v4-modal-content"> <div class="prompt-examples-v4-modal-header"> <h3 id="popupTitle">示例详情</h3> <button class="prompt-examples-v4-modal-close" onclick="closeExamplePopup()"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> <line x1="18" y1="6" x2="6" y2="18"></line> <line x1="6" y1="6" x2="18" y2="18"></line> </svg> </button> </div> <div class="prompt-examples-v4-modal-body"> <div id="popupContent" class="prompt-examples-v4-popup-content"></div> </div> </div> </div> <script> // 弹窗功能JavaScript function showExamplePopup(exampleIndex, title, buttonElement) { const modal = document.getElementById('examplePopupModal'); const popupTitle = document.getElementById('popupTitle'); const popupContent = document.getElementById('popupContent'); // 设置弹窗标题 popupTitle.textContent = title; // 获取对应示例的内容 const tabContent = document.getElementById('example-' + exampleIndex); const outputText = tabContent.querySelector('.prompt-examples-v4-output-text'); if (outputText) { // 克隆内容到弹窗中 popupContent.innerHTML = outputText.innerHTML; } else { popupContent.innerHTML = '<p>暂无内容</p>'; } // 显示弹窗 modal.classList.add('show'); document.body.style.overflow = 'hidden'; // 防止背景滚动 } function closeExamplePopup() { const modal = document.getElementById('examplePopupModal'); modal.classList.remove('show'); document.body.style.overflow = ''; // 恢复背景滚动 } // 点击背景关闭弹窗 document.addEventListener('DOMContentLoaded', function() { const modal = document.getElementById('examplePopupModal'); if (modal) { modal.addEventListener('click', function(e) { if (e.target === modal) { closeExamplePopup(); } }); } // ESC键关闭弹窗 document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeExamplePopup(); } }); }); </script> <script> document.addEventListener('DOMContentLoaded', function() { // Tab切换功能 const tabs = document.querySelectorAll('.prompt-examples-v4-tab'); const contents = document.querySelectorAll('.prompt-examples-v4-tab-content'); tabs.forEach(tab => { tab.addEventListener('click', function() { const targetId = this.getAttribute('data-tab'); // 移除所有active状态 tabs.forEach(t => t.classList.remove('active')); contents.forEach(c => c.classList.remove('active')); // 添加当前active状态 this.classList.add('active'); const targetContent = document.getElementById(targetId); if (targetContent) { targetContent.classList.add('active'); } }); }); }); </script> </div> <section class="usage-section"> <h2 class="section-title">📖 如何使用</h2> <div class="usage-tabs"> <button class="usage-tab active" onclick="switchUsageTab('chat')">Chat 用户</button> <button class="usage-tab" onclick="switchUsageTab('developer')">开发者</button> </div> <!-- Chat用户 --> <div class="usage-content active" id="chat-content"> <div class="usage-card"> <div class="usage-card-title"> <span>⚡</span> 30秒出活:复制 → 粘贴 → 搞定 </div> <div class="usage-card-desc"> 与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡! </div> <a href="javascript:void(0)" class="usage-card-action disabled" id="usageCopyBtn"> <span>加载中...</span> <span></span> </a> </div> <div class="usage-card"> <div class="usage-card-title"> <span>💬</span> 不会填参数?让 AI 反过来问你 </div> <div class="usage-card-desc"> 不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。 </div> <a href="https://tools.explinks.com/prompt-interactive?slug=seo_image_checklist" class="usage-card-action"> <span>转为对话模式</span> <span>→</span> </a> </div> <div class="usage-card"> <div class="usage-card-title"> <span>🚀</span> 告别复制粘贴,Chat 里直接调用 </div> <div class="usage-card-desc"> 无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。 </div> <span class="usage-card-action" style="background:linear-gradient(135deg,#94a3b8,#64748b);box-shadow:0 4px 12px rgba(100,116,139,0.3);cursor:default;pointer-events:none;"> <span>即将推出</span> </span> </div> </div> <!-- 开发者 --> <div class="usage-content" id="developer-content"> <div class="usage-card"> <div class="usage-card-title"> <span>🔌</span> 接口一调,提示词自己会进化 </div> <div class="usage-card-desc"> 手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。 </div> <a href="https://tools.explinks.com/prompt-api?slug=seo_image_checklist" class="usage-card-action"> <span>发布 API</span> <span>→</span> </a> </div> <div class="usage-card"> <div class="usage-card-title"> <span>🤖</span> 一键变成你的专属 Agent 应用 </div> <div class="usage-card-desc"> 不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。 </div> <a href="javascript:void(0)" class="usage-card-action disabled"> <span>创建 Agent</span> <span>→</span> </a> </div> </div> </section> <script> // 切换使用指南标签页 function switchUsageTab(tab) { document.querySelectorAll('.usage-tab').forEach(t => t.classList.remove('active')); document.querySelectorAll('.usage-content').forEach(c => c.classList.remove('active')); if (event) { event.target.classList.add('active'); } else { // 提供一个备用方式找到对应的tab let tabs = document.querySelectorAll('.usage-tab'); for(let i = 0; i < tabs.length; i++) { if(tabs[i].getAttribute('onclick').includes(tab)) { tabs[i].classList.add('active'); break; } } } const contentArea = document.getElementById(tab + '-content'); if (contentArea) { contentArea.classList.add('active'); } } // 优雅的 Toast 提示组件 function customToast(message, isError = false) { // 如果页面已经有相同提示,先移除 const existingToast = document.getElementById('custom-toast-message'); if (existingToast) { existingToast.remove(); } const toast = document.createElement('div'); toast.id = 'custom-toast-message'; toast.textContent = message; // 极简拟物化样式 Object.assign(toast.style, { position: 'fixed', top: '40px', left: '50%', transform: 'translateX(-50%) translateY(-20px)', background: isError ? '#fee2e2' : '#ffffff', color: isError ? '#ef4444' : '#10b981', padding: '12px 24px', borderRadius: '12px', boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)', border: isError ? '1px solid #fecaca' : '1px solid #d1fae5', fontSize: '14px', fontWeight: '600', zIndex: '9999', opacity: '0', transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)', display: 'flex', alignItems: 'center', gap: '8px' }); // 成功状态添加一个小勾,失败添加一个叉 const icon = document.createElement('span'); icon.textContent = isError ? '❌' : '✓'; toast.prepend(icon); document.body.appendChild(toast); // 触发动画 requestAnimationFrame(() => { toast.style.opacity = '1'; toast.style.transform = 'translateX(-50%) translateY(0)'; }); // 3秒后自动消失然后解除 DOM setTimeout(() => { toast.style.opacity = '0'; toast.style.transform = 'translateX(-50%) translateY(-20px)'; setTimeout(() => toast.remove(), 300); }, 3000); } // 复制提示词功能(调用已经有的方法) function copyPromptContent() { const contentArea = document.getElementById('leftPromptContentArea'); if (contentArea && contentArea.textContent) { const textToCopy = contentArea.textContent; if (typeof copyTextToClipboard === 'function') { copyTextToClipboard(textToCopy, () => { if (typeof showToast === 'function') showToast('复制成功'); else customToast('提示词已复制到剪贴板'); }); } else if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(textToCopy).then(() => { customToast('提示词已复制到剪贴板'); }).catch(() => { fallbackCopyTextToClipboard(textToCopy); }); } else { fallbackCopyTextToClipboard(textToCopy); } } else { customToast('获取提示词内容失败,请先获取内容或联系管理员!', true); } } // 针对非安全环境(http)的旧版浏览器复制降级方案 function fallbackCopyTextToClipboard(text) { var textArea = document.createElement("textarea"); textArea.value = text; // 防止页面滚动和闪烁 textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; textArea.style.opacity = "0"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); if (successful) { if (typeof showToast === 'function') showToast('复制成功'); else customToast('提示词已复制到剪贴板'); } else { customToast('复制失败,请手动选中并复制', true); } } catch (err) { customToast('复制失败,浏览器不支持', true); } document.body.removeChild(textArea); } // 动态更新"复制提示词"按钮状态 function updateUsageCopyBtnState() { const btn = document.getElementById('usageCopyBtn'); if (!btn) return; // 检查是否登录 var token = (function() { var m = document.cookie.match(/(?:^|; )Admin-Token=([^;]+)/); return m ? decodeURIComponent(m[1]) : null; })(); if (!token) { // 未登录 btn.classList.remove('disabled'); btn.innerHTML = '<span>登录后完整查看与复制</span><span>→</span>'; btn.onclick = function(e) { e.preventDefault(); if (typeof openLoginDialog === 'function') { openLoginDialog(); } else { window.location.href = '/login'; } }; return; } // 已登录,检查是否为会员 if (typeof window.fetchVipStatus === 'function') { window.fetchVipStatus().then(function(result) { btn.classList.remove('disabled'); if (result && result.isVip) { // VIP 会员 btn.innerHTML = '<span>复制提示词</span><span>→</span>'; btn.onclick = function(e) { e.preventDefault(); copyPromptContent(); }; } else { // 非终身会员 btn.innerHTML = '<span>终身会员免费复制</span><span>→</span>'; btn.onclick = function(e) { e.preventDefault(); window.open('/user/vip', '_blank'); }; } }).catch(function() { btn.innerHTML = '<span>状态异常,请刷新</span><span></span>'; }); } else { // 兜底:获取不到方法时,默认要求开通会员 btn.classList.remove('disabled'); btn.innerHTML = '<span>终身会员免费复制</span><span>→</span>'; btn.onclick = function(e) { e.preventDefault(); window.open('/user/vip', '_blank'); }; } } document.addEventListener('DOMContentLoaded', updateUsageCopyBtnState); // 监听登录成功消息重新渲染 window.addEventListener('message', function(event) { if (event.data === 'loginSuccess') { setTimeout(updateUsageCopyBtnState, 300); } }); </script> <div class="features-summary-section"> <h2 class="section-title">✅ 特性总结</h2> <div class="features-summary-list"> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">智能生成个性化的图片SEO优化清单,全面覆盖压缩、ALT标签、命名规范及性能提升。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">一键生成分步骤指导,直观呈现具体操作,帮助用户快速优化图片SEO。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">根据特定产品类型量身定制,确保优化方案贴合业务需求与目标市场。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">自动推荐最佳文件命名规范,提升图片对搜索引擎的友好度和可识别性。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">提供专业的ALT标签编写指导,兼顾SEO效果与视觉障碍用户的可用性。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">优化页面加载性能,涵盖延迟加载、使用CDN和响应式图片等高效策略。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">清单模板结构清晰,帮助用户有条理地执行图片优化任务,提高效率。</span> </div> <div class="feature-summary-item"> <span class="feature-summary-bullet"></span> <span class="feature-summary-text">持续支持定期图片优化审计,让网站始终符合最新SEO优化标准。</span> </div> </div> </div> <div class="problem-section"> <h2 class="section-title">🎯 解决的问题</h2> <div class="scenario-card"> <div class="scenario-text"> <div class="html-content-display solved-problems-text"> <p>为网站开发者和内容优化专员提供一份全面的 SEO 图片优化清单,通过具体、可操作的步骤,帮助他们高效提升网站图片的搜索引擎表现,同时确保页面加载速度和用户体验的优化,为网站带来更多自然流量。</p> </div> </div> </div> </div> <style> .problem-section { margin-bottom: 32px; } .problem-section .scenario-card { background-color: #f8f9fa; border-radius: 12px; padding: 24px; } .problem-section .scenario-text { color: #333; line-height: 1.6; } .problem-section .scenario-text .solved-problems-text { background-color: transparent !important; border: none !important; padding: 0 !important; margin: 0 !important; font-size: 15px; } </style> <!-- 版本历史 --> <div class="version-history-section"> <h2 class="section-title">🕒 版本历史</h2> <div class="coming-soon-wrapper"> <div class="coming-soon-content"> <div class="version-timeline"> <div class="version-item current"> <div class="version-badge">当前版本</div> <div class="version-header"> <span class="version-number">v2.1</span> <span class="version-date">2024-01-15</span> </div> <div class="version-title">优化输出结构,增强情节连贯性</div> <ul class="version-changes"> <li>✨ 新增章节节奏控制参数</li> <li>🔧 优化人物关系描述逻辑</li> <li>📝 改进主题深化引导语</li> <li>🎯 增强情节转折点设计</li> </ul> </div> <div class="version-item "> <div class="version-header"> <span class="version-number">v2.0</span> <span class="version-date">2023-12-20</span> </div> <div class="version-title">重构提示词架构,提升生成质量</div> <ul class="version-changes"> <li>🚀 全新的提示词结构设计</li> <li>📊 增加输出格式化选项</li> <li>💡 优化角色塑造引导</li> </ul> </div> <div class="version-item "> <div class="version-header"> <span class="version-number">v1.5</span> <span class="version-date">2023-11-10</span> </div> <div class="version-title">修复已知问题,提升稳定性</div> <ul class="version-changes"> <li>🐛 修复长文本处理bug</li> <li>⚡ 提升响应速度</li> </ul> </div> <div class="version-item "> <div class="version-header"> <span class="version-number">v1.0</span> <span class="version-date">2023-10-01</span> </div> <div class="version-title">首次发布</div> <ul class="version-changes"> <li>🎉 初始版本上线</li> </ul> </div> </div> </div> <div class="coming-soon-overlay"> <div class="coming-soon-badge">COMING SOON</div> <div class="coming-soon-text">版本历史追踪,即将启航</div> <div class="coming-soon-subtext">记录每一次提示词的进化与升级,敬请期待。</div> </div> </div> </div> <!-- 用户评价 --> <div class="reviews-section"> <div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px;"> <h2 class="section-title" style="margin-bottom: 0;">💬 用户评价</h2> <!-- 暂时隐藏评价按钮,因为模块正在开发中 --> <!-- <button class="feedback-btn" onclick="openFeedbackModal()"> <span>✍️</span> <span>写评价 / 反馈</span> </button> --> </div> <div class="coming-soon-wrapper"> <div class="coming-soon-content"> <div class="reviews-stats"> <div class="rating-summary"> <div class="rating-score">4.8</div> <div class="rating-stars">⭐⭐⭐⭐⭐</div> <div class="rating-count">基于 28 条评价</div> </div> <div class="rating-bars"> <div class="rating-bar-item"> <span class="rating-label">5星</span> <div class="rating-bar"> <div class="rating-bar-fill" style="width: 85%"></div> </div> <span class="rating-percent">85%</span> </div> <div class="rating-bar-item"> <span class="rating-label">4星</span> <div class="rating-bar"> <div class="rating-bar-fill" style="width: 12%"></div> </div> <span class="rating-percent">12%</span> </div> <div class="rating-bar-item"> <span class="rating-label">3星</span> <div class="rating-bar"> <div class="rating-bar-fill" style="width: 3%"></div> </div> <span class="rating-percent">3%</span> </div> </div> </div> <div class="reviews-list"> <div class="review-item"> <div class="review-header"> <div class="review-avatar">👤</div> <div class="review-info"> <div class="review-author">电商运营 - 张先生</div> <div class="review-meta"> <span class="review-stars">⭐⭐⭐⭐⭐</span> <span class="review-date">2025-01-15</span> </div> </div> </div> <div class="review-content"> 双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。 </div> <div class="review-tags"> <span class="review-tag">效果好</span> <span class="review-tag">节省时间</span> </div> </div> <div class="review-item"> <div class="review-header"> <div class="review-avatar">👤</div> <div class="review-info"> <div class="review-author">品牌设计师 - 李女士</div> <div class="review-meta"> <span class="review-stars">⭐⭐⭐⭐⭐</span> <span class="review-date">2025-01-10</span> </div> </div> </div> <div class="review-content"> 作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。 </div> <div class="review-tags"> <span class="review-tag">创意好</span> <span class="review-tag">专业</span> </div> </div> </div> <div class="reviews-footer"> <button class="load-more-reviews" onclick="alert('加载更多评论功能开发中...')"> 查看更多评价 </button> </div> </div> <div class="coming-soon-overlay"> <div class="coming-soon-badge">COMING SOON</div> <div class="coming-soon-text">用户评价与反馈系统,即将上线</div> <div class="coming-soon-subtext">倾听真实反馈,在这里留下您的使用心得,敬请期待。</div> </div> </div> </div> <!-- 反馈弹窗 --> <div class="feedback-modal" id="feedbackModal" onclick="closeFeedbackModal(event)"> <div class="feedback-modal-content" onclick="event.stopPropagation()"> <button class="feedback-close" onclick="closeFeedbackModal()">×</button> <div class="feedback-header"> <div class="feedback-icon">💬</div> <h2 class="feedback-title">提交反馈</h2> <p class="feedback-subtitle">您的反馈对我们非常重要</p> <div class="feedback-tip"> <span class="feedback-tip-icon">💡</span> <span class="feedback-tip-text">您的真实感受,是提示词通往完美的最后一块拼图。</span> </div> </div> <form class="feedback-form" onsubmit="handleFeedbackSubmit(event)"> <!-- 星级评分 --> <div class="feedback-rating-group"> <label class="feedback-label">整体评价 <span style="color: #ef4444;">*</span></label> <div class="feedback-rating-stars" id="ratingStars"> <span class="rating-star active" data-rating="1" onclick="setRating(1)">★</span> <span class="rating-star active" data-rating="2" onclick="setRating(2)">★</span> <span class="rating-star active" data-rating="3" onclick="setRating(3)">★</span> <span class="rating-star active" data-rating="4" onclick="setRating(4)">★</span> <span class="rating-star active" data-rating="5" onclick="setRating(5)">★</span> </div> <input type="hidden" name="rating" id="ratingValue" value="5" required> <div class="rating-text" id="ratingText">非常满意</div> </div> <div class="feedback-type-group"> <label class="feedback-label">反馈类型</label> <div class="feedback-type-options"> <label class="feedback-type-option"> <input type="radio" name="feedbackType" value="bug"> <span class="feedback-type-label">🪲 Bug反馈</span> </label> <label class="feedback-type-option"> <input type="radio" name="feedbackType" value="feature"> <span class="feedback-type-label">💡 功能建议</span> </label> <label class="feedback-type-option"> <input type="radio" name="feedbackType" value="content"> <span class="feedback-type-label">📝 内容问题</span> </label> <label class="feedback-type-option"> <input type="radio" name="feedbackType" value="review" checked> <span class="feedback-type-label">⭐ 使用评价</span> </label> </div> </div> <div class="feedback-input-group"> <label class="feedback-label">反馈内容 <span style="color: #ef4444;">*</span></label> <textarea class="feedback-textarea" id="feedbackContent" name="feedbackContent" placeholder="请详细描述您遇到的问题或建议..." maxlength="500" required oninput="updateFeedbackCharCount()" ></textarea> <div class="feedback-char-count"><span id="feedbackCharCount">0</span> / 500</div> </div> <button type="submit" class="feedback-submit-btn">提交反馈</button> </form> </div> </div> <script> // 打开反馈弹窗 function openFeedbackModal() { var modal = document.getElementById('feedbackModal'); if(modal) { modal.classList.add('show'); document.body.style.overflow = 'hidden'; } } // 设置星级评分 function setRating(rating) { var stars = document.querySelectorAll('.rating-star'); var ratingTexts = ['很不满意', '不满意', '一般', '满意', '非常满意']; // 更新星星显示 for(var i = 0; i < stars.length; i++) { if (i < rating) { stars[i].classList.add('active'); } else { stars[i].classList.remove('active'); } } // 更新隐藏字段和文字 var ratingValueInput = document.getElementById('ratingValue'); var ratingTextDiv = document.getElementById('ratingText'); if(ratingValueInput) ratingValueInput.value = rating; if(ratingTextDiv) ratingTextDiv.textContent = ratingTexts[rating - 1]; } // 关闭反馈弹窗 function closeFeedbackModal(event) { if (!event || event.target.id === 'feedbackModal' || event.target.classList.contains('feedback-close')) { var modal = document.getElementById('feedbackModal'); if(modal) { modal.classList.remove('show'); } document.body.style.overflow = ''; // 重置表单 var form = document.querySelector('.feedback-form'); if(form) form.reset(); var charCount = document.getElementById('feedbackCharCount'); if(charCount) charCount.textContent = '0'; // 重置星级为5星 setRating(5); } } // 更新字符计数 function updateFeedbackCharCount() { var contentElem = document.getElementById('feedbackContent'); var countElem = document.getElementById('feedbackCharCount'); if(contentElem && countElem) { countElem.textContent = contentElem.value.length; } } // 处理反馈提交 function handleFeedbackSubmit(event) { event.preventDefault(); var form = event.target; var formData = new FormData(form); var feedbackData = { type: formData.get('feedbackType'), rating: formData.get('rating'), content: formData.get('feedbackContent') }; console.log('Feedback submitted:', feedbackData); alert('感谢您的反馈!您的评价已经提交。'); closeFeedbackModal({target: {id: 'feedbackModal'}}); } </script> </div> <div class="prompt-detail-v5-right"> <div class="prompt-info-right right-panel"> <div id="action-panel"> <div class="action-card" style="text-align: center; color: #94a3b8; padding: 40px 20px;"> 加载中... </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { renderActionPanel(); }); // 监听登录成功消息重新渲染(强制刷新 Promise 缓存) window.addEventListener('message', function(event) { if (event.data === 'loginSuccess') { setTimeout(function() { window._vipStatusPromise = null; // 清除旧的 Promise 缓存 renderActionPanel(); }, 300); } }); function renderActionPanel() { var panel = document.getElementById('action-panel'); // 检查是否登录 var token = (function() { var m = document.cookie.match(/(?:^|; )Admin-Token=([^;]+)/); return m ? decodeURIComponent(m[1]) : null; })(); if (!token) { // 未登录 renderNonVipPanel(); return; } // 已登录,复用全局 fetchVipStatus(与 Header 共享同一请求,不会重复调用接口) if (typeof window.fetchVipStatus === 'function') { window.fetchVipStatus().then(function(result) { if (result && result.isVip) { renderVipPanel(); } else { renderNonVipPanel(); } }); } else { // 兜底:如果 header 还没加载完 renderNonVipPanel(); } } // 提示词定制化工具数据 var toolsBaseUrl = "https://tools.explinks.com"; var slug = "seo_image_checklist"; var panelTools = [ { id: 'formatter', icon: '📝', name: '参数填写器', desc: '可视化填写变量参数', color: 'purple', href: slug ? (toolsBaseUrl + '/prompt-formatter?slug=' + slug) : 'javascript:void(0)' }, { id: 'interactive', icon: '💬', name: 'Web Chat 适配器', desc: '转为交互式对话脚本', color: 'green', href: slug ? (toolsBaseUrl + '/prompt-interactive?slug=' + slug) : 'javascript:void(0)' }, { id: 'translate', icon: '🌐', name: '本地化翻译器', desc: '一键翻译为多语言版本', color: 'blue', href: slug ? (toolsBaseUrl + '/prompt-translate?slug=' + slug) : 'javascript:void(0)' }, { id: 'optimizer', icon: '🎯', name: '个性化调校', desc: '根据场景微调提示词', color: 'orange', href: slug ? (toolsBaseUrl + '/prompt-optimizer?slug=' + slug) : 'javascript:void(0)' }, { id: 'api', icon: '⚡', name: 'API 动态调校', desc: '接口调用 + 批量评价优化', color: 'cyan', href: slug ? (toolsBaseUrl + '/prompt-api?slug=' + slug) : 'javascript:void(0)' }, // { id: 'agent', icon: '🤖', name: '生成个人工作助手', desc: '发布为独立 Agent 应用', color: 'pink', href: 'javascript:window.showToast("功能开发中")', badge: '即将推出' }, // { id: 'batch', icon: '📊', name: '批量数据生成器', desc: 'Form表单或Excel上传,批量生成结果', color: 'amber', href: 'javascript:window.showToast("功能开发中")', badge: '即将推出' } ]; function renderToolsHtml() { return panelTools.map(function(tool) { var badgeHtml = tool.badge ? '<span class="panel-tool-badge">' + tool.badge + '</span>' : ''; return '<a class="panel-tool-item" href="' + tool.href + '">' + '<div class="panel-tool-icon ' + tool.color + '">' + tool.icon + '</div>' + '<div class="panel-tool-info">' + '<div class="panel-tool-name">' + tool.name + '</div>' + '<div class="panel-tool-desc">' + tool.desc + '</div>' + '</div>' + '<span class="panel-tool-arrow">›</span>' + badgeHtml + '</a>'; }).join(''); } function renderVipPanel() { var panel = document.getElementById('action-panel'); panel.innerHTML = '' + '<!-- 核心:复制提示词 -->' + '<button class="copy-core-btn" id="rightCopyBtn" onclick="handleRightCopyClick()">' + '<span class="copy-icon">📋</span>' + '<span>复制提示词</span>' + '</button>' + '<div class="copy-sub-info">' + '<span class="free-badge">会员</span>' + '<span>无限次复制 · 已解锁全部工具</span>' + '</div>' + '<!-- 会员状态 -->' + '<div class="panel-member-active">' + '<span class="panel-member-active-icon">✨</span>' + '<div class="panel-member-active-info">' + '<div class="panel-member-active-title">终身会员</div>' + '<div class="panel-member-active-desc">已解锁全部功能</div>' + '</div>' + '</div>' + '<!-- 工具箱 -->' + '<div class="panel-tools-section">' + '<div class="panel-tools-title">🛠 提示词定制化工具</div>' + '<div class="panel-tools-subtitle">7 种 AI 工具,把同一条提示词变成你的专属版本</div>' + '<div class="panel-tools-grid">' + renderToolsHtml() + '</div>' + '</div>'; } function renderNonVipPanel() { var panel = document.getElementById('action-panel'); var currentPrice = 188; // 检查是否登录以决定点击按钮行为 var token = (function() { var m = document.cookie.match(/(?:^|; )Admin-Token=([^;]+)/); return m ? decodeURIComponent(m[1]) : null; })(); var copyBtnAction = token ? "window.open('/user/vip', '_blank')" : "handleUnloggedCopyClick()"; var copyBtnText = token ? "终身会员免费复制" : "登录后完整查看与复制"; panel.innerHTML = '' + '<!-- 核心:复制提示词 -->' + '<button class="copy-core-btn" id="rightCopyBtn" onclick="' + copyBtnAction + '">' + '<span>' + copyBtnText + '</span>' + '</button>' + '<!-- 会员提示 -->' + '<div class="panel-member-hint">' + '<p class="panel-member-hint-text">' + '开通会员解锁 <strong>无限复制</strong> + 全部工具<br>' + '<span style="font-size:12px; color:#64748b;">¥' + currentPrice + ' 终身 · 7天无理由退款</span>' + '</p>' + '<a href="/user/vip" target="_blank" class="panel-member-link">' + '了解会员权益 <span>→</span>' + '</a>' + '</div>' + '<!-- 工具箱 -->' + '<div class="panel-tools-section">' + '<div class="panel-tools-title">🛠 提示词定制化工具</div>' + '<div class="panel-tools-subtitle">7 种 AI 工具,把同一条提示词变成你的专属版本</div>' + '<div class="panel-tools-grid">' + renderToolsHtml() + '</div>' + '</div>'; } function handleUnloggedCopyClick() { if (typeof openLoginDialog === 'function') { openLoginDialog(function() { if (typeof loadLeftPromptContent === 'function') { loadLeftPromptContent(); } if (typeof loadPromptContent === 'function') { loadPromptContent(); } }); } else { window.location.href = '/user/login'; } } function handleRightCopyClick() { const contentArea = document.getElementById('leftPromptContentArea'); if (!contentArea || !contentArea.textContent.trim()) { if (typeof window.showToast === 'function') { window.showToast('提示词内容未加载完全,或无权限复制'); } else { alert('提示词内容未加载完全,或无权限复制'); } return; } const content = contentArea.textContent; const btn = document.getElementById('rightCopyBtn'); const onSuccess = () => { if (btn) { btn.classList.add('copied'); btn.innerHTML = '<span class="copy-icon">✅</span><span>已复制到剪贴板</span>'; setTimeout(() => { btn.classList.remove('copied'); btn.innerHTML = '<span class="copy-icon">📋</span><span>复制提示词</span>'; }, 2000); } }; const showSuccessMsg = () => { if (typeof window.showToast === 'function') window.showToast('提示词已复制到剪贴板'); onSuccess(); }; const showFailMsg = () => { if (typeof window.showToast === 'function') window.showToast('复制失败,请手动选中并复制', true); else alert('复制失败,请手动选中并复制'); }; if (typeof copyTextToClipboard === 'function') { copyTextToClipboard(content, () => { showSuccessMsg(); }); } else if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(content).then(() => { showSuccessMsg(); }).catch(() => { if (typeof fallbackCopyTextToClipboard === 'function') { fallbackCopyTextToClipboard(content); showSuccessMsg(); } else { showFailMsg(); } }); } else if (typeof fallbackCopyTextToClipboard === 'function') { fallbackCopyTextToClipboard(content); showSuccessMsg(); } else { // 最底层的兜底容错,专治各种不服环境(包括本地IP非HTTPS等环境导致的 navigator.clipboard 失效) try { var textArea = document.createElement("textarea"); textArea.value = content; // 防止页面滚动 textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); var successful = document.execCommand('copy'); document.body.removeChild(textArea); if (successful) { showSuccessMsg(); } else { showFailMsg(); } } catch (err) { showFailMsg(); } } } </script> </div> </div> </div> <!-- 相关推荐模块 --> <script src="https://static.explinks.com/prompt/static/js/home/zone-section.js?v=1774518585999"></script> <div id="footer"> <div class="footer-container"> <div class="footer-content"> <div class="footer-section"> <h5 class="footer-section-title"> 热门提示词</h5> <ul class="footer-section-links"> <li> <a href="https://prompts.explinks.com/quick_keyword_generator" target="_blank">快速关键词生成助手</a> </li> <li> <a href="https://prompts.explinks.com/content_strategy_guide" target="_blank">内容营销策略制定</a> </li> <li> <a href="https://prompts.explinks.com/rapid_test_scenario" target="_blank">快速测试场景生成器</a> </li> <li> <a href="https://prompts.explinks.com/novel_writing_guide" target="_blank">小说创作策略指南</a> </li> <li> <a href="https://prompts.explinks.com/seo_keyword_generator" target="_blank">SEO优化关键词生成助手</a> </li> <li> <a href="https://prompts.explinks.com/article_title_generator" target="_blank">文章标题生成器</a> </li> </ul> </div> <div class="footer-section"> <h5 class="footer-section-title"> 热门角色</h5> <ul class="footer-section-links"> <li> <a href="https://prompts.explinks.com/category/content_creator" target="_blank">内容创作者</a> </li> <li> <a href="https://prompts.explinks.com/category/developer" target="_blank">开发者</a> </li> <li> <a href="https://prompts.explinks.com/category/product_manager" target="_blank">产品经理</a> </li> <li> <a href="https://prompts.explinks.com/category/business_consultant" target="_blank">商业顾问</a> </li> <li> <a href="https://prompts.explinks.com/category/marketing_personnel" target="_blank">市场营销</a> </li> <li> <a href="https://prompts.explinks.com/category/business_owner" target="_blank">企业管理者</a> </li> <li> <a href="https://prompts.explinks.com/category/seo_expert" target="_blank">SEO专家</a> </li> <li> <a href="https://prompts.explinks.com/category/data_analyst" target="_blank">数据分析师</a> </li> </ul> </div> <div class="footer-section"> <h5 class="footer-section-title"> 热门业务</h5> <ul class="footer-section-links"> <li> <a href="https://prompts.explinks.com/category/developer?biz_cat_slug=code" target="_blank">代码</a> </li> <li> <a href="https://prompts.explinks.com/category/content_creator?biz_cat_slug=content_creation" target="_blank">内容创作</a> </li> <li> <a href="https://prompts.explinks.com/category/human_resources_personnel?biz_cat_slug=human_resources" target="_blank">人力资源</a> </li> <li> <a href="https://prompts.explinks.com/category/data_analyst?biz_cat_slug=data_analysis" target="_blank">数据分析</a> </li> <li> <a href="https://prompts.explinks.com/category/writer?biz_cat_slug=creative_writing" target="_blank">创意写作</a> </li> <li> <a href="https://prompts.explinks.com/category/illustrator?biz_cat_slug=art" target="_blank">艺术插画</a> </li> </ul> </div> <div class="footer-section"> <h5 class="footer-section-title"> 大模型API</h5> <ul class="footer-section-links"> <li> <a href="https://www.explinks.com/api/ai_deepseek_brand" target="_blank">DeepSeek</a> </li> <li> <a href="https://www.explinks.com/api/ai_openai_brand" target="_blank">OpenAI</a> </li> <li> <a href="https://www.explinks.com/api/ai_anthropic_brand" target="_blank">Claude</a> </li> <li> <a href="https://www.explinks.com/api/ai_gemini_brand" target="_blank">Gemini</a> </li> <li> <a href="https://www.explinks.com/api/ai_grok_brand" target="_blank">Grok</a> </li> <li> <a href="https://www.explinks.com/api/ai_tongyi_brand" target="_blank">Qwen</a> </li> </ul> </div> <div class="footer-section"> <h5 class="footer-section-title"> 使用我们的提示词工具</h5> <ul class="footer-section-links"> <li> <a target="_blank">提示词API化工具(敬请期待)</a> </li> <li> <a href="https://tools.explinks.com/prompt-generator" target="_blank">提示词应用工具</a> </li> <li> <a href="https://console.explinks.com/myHome/prompts" target="_blank">我的提示词库</a> </li> <li> <a href="https://prompts.explinks.com/packs/partners" target="_blank">加入分销计划,零成本获得收益</a> </li> </ul> </div> </div> <div class="footer-bottom"> <div class="footer-brand"> <div class="footer-brand-logo"> <a href="https://www.explinks.com/" target="_blank"> <figure class="footer-logo-wrapper"> <img decoding="async" src="https://cdn.explinks.com/wp-content/uploads/2023/12/image-e1703756327221.png" alt="幂简集成ICON" class="footer-logo-img"/> </figure> </a> </div> </div> <div class="footer-bottom-left"> <div class="footer-copyright"> <p>Copyright © 2024 All Rights Reserved <a href="https://www.explinks.com/company/about" target="_blank">北京蜜堂有信科技有限公司</a></p> </div> <div class="footer-address"> <p>公司地址: 北京市朝阳区光华路和乔大厦C座1508</p> </div> </div> <div class="footer-bottom-right"> <div class="footer-license-info"> <div class="footer-license-item"> <p>增值电信业务经营许可证:京B2-20191889</p> </div> <div class="footer-license-icon"> <img decoding="async" src="https://cdn.explinks.com/wp-content/uploads/2023/12/police.png" alt="icon" class="footer-police-icon"/> </div> <div class="footer-license-item"> <p><a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">京ICP备18034931号-7</a></p> </div> </div> <div class="footer-feedback"> <p>意见反馈:010-53324933,mtyy@miitang.com</p> </div> </div> </div> </div> </div> <div class="sidebar-components-container"> <div class="sidebar"> <button class="sidebar-button" title="反馈问题" id="feedbackButton"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="10"/> <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/> <line x1="12" y1="17" x2="12" y2="17"/> </svg> </button> <button class="sidebar-button up-button" title="返回顶部"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M12 19V5"/> <path d="M5 12l7-7 7 7"/> </svg> </button> </div> <div class="toast" id="comingSoonToast"> <div class="toast-content"> <span>敬请期待...</span> <button class="toast-close">×</button> </div> </div> <div class="modal" id="feedbackModal"> <div class="modal-content"> <div class="modal-header"> <h3 class="modal-title">反馈问题</h3> <button class="modal-close">×</button> </div> <form id="feedbackForm"> <div class="form-group"> <label class="form-label" for="description">描述 <span class="required">*</span></label> <textarea class="form-control" id="description" maxlength="200" required placeholder="请在此描述您要反馈的问题(200字以内)"></textarea> </div> <div class="form-group"> <label class="form-label">截图</label> <div class="image-upload" id="imageUpload"> <input type="file" id="imageInput" multiple accept="image/*" style="display: none;"> <p>点击或拖拽图片到此处上传(最多5张)</p> </div> <div class="image-preview" id="imagePreview"></div> </div> <div class="form-group"> <label class="form-label" for="contact">联系方式</label> <input type="text" class="form-control" id="contact" placeholder="QQ/邮箱/任选其一"> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" id="cancelButton">取消</button> <button type="submit" class="btn btn-primary">确定</button> </div> </form> </div> </div> <script> document.addEventListener('DOMContentLoaded', () => { const upButton = document.querySelector('.up-button'); const toast = document.getElementById('comingSoonToast'); const toastClose = document.querySelector('.toast-close'); const feedbackButton = document.getElementById('feedbackButton'); const feedbackModal = document.getElementById('feedbackModal'); const modalClose = feedbackModal.querySelector('.modal-close'); const cancelButton = document.getElementById('cancelButton'); const feedbackForm = document.getElementById('feedbackForm'); const imageUpload = document.getElementById('imageUpload'); const imageInput = document.getElementById('imageInput'); const imagePreview = document.getElementById('imagePreview'); let toastTimeout; // 返回顶部按钮逻辑 window.addEventListener('scroll', () => { if (window.scrollY > 300) { upButton.classList.add('show'); } else { upButton.classList.remove('show'); } }); upButton.addEventListener('click', () => { window.scrollTo({ top: 0, behavior: 'smooth' }); }); // 显示提示框函数 function showToast() { clearTimeout(toastTimeout); toast.classList.add('show'); toastTimeout = setTimeout(() => { toast.classList.remove('show'); }, 3000); } // 关闭提示框 toastClose.addEventListener('click', () => { toast.classList.remove('show'); clearTimeout(toastTimeout); }); // // 为三个按钮添加点击事件 // const comingSoonButtons = [ // document.querySelector('button[title="AI助理"]'), // document.querySelector('button[title="最近浏览"]'), // document.querySelector('button[title="对比列表"]') // ]; // // comingSoonButtons.forEach(button => { // button.addEventListener('click', showToast); // }); // 反馈模态框相关逻辑 function openModal() { feedbackModal.classList.add('show'); document.body.style.overflow = 'hidden'; } function closeModal() { feedbackModal.classList.remove('show'); document.body.style.overflow = ''; feedbackForm.reset(); imagePreview.innerHTML = ''; } feedbackButton.addEventListener('click', openModal); modalClose.addEventListener('click', closeModal); cancelButton.addEventListener('click', closeModal); // 点击模态框外部关闭 feedbackModal.addEventListener('click', (e) => { if (e.target === feedbackModal) { closeModal(); } }); // 图片上传相关逻辑 imageUpload.addEventListener('click', () => { imageInput.click(); }); imageInput.addEventListener('change', handleImageUpload); function handleImageUpload() { const files = Array.from(imageInput.files); const existingImages = imagePreview.querySelectorAll('.image-container'); const totalImages = existingImages.length + files.length; if (totalImages > 5) { alert('最多只能上传5张图片'); return; } files.forEach(file => { if (!file.type.startsWith('image/')) { return; } const reader = new FileReader(); reader.onload = (e) => { const container = document.createElement('div'); container.className = 'image-container'; const img = document.createElement('img'); img.src = e.target.result; container.appendChild(img); const deleteBtn = document.createElement('button'); deleteBtn.className = 'image-delete'; deleteBtn.innerHTML = '×'; deleteBtn.title = '删除图片'; deleteBtn.onclick = function () { if (confirm('确定要删除这张图片吗?')) { container.remove(); } }; container.appendChild(deleteBtn); imagePreview.appendChild(container); }; reader.readAsDataURL(file); }); } // 拖拽上传 imageUpload.addEventListener('dragover', (e) => { e.preventDefault(); imageUpload.style.borderColor = '#4a90e2'; }); imageUpload.addEventListener('dragleave', () => { imageUpload.style.borderColor = '#ddd'; }); imageUpload.addEventListener('drop', (e) => { e.preventDefault(); imageUpload.style.borderColor = '#ddd'; const files = Array.from(e.dataTransfer.files); if (files.length > 5) { alert('最多只能上传5张图片'); return; } imageInput.files = e.dataTransfer.files; handleImageUpload(); }); // 表单提交 feedbackForm.addEventListener('submit', async (e) => { e.preventDefault(); const description = document.getElementById('description').value.trim(); const contact = document.getElementById('contact').value.trim(); // if (!description || !contact) { if (!description) { alert('请填写反馈内容!'); return; } // 收集图片数据 const images = []; const imageElements = imagePreview.querySelectorAll('img'); imageElements.forEach(img => { images.push(img.src); }); // 准备要提交的数据 const formData = { description, contact, images }; try { // 从 cookie 中获取用户 Token const tokenMatch = document.cookie.match(/(?:^|; )Admin-Token=([^;]+)/); const token = tokenMatch ? decodeURIComponent(tokenMatch[1]) : ''; const headers = { 'Content-Type': 'application/json' }; if (token) { headers['Authorization'] = 'Bearer ' + token; } const response = await fetch('https://api.explinks.com/feedback/submit', { method: 'POST', headers: headers, body: JSON.stringify(formData) }); if (response.ok) { alert('反馈提交成功!'); closeModal(); } else { throw new Error('提交失败'); } } catch (error) { alert('提交失败,请稍后重试!'); console.error('提交表单时出错:', error); } }); }); </script> </div> <script src="https://static.explinks.com/prompt/static/js/statistics/index.js?v=1774518585999"></script> <script src="https://static.explinks.com/hub/static/script/baidu-analytics.js?v=1774518585999"></script> <script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script> <script>LA.init({id: "3NS00J5GfuD7Tvg6", ck: "3NS00J5GfuD7Tvg6"})</script> <script> (function(){ var h = window.location.hostname; var d = ''; try { var p = h.split('.'); if (p.length >= 2) { d = '.' + p.slice(-2).join('.'); } } catch (e) {} var isIp = /^\d{1,3}(?:\.\d{1,3}){3}$/.test(h); var domainAttr = (!isIp && h !== 'localhost' && d) ? ('; domain=' + d) : ''; function getCookie(name){ var cs = document.cookie ? document.cookie.split('; ') : []; for (var i=0;i<cs.length;i++){ var parts = cs[i].split('='); var key = parts.shift(); var value = parts.join('='); if (key === name){ return decodeURIComponent(value || ''); } } return null; } function delCookie(name){ document.cookie = name + '=; path=/; Max-Age=0; SameSite=Lax' + domainAttr; } window.clearPromotionCookie = function(){ delCookie('promotion-code'); delCookie('promotion-code-set'); }; var setTs = getCookie('promotion-code-set'); var setNum = Number(setTs); if (getCookie('promotion-code') && setTs) { var ttl = 7200; document.cookie = 'promotion-code-set=' + encodeURIComponent(setTs) + '; path=/; Max-Age=' + ttl + '; SameSite=Lax' + domainAttr; } if (setTs && String(setNum) === setTs) { fetch('https://prompts-api.explinks.com/api/user/should-clear-promotion-code', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ setTimeMillis: setTs, referer: document.referrer || '' }) }) .then(function(r){ return r ? r.json() : null; }) .then(function(res){ if (res && (res.success === true || res.code === 200) && (res.data === true || res.data === 'true')) { window.clearPromotionCookie(); } }) .catch(function(){}); } var u = new URL(window.location.href); var v = (u.searchParams.get('ref') || u.searchParams.get('REF') || '').split('?')[0].trim(); if (v) { (function(){ var api = 'https://prompts-api.explinks.com/api/user/validate-promotion-code'; var payload = { promotionCode: v, referer: document.referrer || '' }; fetch(api, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }) .then(function(r){ return r ? r.json() : null; }) .then(function(res){ if (res && (res.success === true || res.code === 200) && (res.data === true || res.data === 'true')) { var ttl = 7200; var setTime = Date.now(); document.cookie = 'promotion-code=' + encodeURIComponent(v) + '; path=/; Max-Age=' + ttl + '; SameSite=Lax' + domainAttr; document.cookie = 'promotion-code-set=' + encodeURIComponent(String(setTime)) + '; path=/; Max-Age=' + ttl + '; SameSite=Lax' + domainAttr; } }) .catch(function(){}); })(); } })(); </script> <script src="https://static.explinks.com/prompt/static/js/statistics/view-count.js?v=1774518585999"></script> <script> // 页面加载完成后自动记录浏览量 ViewCountStatistics.autoRecordViewCount('seo_image_checklist'); </script> <script src="https://static.explinks.com/prompt/static/js/prompt-detail-v5/countdown.js?v=1774518585999"></script> <!-- Highlight.js JavaScript --> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script> <script> // 初始化代码高亮 document.addEventListener('DOMContentLoaded', function () { hljs.highlightAll(); }); </script> </body> </html>