function shortcode_only_wpse_96114($content) {
$regex = get_shortcode_regex();
preg_match_all("https://wordpress.stackexchange.com/".$regex."https://wordpress.stackexchange.com/",$content,$matches);
if (!empty($matches[0])) {
$content = do_shortcode(implode(' ',$matches[0]));
}
return $content;
}
add_filter('the_content','shortcode_only_wpse_96114',1);
That should check for any registered shortcodes and if present completely replace the post content with the output of the shortcode(s), removing any other content. If no shortcodes are found the post content gets returned as normal.
Barely tested. Possibly buggy. Caveat emptor. No refunds.
Reference
http://codex.wordpress.org/Function_Reference/get_shortcode_regex