A feasible approach could have been creating tokens for different content sections in the mailer and every time the smart campaign runs, the tokens display the content on the basis of user preferences. However, the blocker is that token values can not be updated using SOAP API or Webhooks, They need to be updated manually.
Since, you are running the email once a week, someone will have to spend 2-3 hours on manually updating the content in Tokens and then run the campaign.