You need to do two step:
Step one: auto generate the title and hidden form. use hook_field_widget_form_alter() with code
function MY_MODULE_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) {
$field_definition = $context['items']->getFieldDefinition();
$bundle = $form_state->getFormObject()->getEntity()->bundle();
// You can check with other bundle
if ($field_definition->getName() == 'title' && $bundle == 'page' && $element['value']['#default_value'] == '') {
$element['#required'] = FALSE;
//hidden title
$element['#type'] = 'hidden';
$element['value']['#required'] = FALSE;
// Set default value
$element['value']['#default_value'] = 'Default Title';
}
}
with step one you can cross submit form.
Step two: Override new title with default value. Use hook_node_insert()
function MY_MODULE_node_insert(Drupal\node\NodeInterface $node) {
if ($node->bundle() == 'page') {
$new_title = 'New title ' . $node->id();
$node->setTitle($new_title);
$node->setNewRevision(FALSE);
$node->save();
}
}