MyOG.social images
Paid MyOG.social service: og:image for published pages without their own image. Needs a MyOG plan or trial and a registered hostname.
@myog.social/myogOr open Registry in your EmDash admin and search for this name.
Overview
Adds an og:image, twitter:image and twitter:card to published EmDash content pages that have no image of their own. MyOG.social generates each image from the page's public URL, using the page's content and branding.
This is a paid service. The plugin is MIT licensed, but images are rendered by MyOG.social, which needs a MyOG plan or card trial with the site's exact hostname registered. Image generation and refreshes use the plan's credits. With no credits or an unregistered hostname, MyOG returns an error instead of an image, so link previews show a broken image instead of your site default.
What it changes:
- A page's own image is kept: the SEO panel image (
seo.ogImage) or the template's entry image wins, and the plugin adds nothing. - Every other published content page gets a MyOG image, which replaces the site-wide default social image from your site settings.
- Drafts, previews, pages set to
noindex/nonein EmDash's SEO panel, custom pages, 404s, and pages whose rendered path or canonical URL differs from the published URL get nothing. A hand-written robots tag, anX-Robots-Tagheader or another plugin's robots setting is not seen.
The plugin only writes meta tags. It makes no network requests; MyOG fetches the public page when a social platform or crawler requests the image.
Permissions
Plugins get only the capabilities they declare and you approve. Your EmDash admin lists these again before anything installs.
Security
Permission: content:read, used only to call content.getPublicUrl() for the page being rendered. EmDash returns a URL only for a published, routable entry, so drafts and previews are skipped even when an editor sees them at a clean URL.
No network access and no secrets. The plugin declares no allowed hosts and makes no requests. Its settings are a hostname, a template name and an optional account ID, none of which is secret.
What MyOG receives: the image URL contains the page's published public URL (built from the configured hostname and the published slug, never from the request's Host header, and without query string or fragment), the template name and the optional account ID. MyOG then fetches that public page anonymously when the image is requested.
Report security issues privately to hboon@myog.social.
Installation
Requirements:
- EmDash with a sandbox runner. On Cloudflare that is the Workers Paid plan with the
LOADERWorker Loader binding andPluginBridgeexported from the Worker entry; on Node.js it is@emdash-cms/sandbox-workerd. See EmDash's plugin sandbox guide. - Your site URL set in EmDash to its public HTTPS origin.
- A MyOG.social plan or card trial, with the site's exact hostname registered (
wwwand the apex domain are different hostnames).
Tested with EmDash 1.4.0 on Node.js with @emdash-cms/sandbox-workerd in a production build, and in astro dev with an earlier build. The registry-built bundle is unit-tested against the same source but was not itself run in an EmDash runtime. Not yet tested: the Cloudflare Worker Loader runner, installing from the registry, route caching with a cache provider, and real social crawlers.
Setup:
- Install the plugin from the registry and approve its
content:readpermission. - Open MyOG.social in the admin sidebar.
- Enter the registered hostname, for example
www.example.com, and choose a template. - Optionally enter your MyOG account ID, the
a=value from your MyOG install code. It is a public routing hint, not a secret or login. - Publish or open a published page without its own image and check its
<head>for anog:imagestarting withhttps://api.myog.social/og?.
Keep exploring
More plugins like MyOG.social images
Browse by keyword, or see everything @myog.social publishes.