Guides on OGP tend to list a dozen or more meta tags. Try the actual card expansion on each service, though, and far fewer of them are ever read. I wanted a minimal set, so I checked the expansions one service at a time.
What was actually used
I tested four services: X, Discord, Slack, and LINE. Every one of them built its card from just three values — og:title, og:description, and og:image. The twitter:card tag mattered only for X’s large-image variant (summary_large_image); without it you get the small card.
What I dropped
og:site_name and og:locale changed nothing visible, so they became optional. The article:* properties are likewise ignored by card renderers; that is structured-data (JSON-LD) territory, and keeping the two concerns separate makes the template easier to reason about.
Takeaway
The essentials are five: og:title, og:description, og:image, og:url, and twitter:card. Everything else is “harmless but invisible.” My template now carries only those five, and the rest can be added the day something actually consumes them.