自动化 OG 图像:从手动设计到 API 驱动生成

自动化 og 图像:从手动设计到 api 驱动生成

从手动创建 opengraph 图像到实现自动化 api 驱动系统的旅程代表了不断增长的 web 应用程序的关键演变。今天,我将分享我如何在 gleam.so 转变这一流程,从单独的 figma 设计转向处理数千张图像的自动化系统。

手动阶段:了解基线

最初,像许多开发人员一样,我手动创建了 og 图像:

// early implementationconst getogimage = (postid: string) => {  return `/images/og/${postid}.png`;  // manually created in figma};

登录后复制

此过程通常涉及:

打开每张新图像的figma调整文本和元素导出为正确的尺寸上传并链接图像

每张图像的平均时间:15-20 分钟。

第一步:模板系统

第一个自动化步骤涉及创建可重用模板:

interface ogtemplate {  layout: string;  styles: {    title: textstyle;    description?: textstyle;    background: backgroundstyle;  };  dimensions: {    width: number;    height: number;  };}const generatefromtemplate = async (  template: ogtemplate,  content: content): promise => {  const svg = rendertemplate(template, content);  return converttoimage(svg);};

登录后复制

这将每个图像的创建时间减少到 5 分钟,但仍然需要手动干预。

构建api层

下一个演变引入了适当的 api:

// api/og/route.tsimport { imageresponse } from '@vercel/og';import { gettemplate } from '@/lib/templates';export const config = {  runtime: 'edge',};export async function get(request: request) {  try {    const { searchparams } = new url(request.url);    const template = gettemplate(searchparams.get('template') || 'default');    const content = {      title: searchparams.get('title'),      description: searchparams.get('description'),    };    const imageresponse = new imageresponse(      rendertemplate(template, content),      {        width: 1200,        height: 630,      }    );    return imageresponse;  } catch (error) {    console.error('og generation failed:', error);    return new response('failed to generate image', { status: 500 });  }}

登录后复制

实施缓存层

性能优化需要多个缓存层:

class ogcache {  private readonly memory = new map();  private readonly redis: redis;  private readonly cdn: cdnstorage;  async getimage(key: string): promise {    // memory cache    if (this.memory.has(key)) {      return this.memory.get(key);    }    // redis cache    const redisresult = await this.redis.get(key);    if (redisresult) {      this.memory.set(key, redisresult);      return redisresult;    }    // cdn cache    const cdnresult = await this.cdn.get(key);    if (cdnresult) {      await this.warmcache(key, cdnresult);      return cdnresult;    }    return null;  }}

登录后复制

资源优化

处理增加的负载需要仔细的资源管理:

class resourcemanager {  private readonly queue: queue;  private readonly maxconcurrent = 50;  private activejobs = 0;  async processrequest(params: generationparams): promise {    if (this.activejobs >= this.maxconcurrent) {      return this.queue.add(params);    }    this.activejobs++;    try {      return await this.generateimage(params);    } finally {      this.activejobs--;    }  }}

登录后复制

集成示例

以下是这一切在 next.js 应用程序中的组合方式:

// components/OGImage.tsxexport function OGImage({ title, description, template = 'default' }) {  const ogUrl = useMemo(() => {    const params = new URLSearchParams({      title,      description,      template,    });    return `/api/og?${params.toString()}`;  }, [title, description, template]);  return (                            );}

登录后复制

绩效结果

自动化系统取得了重大改进:

生成时间:缓存命中率:95%错误率:cpu 使用率:之前实施的 15%每张图像的成本:0.0001 美元(体力劳动成本约为 5 美元)

主要经验教训

通过这次自动化之旅,出现了一些重要的见解:

图像生成策略

预热缓存以获取可预测的内容实施故障后备首先优化模板渲染

资源管理

实现请求排队监控内存使用情况积极缓存

错误处理

提供后备图像全面记录失败监控生成指标

前进的道路

og图像自动化的未来在于:

人工智能增强的模板选择动态内容优化预测性缓存变暖实时性能调整

简化实施

虽然构建自定义解决方案可以提供宝贵的学习经验,但它需要大量的开发和维护工作。这就是我构建 gleam.so 的原因,它将整个自动化堆栈作为服务提供。

现在您可以:

视觉设计模板免费预览所有选项通过 api 生成图像(针对终身用户的公开 beta 测试)专注于您的核心产品

终生访问 75% 折扣即将结束 ✨

分享您的经验

您是否已自动化生成 og 图像?您面临哪些挑战?在评论中分享您的经验!

让 opengraph 发挥作用系列的一部分。关注以获取更多 web 开发见解!

以上就是自动化 OG 图像:从手动设计到 API 驱动生成的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2646235.html

(0)
上一篇 2025年3月7日 07:43:54
下一篇 2025年2月18日 04:13:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 准备前端项目以进行实时部署

