gkueny/html-meta-crawler-bundle
A Symfony bundle for crawling web pages and extracting HTML metadata, including titles, descriptions, Open Graph tags, and Twitter Card data. Ideal for building link previews, SEO tools, and content enrichment features.
getOpenGraph function (v0.3.0) fetches a URL and imitates the Facebook crawler to extract Open Graph metadata. This directly supports any roadmap item involving social share cards, link unfurling, content curation previews, or "paste a URL and we'll enrich it" workflows.Consider it when:
Look elsewhere when:
For executives: A small, free, open-source PHP component just gained the specific capability we'd need for link previews and social share cards — it reads a URL the way Facebook does and returns the page's Open Graph metadata. That means we can prototype and likely ship share previews without a new vendor contract or per-call fees. The trade-off is maturity: it's a v0.3.0 utility with a thin changelog. Recommendation is to adopt it behind an internal wrapper, pin the version, and treat it as an experiment-grade dependency until it proves itself — this caps downside to roughly a day of rework if we ever swap it out.
For engineering: The new getOpenGraph entry point emulates the Facebook crawler, so it's useful both for producing previews and for verifying what Facebook will actually render. Two things to own before this goes near production: (1) treat the URL as untrusted input — enforce scheme allowlisting, block private/link-local IPs, set connect/read timeouts, cap response size, and limit redirects to close the SSRF hole that any fetch-arbitrary-URL feature opens; (2) cache aggressively — previews are near-static per URL, so a short-TTL store removes almost all the load and lets you survive the package's lack of built-in caching. Isolate the dependency behind a single adapter class so an upgrade, fork, or replacement is contained. Also worth confirming the impersonated user agent is acceptable under the sites we'll target, and that we're not bypassing anything we shouldn't.
How can I help you explore Laravel packages today?