What are you measuring?
Are you counting how many times a keyword is generated for each site? All three of those tables are dimensions (assuming your date table has every date in it regardless). You need another table which is your fact, which tells you how many times a keyword was generated for the day (or even the hour - you should start as low as possible)
To put it another way - for a given site, can a keyword been generated more than once in a week? Was it generated 10 times in a week? Here's your fact table record:
Date_SurrogateKey Site_SurrogateKey Keyword_SurrogateKey GeneratedCount
1 6 7 10
In this example, 1
joins to the primary key of your Date dimension, 6
joins to the primary key of your Site dimension and 7
joins to the primary key of your Keyword dimension.