How about he guesses one person a night, and gets to see what that person says during the night? That would remove the anonymity, of course, but would it make the role less OP?
OP, should have stricter win condition- ie: guesses one person nightly. If that person is mafia twice in a row, he wins, unless there's only one mafia, then he Fool Loses (5 points for surviving but not winning)