This is an old question, but it recently got pushed to the front page, and I feel there’s a better rule-of-thumb than the accepted answer suggests.
You can say, to give a real example, “Who Is Mayor If the Mayor's Resignation Is Not Accepted?” or “Who is President?” or “Who is Mayor of Boston?” but not, “*Who is American President?” or “*Where is President?”
As best I can tell, if you can say “They are X,” or “She is X,” you can always(?) substitute who to get the relative clause “who is X,” or the question “Who is X?”
Thus, because you can say, as of this afternoon, “Joe Biden is President of the United States,” you can also say, “Someone who will be President of the United States,” or “Who is President of the United States?” This doesn’t work for other question words, such as “Where is ...?” or “When is ...?” And, since you cannot say, “*Joe Biden is American President,” or “*I am good writer,” you also cannot say, “*Who is American President?” or “*Who is good writer?” The last four examples of what not to do all require articles.
This seems to be true of adjectival phrases in general. But not always: people do sometimes say, even in formal written English, “regardless of who is British Prime Minister,” or “Who is British Prime Minister?” I have no idea why this is allowed and yet “*who is Greek President” or “*who was first Prime Minister” both require a definite article. But this is a strange exception to the rule, and “the British Prime Minister” or “Prime Minister of Britain” or “the Prime Minister of Britain” are all more common.
Another complication is that you can say things like, “Who is New York Mayor Bill de Blasio?” or “Who is American President Joe Biden?” or “Who is local business owner Jane Brown?” where the phrase modifies someone’s name, just as you could say, “That is New York Mayor Bill de Blasio.”