Is there a way to create a URL (new WP page) that can only be accessed from a specific source?

Only way to base access on url users come from is to rely on $_SERVER[‘HTTP_REFERER’], but as official php docs says:

Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.

One chance is to use a secret key and pass it as variable in the url, then in the template check it against a custom field, something like:

if ( $_GET['secretkey'] == get_post_meta(get_the_ID(), 'secretkey', true) ) {
   // show the post
} else {
   echo 'Nothing for you here.';
}

but everyone knows the key (and add it to the url) will see the post (wherever comes from), so is not really secure.