    准备前端项目以进行实时部署 部署前端项目不仅仅是将文件上传到服务器。需要仔细规划、优化并充分了解托管环境,才能确保您的网站或应用程序快速、轻量级且可靠。在本文中,我们将介绍准备前端项目进行实时部署的关键步骤。我们将重点关注优化代码、管理资产…

    2025年3月7日
    200
  • Hono OpenAPI 简介:简化 HonoJS 的 API 文档

    第一件事:为什么要在已经存在一个 openapi 库的情况下为 hono 创建另一个 openapi 库? 这是很多人问过的问题。是的,有由 yusuke 创建的 zod openapi。虽然它是一个很棒的软件包,但它有一些重大的局限性,导…

    2025年3月7日
    200
  • 4年前端开发必备技术

    前端开发市场发展迅速,带来了新的工具和实践,改变了创建 Web 应用程序的体验。对于开发人员来说,无论是初学者、全职人员,还是想要了解自己要寻找什么的招聘人员,了解当今不可或缺的技术至关重要。让我们探讨一下 2024 年市场真正发生变化的因…

    2025年3月7日
    200
  • 在生产中避免控制台日志:稳健日志记录的最佳实践

    简介 日志记录对于调试和监控应用程序至关重要,但不正确的日志记录可能会导致性能问题、安全漏洞和混乱的输出。在本文中,我们将探讨为什么在生产中应避免使用 console.log,并使用示例提供最佳实践。 为什么在生产中应该避免使用 conso…

    2025年3月7日
    200
  • 使用 Vitest 进行单元测试:下一代测试框架

    为什么选择维泰斯特? vitest 的设计考虑了现代开发。这就是它脱颖而出的原因: 速度 vitest 以 vite 作为基础,利用其闪电般快速的热模块替换 (hmr) 和 esbuild 进行捆绑和转译。结果是: 智能即时监视模式:仅针对…

    2025年3月7日
    200
  • 如何在nodejs环境中使用代理

    配置代理有一个既定的标准。它通过以下环境变量运行: https_proxy:https 流量的代理http_proxy:http 流量的代理no_proxy:不应通过代理运行的 url。 nodejs 的本机获取客户端不提供任何开箱即用的功…

    2025年3月7日
    200
  • 健壮代码的基本 JavaScript 测试技术

    javascript 测试是软件开发的一个重要方面,可确保代码的可靠性和健壮性。作为一名开发人员,我发现实施全面的测试策略不仅可以尽早发现错误,还可以提高应用程序的整体质量。让我们探索五种基本的 javascript 测试技术,这些技术在我…

    2025年3月7日
    200
  • AI 星座:Nextjs 和 Gemini 的体验

    大家好! 我担任后端开发人员已有几年了,我一直在寻找新技术。最近,我对人工智能和占星学的结合产生了兴趣,并决定使用 Gemini API 创建一个星座预测生成器。 项目: 在这个项目中,我使用 Next.js 作为前端,这是学习新框架的绝佳…

    2025年3月7日
    200
  • Webpack新特性详解及性能优化实践

    1. 长期缓存 webpack 5 通过确定性的 chunk id、模块 id 和导出 id 实现长期缓存,这意味着相同的输入将始终产生相同的输出。这样,当您的用户再次访问更新后的网站时,浏览器可以重用旧的缓存,而不用重新下载所有资源。 /…

    2025年3月7日
    200
  • 人工智能驱动的代码生成:彻底改变开发

    人工智能 (AI) 正在改变开发人员编写、调试和维护代码的方式。人工智能工具现在为开发人员提供智能代码建议、自动化测试和无缝集成,使软件开发比以往更快、更高效。在这篇博文中,我们将探讨人工智能代码、其功能、优势、挑战以及可用的最佳工具。 什…

    2025年3月7日
    200

发表回复

登录后才能评论