This was a mistake. If you find your self making multiple columns for the same type of data, what you really want is another table.
A more proper change would have been to create a second link_keywords table with a reference to the link ID. Like so:
links: id|domain|url|title
link_keyword: link_id|keyword|points
With that setup, your query would then be simple, like:
select *
from links
inner join link_keyword on link_keyword.link_id=links.id
where
link_keyword.keyword = ?
order by
link_keyword.points desc
If you want to have a global list of keywords and point values that is shared across all your links, then you'd have three tables, such as:
links: id|domain|url|title
link_keyword: link_id|keyword_id
keywords: id|keyword|points
The adjust the query with another join as appropriate.