j-jalving/statamic-autograph
A Statamic addon that automatically generates social share and Open Graph images for your entries, so links to your site look sharp on social platforms without manual design work. Templates are customizable to match your branding.
Before anything else: resolve the scope ambiguity. The two sources you have disagree. The repository description calls this an e-mail signature HTML generator; description.md describes it as an Open Graph / Twitter Card metadata addon. Those are unrelated features with unrelated integration surfaces. The only other artifact — the 1.5.1 changelog line about a dark-mode addon icon — is consistent with "this is a Statamic addon with an admin UI," but tells you nothing about either claim. Read vendor/j-jalving/statamic-autograph/README.md and src/ before you install anything into a real project. Everything below is written to cover both plausible shapes and flags where they diverge.
Install and discover.
composer require j-jalving/statamic-autograph:^1.5
php artisan vendor:publish --provider="Jjalving\Autograph\ServiceProvider" # confirm the FQCN from src/
php artisan config:clear && php artisan view:clear
Statamic addons are Laravel packages with auto-discovered service providers; the provider will typically register a tag, a fieldtype, a config merge, and possibly a publishable view namespace. Confirm all four by reading the provider's boot()/register() rather than assuming.
Where to look first, in order:
src/ServiceProvider.php — what Tag, Fieldtype, Modifier, or middleware it registers. This single file tells you what the package actually does.config/autograph.php (once published) — the override/fallback surface.resources/views/ — whether output is a Blade/Antlers partial you can override.resources/dist/ or public/ — whether assets are precompiled or expect your build pipeline.First use case, by shape:
<head> and let it derive og:* and twitter:* tags from the current entry. First task: render one entry through the Facebook Sharing Debugger and the X Card Validator, not just "view source."Treat the package as a renderer, not a form designer. The durable workflow is: editors fill a structured fieldset (name, role, phone, socials, logo), and the addon renders escaped, inline-styled, table-based HTML.
{{ autograph:signature
name="{ author:name }"
role="{ author:role }"
email="{ author:email }"
phone="{ author:phone }"
}}
Practical integration notes for this shape:
<table> markup.cid: references.<partial:autograph-signature> so you can override the markup without forking the package — but only if the package publishes views. If it doesn't, you are forking.description.md)This is the conventional Statamic pattern and the one more likely to match "template-friendly integration with existing Antlers views."
{{# resources/views/layout.antlers.html #}}
<head>
<title>{{ title }} — {{ site:name }}</title>
{{ partial:autograph/meta }}
</head>
Expected workflow, to be validated:
title, excerpt/summary, featured image) and emits tags with a fallback chain: entry field → collection config override → global config default.og:image.og:url.^1.5. There is one release artifact and zero dependents. Treat minor bumps as reviewable changes, not automatic updates.config/autograph.php, not in templates. Any conditional you write in Antlers is a conditional you cannot test, and the package's own config already exists for this.The scope contradiction is the #1 risk. Do not schedule work, write a spec, or promise a stakeholder anything until you have opened src/ServiceProvider.php. An "email signature generator" and an "OG metadata addon" have zero overlap in integration effort, testing strategy, and browser-client exposure. If the README is also ambiguous, the source is the tiebreaker.
Email-client rendering (Pattern A).
style= attributes. External stylesheets and <style> blocks are unreliable in Outlook 2016–2019 and stripped in Gmail's clip.mso-line-height-rule. Any modern layout (flex, grid) will collapse.width/height attributes on images and keep display:block — Outlook adds phantom gaps otherwise.<style> in some contexts and ignores class-based dark mode. If the package emits prefers-color-scheme CSS, test in Outlook dark mode and Gmail app dark mode; both invert colors in ways authors do not expect.Social metadata (Pattern B).
view:clear. A stale og:image in a cached page is invisible in dev and very visible in Slack.og:image must be absolute, at least 1200×630, and served with a Content-Type that the crawler accepts. A perfectly configured addon with a relative image URL fails every validator.og:* when twitter:* is absent but not when twitter:card is present and malformed. If the package emits twitter:card=summary_large_image unconditionally, entries without an image render a broken card. Check whether the card type is conditional on image presence." in a content="" attribute truncates the tag silently — no error, just a wrong preview.Config and caching.
config/autograph.php, run php artisan config:clear. In a cached-config environment (config:cache in deploy), a changed config file has zero effect until the cache is rebuilt. This is the most common "the package is broken" false alarm.1.5.1 icon change is a published-asset change: without a republish or a cache-bust, the admin icon stays light-mode and you will file a phantom bug.Admin icon / dark mode (from 1.5.1).
Content-Security-Policy will silently block it in production while it renders fine locally. Verify under production headers.dark class strategy rather than prefers-color-scheme, the icon depends on your host app putting the class on <html>. If your CP toggle works but the icon doesn't, that's the cause.Maintenance and extension points.
{{ ... }} in Antlers does not strip tags by default, but confirm). If the metadata addon returns attribute values, they must be escaped. Getting this backwards is either a broken signature or an XSS vector — check which one you have before going live.How can I help you explore Laravel packages today?