I solve this using Apache, MySQL, a bit of PHP and some config rules
In my case, articles (blog posts) are most commonly shared to FB, Twitter, etc...
When a new post is created, I send (http request) it's vitals (title, description, image, url) to a PHP script - this dumps it into a MySQL db.
I have a page on my server - static_page.php that checks the url against the DB and retrieves the proper page information and presents it how FB / Twitter, etc... want it presented
Then, in apache config, I'm checking for user agents (again, for FB, twitter, etc...) and if those appear, to redirect the request to this static_page.php
It's worked well.