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 =

URL for base.

'https://keywordspeopleuse.com'

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil) ⇒ KeywordsPeopleUseClient

Returns a new instance of KeywordsPeopleUseClient.



33
34
35
36
37
38
# File 'app/services/seo/keywords_people_use_client.rb', line 33

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:



58
59
60
61
62
63
# File 'app/services/seo/keywords_people_use_client.rb', line 58

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:



46
47
48
49
50
51
52
# File 'app/services/seo/keywords_people_use_client.rb', line 46

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:



69
70
71
72
73
74
# File 'app/services/seo/keywords_people_use_client.rb', line 69

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:



97
98
99
100
101
# File 'app/services/seo/keywords_people_use_client.rb', line 97

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:



88
89
90
91
92
# File 'app/services/seo/keywords_people_use_client.rb', line 88

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:



107
108
109
110
111
112
# File 'app/services/seo/keywords_people_use_client.rb', line 107

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:



79
80
81
82
83
# File 'app/services/seo/keywords_people_use_client.rb', line 79

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