Лучший способ добиться этого - использовать drupal_execute. drupal_execute будет запускать стандартную проверку и базовые операции с узлами, так что все будет вести себя так, как ожидает система. drupal_execute имеет свои причуды и немного менее интуитивен, чем просто node_save, но в Drupal 6 вы можете использовать drupal_execute следующим образом.
$form_id = 'xxxx_node_form'; // where xxxx is the node type
$form_state = array();
$form_state['values']['type'] = 'xxxx'; // same as above
$form_state['values']['title'] = 'My Node Title';
// ... repeat for all fields that you need to save
// this is required to get node form submits to work correctly
$form_state['submit_handlers'] = array('node_form_submit');
$node = new stdClass();
// I don't believe anything is required here, though
// fields did seem to be required in D5
drupal_execute($form_id, $form_state, $node);