module GoogleSuggest

Public Class Methods

suggest(query, country, language, negative_keywords=[]) click to toggle source

Main search function

# File lib/ruby-google-suggest.rb, line 62
def self.suggest(query, country, language, negative_keywords=[])
  base_keywords = []
  final_keywords = []

  response = HTTParty.get("http://suggestqueries.google.com/complete/search?&output=toolbar&hl=#{language}&q=#{query}&gl=#{country}")
  doc = Nokogiri::XML(response.body)
  
  seed_keywords = doc.xpath("//suggestion").map { |xml| xml["data"]}
  
  seed_keywords.each do |seed_keyword|
    response = HTTParty.get("http://suggestqueries.google.com/complete/search?&output=toolbar&hl=#{language}&q=#{seed_keyword}&gl=#{country}")
    doc = Nokogiri::XML(response.body)
    base_keywords << doc.xpath("//suggestion").map { |xml| xml["data"]}
  end

  final_keywords = base_keywords.flatten.uniq.reject do |base_keyword|
    states = []
    negative_keywords.each do |negative_keyword|
      states << base_keyword.include?(negative_keyword)
    end
    states.any?(true)
  end

  final_keywords
end
suggest_deep(query, country, language, negative_keywords) click to toggle source

Deep search

# File lib/ruby-google-suggest.rb, line 22
def self.suggest_deep(query, country, language, negative_keywords)
  deep_keywords = []
  ALPHA.each do |letter|
    puts "looking at '#{letter}' variations"
    deep_keywords << suggest(query + " #{letter}", country, language, negative_keywords)
  end
  deep_keywords.flatten.uniq
end
suggest_with_action(query, country, language, negative_keywords) click to toggle source

Search using purchase / call-to-action keywords

# File lib/ruby-google-suggest.rb, line 52
def self.suggest_with_action(query, country, language, negative_keywords)
  do_keywords = []
  DO.each do |do_keyword|
    puts "looking at '#{do_keyword}' variations"
    do_keywords << suggest(query + " #{do_keyword}", country, language, negative_keywords)
  end
  do_keywords.flatten.uniq
end
suggest_with_considerations(query, country, language, negative_keywords) click to toggle source

Search using consideration keywords

# File lib/ruby-google-suggest.rb, line 42
def self.suggest_with_considerations(query, country, language, negative_keywords)
  considerations_keywords = []
  CONSIDERATIONS.each do |consideration|
    puts "looking at '#{consideration}' variations"
    considerations_keywords << suggest(query + " #{consideration}", country, language, negative_keywords)
  end
  considerations_keywords.flatten.uniq
end
suggest_with_questions(query, country, language, negative_keywords) click to toggle source

Search using question keywords

# File lib/ruby-google-suggest.rb, line 32
def self.suggest_with_questions(query, country, language, negative_keywords)
  questions_keywords = []
  QUESTIONS.each do |question|
    puts "looking at '#{question}' variations"
    questions_keywords << suggest(query + " #{question}", country, language, negative_keywords)
  end
  questions_keywords.flatten.uniq
end