Close #6: Implement metadata generation