You can try the following approach using the the_title
filter in the edit.php
screen:
/**
* Modify post titles in the edit.php screen.
* If the post title is empty, then show max 10 words from the post content instead.
*/
add_action( 'load-edit.php', function()
{
add_filter( 'the_title', function( $title )
{
$post = get_post();
if( is_a( $post, '\WP_Post' ) && ! $post->post_title && $post->post_content )
$title = wp_trim_words( strip_shortcodes( strip_tags( $post->post_content ) ), 10 );
return $title;
} );
} );
where we display max 10 words from the post content if the title is empty.