def generate(cache_fn):
    """
    Go thru `cache_fn` and filter keywords. Store them in `keyword_list.json`.

    Args:
        cache_fn (str): Path to the file with cache.

    Returns:
        list: List of :class:`KeywordInfo` objects.
    """
    if not os.path.exists(cache_fn):
        print >> sys.stderr, "Can't access `%s`!" % cache_fn
        sys.exit(1)

    with SqliteDict(cache_fn) as db:
        for item in _pick_keywords(db):
            yield item