I wonder if a system like this would be good for your general problem:
Generate a random seed sentence of so many words. From the secret seed + site domain name generate a password
Store piece of paper with:
Algorithm (could be public in github too) Seed word Site names