Actually WordPress offer a good hook , You can get data from Post Published , for more you can follow this example : https://codex.wordpress.org/Plugin_API/Action_Reference/publish_post
Example of a simple update of custom field:
/* Do something with the data entered */
add_action( 'save_post', 'myplugin_save_postdata' );
/* When the post is saved, saves our custom data */
function myplugin_save_postdata( $post_id ) {
// First we need to check if the current user is authorised to do this action.
if ( 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) )
return;
}
else {
if ( ! current_user_can( 'edit_post', $post_id ) )
return;
}
$mydata="something"; // Do something with $mydata
update_post_meta( $post_id, '_my_meta_value_key', $mydata );
}