Should schema be page-specific or template-based?

Both. Implement baseline schemas per template, then add page-specific fields from content data. Template-driven schema scales better.