How to do some action weekly?

Did you try this plugin?
http://wordpress.org/extend/plugins/scheduled-post-delete/

////

Sorry for my mistake, I understood you wrong. Try by pasting this in your functions.php:

function auto_cat_remove() {

    global $post;
    wp_schedule_single_event( time() + 604800, 'remove_news_cat_event', array( $post->ID ) );

}

function remove_news_cat_func( $post_id ) {
    global $wpdb;
    $category_id = get_cat_ID( 'news' );
    $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", $post_id, $category_id ) );
}

add_action( 'publish_post', 'auto_cat_remove' );
add_action( 'remove_news_cat_event', 'remove_news_cat_func' );

What this will do is basically schedule event seven days after the post creation. On 7th day, remove_news_cat_func function will run that will remove “news” category from the list of categories assigned to that post.

If you want to test it, you can change 604800 in wp_schedule_single_event to something like 30 and if you do that, 30 seconds after post creation category should be gone.

Note that this function relies on WP-Cron so to fire it, someone actually has to visit the site (this might cause delay with short span of 30 seconds but with days you are fine).