From 603856c6a51774a5e6c7243a26277b8265c52e62 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Sun, 18 Feb 2024 17:05:44 -0600 Subject: [PATCH] new draft: dynamic-opengraph-images-with-hugo --- .../index.md | 65 ++++++++++++++++++ .../new_resources.png | Bin 0 -> 29676 bytes .../og_base.png | Bin 0 -> 14153 bytes 3 files changed, 65 insertions(+) create mode 100644 content/posts/dynamic-opengraph-images-with-hugo/index.md create mode 100644 content/posts/dynamic-opengraph-images-with-hugo/new_resources.png create mode 100644 content/posts/dynamic-opengraph-images-with-hugo/og_base.png diff --git a/content/posts/dynamic-opengraph-images-with-hugo/index.md b/content/posts/dynamic-opengraph-images-with-hugo/index.md new file mode 100644 index 0000000..3dcd42c --- /dev/null +++ b/content/posts/dynamic-opengraph-images-with-hugo/index.md @@ -0,0 +1,65 @@ +--- +title: "Dynamic Opengraph Images With Hugo" +date: 2024-02-18 +# lastmod: 2024-02-18 +draft: true +description: "This is a new post about..." +featured: false +toc: true +comments: true +thumbnail: thumbnail.png +categories: Backstage +tags: + - hugo + - meta + - selfhosting +--- +I've lately seen some folks on [social.lol](https://social.lol) posting about their various strategies for automatically generating [Open Graph images](https://ogp.me/) for their [Eleventy](https://11ty.dev) sites. So this weekend I started exploring ways to do that for my [Hugo](https://gohugo.io) site. + +During my search, I came across a few different approaches using external services or additional scripts to run at build time. I eventually came across a post from Aaro titled [Generating OpenGraph images with Hugo](https://aarol.dev/posts/hugo-og-image/) which seemed like exactly what I was after, as it uses Hugo's built-in [image functions](https://gohugo.io/functions/images/filter/) to dynamically create the image. + +I wound up borrowing heavily from Aaro's approach and then adding a few additional capabilities, notably the ability to overlay a designated thumbnail image on top of the resulting OpenGraph image. I'm sure this could be further optimized by someone who knows what they're doing[^future]. + +[^future]: Like Future John, perhaps? Past John loves leaving stuff for that guy to figure out. + +In any case, here's what I did to get this working. + +### New resources +Based on Aaro's suggestions, I started by creating a 1200x600 image to use as the base. I used [GIMP](https://www.gimp.org/) for this. I'm not a graphic designer[^web] so I kept it simple while emulating the "logo" displayed at the top of the page: + +![Red background with a command prompt displaying "[runtimeterror.dev] $" in white and red font.](og_base.png) + +[^web]: Or web designer, if I'm being honest. + +That fits with the theme of the site, and leaves plenty of room for text to be added to the image. + +The site uses the Fira Mono font family, and I'd like to use that to ensure the share image is consistent with the site styling. So I also grabbed `FiraMono-Regular.ttf` from the [Fira GitHub](https://github.com/mozilla/Fira). + +I stashed both of those resources in my `assets/` folder: +![File explorer window showing a directory structure with folders such as '.github/workflows', 'archetypes', 'assets' with subfolders 'css', 'js', and files 'FiraMono-Regular.ttf', 'og_base.png' under 'RUNTIMETERROR'.](new_resources.png) + +### OpenGraph partial +Hugo uses an [internal template](https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/opengraph.html) for rendering OpenGraph properties by default. I'll need to import that as a partial so that I can override its behavior. So I drop the following in `layouts/partials/opengraph.html` as a starting point: + +```jinja-html +// torchlight! {"lineNumbers": true} + + + + + + +{{- if .IsPage }} +{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} + +{{ with .PublishDate }}{{ end }} +{{ with .Lastmod }}{{ end }} +{{- end -}} + +{{- with .Params.audio }}{{ end }} +{{- with .Params.locale }}{{ end }} +{{- with .Site.Params.title }}{{ end }} +{{- with .Params.videos }}{{- range . }} + +{{ end }}{{ end }} +``` \ No newline at end of file diff --git a/content/posts/dynamic-opengraph-images-with-hugo/new_resources.png b/content/posts/dynamic-opengraph-images-with-hugo/new_resources.png new file mode 100644 index 0000000000000000000000000000000000000000..43497e0b3a78d0078a0b2dce952f52a101ca700c GIT binary patch literal 29676 zcmdSBc{J7k8$DV+jWQ)dgvyj;O2}9;lsQ8xgh-N^G7~~6WJ*GkWJ-$AAyhIYBr?x4 zWuE7|PwIQuy6gAHy?@?T>+@ORobwuGq>X=g*&S zsIL$2`z|CYS@7n~_vYr|u`$&|jm{SlTeoh_%E}63iG87Q{o=)_r%#!G_1EnzO$>+- zh*Bo?o#HsEW2@`UT3=sJyvL; zY?x}!KOSq(#}6evexk+w^W(?cC0F+AR{ctUq0aT_(WA3x&yu>Xm0OsazRbwT&`@9{ z7^pEQ`rsHg?O@#;-j-|C{@GTq;!9_z0nc7e4vvP#Mn^}-d;;Mxt@>($7WYvuE_H4- zDp>~y2V-O7N~M>Dg@sX346d%OiR8hHcY8%sUlkO%o0}_gg!T9LU%!4mBzkCQC_FMU z>E+8y7cU;>5WCp5<=E2F($AkiPoF-`H>{wfqoZSOZGH0Ora<{azdY|(Sl+nt%Z>lU zi4zxfb?rr&O6qw3`|m$&$m`^@CQqrj@xDG2BO@;(`cqUA%#=T$Wn`#XDaETl2n^i6 ze?LKwH$t(0dNKLIkIvH4(q!RxZ8)9s@*Tze6#l(f$?xA5SFg%7+%uw&P&_UuDC0{` zPF`EUz#EySm7bk_JVG%$D@*fIkkmd#Mq_$YE34Pl0j$JVB%ckkZK%+39PCh z>FF66aoH3U6l3G#(#}(Nin|{ke{
    -^YFN5|ZE@0?s+S=QF0cv6-g`1tr}aR&wl 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 literal 0 HcmV?d00001 diff --git a/content/posts/dynamic-opengraph-images-with-hugo/og_base.png b/content/posts/dynamic-opengraph-images-with-hugo/og_base.png new file mode 100644 index 0000000000000000000000000000000000000000..d535d82222e1c1c7a9edf725eb6e273646d3dcde GIT binary patch literal 14153 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 Qel2-l&qTNMj`Pd^0qY-0!~g&Q literal 0 HcmV?d00001