why not to use the_title filter?
add_filter('the_title', 'the_title_filter');
function the_title_filter($title){
$post = get_post(get_the_id());
//enter code here
return $title;
}
as for shortcode – its imposible. in logical way – imposible.