Class: Seo::KeywordsPeopleUseClient

Inherits:
Object
  • Object
show all
Defined in:
app/services/seo/keywords_people_use_client.rb

Overview

Client for KeywordsPeopleUse REST API
Provides keyword research including People Also Ask, autocomplete, and semantic data.

Features available:

  • Google People Also Ask questions
  • Google Autocomplete suggestions
  • Reddit and Quora questions
  • Semantic keyword data

Examples:

Basic usage

client = Seo::KeywordsPeopleUseClient.new
result = client.keyword_generator('floor heating')

See Also:

Defined Under Namespace

Classes: AuthenticationError, Error, Response

Constant Summary collapse

BASE_URL =
'https://keywordspeopleuse.com'

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil) ⇒ KeywordsPeopleUseClient

Returns a new instance of KeywordsPeopleUseClient.



30
31
32
33
34
35
# File 'app/services/seo/keywords_people_use_client.rb', line 30

def initialize(api_key: nil)
  @api_key = api_key || Heatwave::Configuration.fetch(:keywordspeopleuse, :api_key)
  raise AuthenticationError, 'KeywordsPeopleUse API key not configured' if @api_key.blank?

  @connection = build_connection
end

Instance Method Details

#autocomplete(keyword, country: 'us') ⇒ Response

Get Google Autocomplete suggestions

Parameters:

  • keyword (String)

    The seed keyword

  • country (String) (defaults to: 'us')

    Country code (default: us)

Returns:



55
56
57
58
59
60
# File 'app/services/seo/keywords_people_use_client.rb', line 55

def autocomplete(keyword, country: 'us')
  request(:get, '/api/suggestions', {
    keyword: keyword,
    country: country
  })
end

#keyword_generator(keyword, country: 'us', language: 'en') ⇒ Response

Generate keyword ideas from a seed keyword
Returns People Also Ask questions and related searches

Parameters:

  • keyword (String)

    The seed keyword to research

  • country (String) (defaults to: 'us')

    Country code (default: us)

  • language (String) (defaults to: 'en')

    Language code (default: en)

Returns:



43
44
45
46
47
48
49
# File 'app/services/seo/keywords_people_use_client.rb', line 43

def keyword_generator(keyword, country: 'us', language: 'en')
  request(:get, '/api/clustering', {
    keyword: keyword,
    country: country,
    language: language
  })
end

#people_also_ask(keyword, country: 'us') ⇒ Response

Get People Also Ask questions from Google

Parameters:

  • keyword (String)

    The seed keyword

  • country (String) (defaults to: 'us')

    Country code (default: us)

Returns:



66
67
68
69
70
71
# File 'app/services/seo/keywords_people_use_client.rb', line 66

def people_also_ask(keyword, country: 'us')
  request(:get, '/api/alsoask', {
    keyword: keyword,
    country: country
  })
end

#quora_questions(keyword) ⇒ Response

Search Quora for topic questions

Parameters:

  • keyword (String)

    The topic to search

Returns:



94
95
96
97
98
# File 'app/services/seo/keywords_people_use_client.rb', line 94

def quora_questions(keyword)
  request(:get, '/api/quora', {
    keyword: keyword
  })
end

#reddit_questions(keyword) ⇒ Response

Search Reddit and Quora for topic questions and discussions

Parameters:

  • keyword (String)

    The topic to search

Returns:



85
86
87
88
89
# File 'app/services/seo/keywords_people_use_client.rb', line 85

def reddit_questions(keyword)
  request(:get, '/api/reddit', {
    keyword: keyword
  })
end

#search_all(keyword, country: 'us') ⇒ Response

Combined search across all sources

Parameters:

  • keyword (String)

    The seed keyword

  • country (String) (defaults to: 'us')

    Country code (default: us)

Returns:



104
105
106
107
108
109
# File 'app/services/seo/keywords_people_use_client.rb', line 104

def search_all(keyword, country: 'us')
  request(:get, '/api/search', {
    keyword: keyword,
    country: country
  })
end

#semantic_keywords(keyword) ⇒ Response

Get semantic/related keyword variations

Parameters:

  • keyword (String)

    The seed keyword

Returns:



76
77
78
79
80
# File 'app/services/seo/keywords_people_use_client.rb', line 76

def semantic_keywords(keyword)
  request(:get, '/api/semantic', {
    keyword: keyword
  })
end