seo_checker 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -1
- data/VERSION +1 -1
- data/bin/seo_checker +4 -0
- data/lib/seo_checker.rb +23 -25
- data/seo_checker.gemspec +20 -20
- metadata +21 -28
data/README.md
CHANGED
@@ -29,6 +29,7 @@ It is strongly recommand to check seo in development environment. If you want to
|
|
29
29
|
Usage: seo_checker [OPTIONS] website_url
|
30
30
|
-b, --batch BATCH_SIZE get a batch size of pages
|
31
31
|
-i, --interval INTERVAL_TIME interval time between two batches
|
32
|
+
--debug
|
32
33
|
-h, --help Show this message
|
33
34
|
</code></pre>
|
34
35
|
|
@@ -36,4 +37,4 @@ For example:
|
|
36
37
|
|
37
38
|
<pre><code>seo_checker http://localhost:3000</code></pre>
|
38
39
|
|
39
|
-
<pre><code>seo_checker http://yoursite.com -b 10 -i 1</code></pre>
|
40
|
+
<pre><code>seo_checker http://yoursite.com --debug -b 10 -i 1</code></pre>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/bin/seo_checker
CHANGED
data/lib/seo_checker.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'enumerator'
|
2
|
+
require 'logger'
|
2
3
|
require 'net/http'
|
3
4
|
require 'uri'
|
4
5
|
|
@@ -19,6 +20,7 @@ class SEOChecker
|
|
19
20
|
@unreachables = []
|
20
21
|
@batch_size = options[:batch_size] ? options[:batch_size].to_i : nil
|
21
22
|
@interval_time = options[:interval_time].to_i
|
23
|
+
@logger = options[:logger] == true ? Logger.new(STDOUT) : options[:logger]
|
22
24
|
end
|
23
25
|
|
24
26
|
def check
|
@@ -34,6 +36,7 @@ class SEOChecker
|
|
34
36
|
|
35
37
|
def check_sitemap
|
36
38
|
#TODO: allow manual sitemap file
|
39
|
+
@logger.debug "checking sitemap file" if @logger
|
37
40
|
uri = URI.parse(@url)
|
38
41
|
uri.path = '/sitemap.xml'
|
39
42
|
response = get_response(uri)
|
@@ -48,6 +51,7 @@ class SEOChecker
|
|
48
51
|
@batch_size ||= @locations.size
|
49
52
|
@locations.each_slice(@batch_size) do |batch_locations|
|
50
53
|
batch_locations.each do |location|
|
54
|
+
@logger.debug "checking #{location}" if @logger
|
51
55
|
response = get_response(URI.parse(location))
|
52
56
|
if response.is_a? Net::HTTPSuccess
|
53
57
|
if response.body =~ %r{<head>(.*?)</head>}m
|
@@ -75,7 +79,7 @@ class SEOChecker
|
|
75
79
|
end
|
76
80
|
|
77
81
|
def check_title(header_string, location)
|
78
|
-
if header_string =~ %r{<title>(.*?)</title>}
|
82
|
+
if header_string =~ %r{<title>(.*?)</title>} && $1 != ''
|
79
83
|
title = $1
|
80
84
|
(@titles[title] ||= []) << location
|
81
85
|
else
|
@@ -106,33 +110,27 @@ class SEOChecker
|
|
106
110
|
end
|
107
111
|
|
108
112
|
def report
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
end
|
122
|
-
end
|
123
|
-
@descriptions.each do |description, locations|
|
113
|
+
report_non_empty(@unreachables, "are unreachable.")
|
114
|
+
report_non_empty(@no_titles, "have no title.")
|
115
|
+
report_non_empty(@no_descriptions, "have no description.")
|
116
|
+
report_same(@titles, 'title')
|
117
|
+
report_same(@descriptions, 'description')
|
118
|
+
report_non_empty(@id_urls.values, "use ID number in URL.")
|
119
|
+
report_non_empty(@excessive_keywords, "use excessive keywords in URL.")
|
120
|
+
report_non_empty(@nesting_subdirectories, "have deep nesting of subdirectories in URL.")
|
121
|
+
end
|
122
|
+
|
123
|
+
def report_same(variables, name)
|
124
|
+
variables.each do |variable, locations|
|
124
125
|
if locations.size > 1
|
125
|
-
print "#{locations.slice(0, 5).join(",\n")} #{'and ...' if locations.size > 5} have the same
|
126
|
+
print "#{locations.slice(0, 5).join(",\n")} #{'and ...' if locations.size > 5} have the same #{name} '#{variable}'.\n\n"
|
126
127
|
end
|
127
128
|
end
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
unless
|
132
|
-
print "#{
|
133
|
-
end
|
134
|
-
unless @nesting_subdirectories.empty?
|
135
|
-
print "#{@nesting_subdirectories.slice(0, 5).join(",\n")} #{'and ...' if @nesting_subdirectories.size > 5} have deep nesting of subdirectories in URL.\n\n"
|
129
|
+
end
|
130
|
+
|
131
|
+
def report_non_empty(variables, suffix)
|
132
|
+
unless variables.empty?
|
133
|
+
print "#{variables.slice(0, 5).join(",\n")} #{'and ...' if variables.size > 5} #{suffix}\n\n"
|
136
134
|
end
|
137
135
|
end
|
138
136
|
end
|
data/seo_checker.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{seo_checker}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Richard Huang"]
|
@@ -27,32 +27,32 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.homepage = %q{http://github.com/flyerhzm/seo_checker}
|
28
28
|
s.rdoc_options = ["--charset=UTF-8"]
|
29
29
|
s.require_paths = ["lib"]
|
30
|
-
s.rubygems_version = %q{1.3.
|
30
|
+
s.rubygems_version = %q{1.3.5}
|
31
31
|
s.summary = %q{seo_checker check your website if it is seo.}
|
32
32
|
s.test_files = [
|
33
|
-
"examples/bad_seo/
|
34
|
-
"examples/bad_seo/app/controllers/posts_controller.rb",
|
35
|
-
"examples/bad_seo/app/helpers/application_helper.rb",
|
36
|
-
"examples/bad_seo/app/helpers/posts_helper.rb",
|
37
|
-
"examples/bad_seo/app/models/post.rb",
|
38
|
-
"examples/bad_seo/config/boot.rb",
|
39
|
-
"examples/bad_seo/config/environment.rb",
|
40
|
-
"examples/bad_seo/config/environments/development.rb",
|
41
|
-
"examples/bad_seo/config/environments/production.rb",
|
33
|
+
"examples/bad_seo/config/routes.rb",
|
42
34
|
"examples/bad_seo/config/initializers/backtrace_silencers.rb",
|
43
|
-
"examples/bad_seo/config/initializers/inflections.rb",
|
44
|
-
"examples/bad_seo/config/initializers/mime_types.rb",
|
45
35
|
"examples/bad_seo/config/initializers/new_rails_defaults.rb",
|
46
36
|
"examples/bad_seo/config/initializers/session_store.rb",
|
47
|
-
"examples/bad_seo/config/
|
48
|
-
"examples/bad_seo/
|
49
|
-
"examples/bad_seo/
|
50
|
-
"examples/bad_seo/
|
51
|
-
"examples/bad_seo/
|
52
|
-
"examples/bad_seo/
|
37
|
+
"examples/bad_seo/config/initializers/inflections.rb",
|
38
|
+
"examples/bad_seo/config/initializers/mime_types.rb",
|
39
|
+
"examples/bad_seo/config/environment.rb",
|
40
|
+
"examples/bad_seo/config/boot.rb",
|
41
|
+
"examples/bad_seo/config/environments/production.rb",
|
42
|
+
"examples/bad_seo/config/environments/development.rb",
|
53
43
|
"examples/bad_seo/test/test_helper.rb",
|
44
|
+
"examples/bad_seo/test/performance/browsing_test.rb",
|
45
|
+
"examples/bad_seo/test/functional/posts_controller_test.rb",
|
54
46
|
"examples/bad_seo/test/unit/helpers/posts_helper_test.rb",
|
55
|
-
"examples/bad_seo/test/unit/post_test.rb"
|
47
|
+
"examples/bad_seo/test/unit/post_test.rb",
|
48
|
+
"examples/bad_seo/db/migrate/20100228140057_create_posts.rb",
|
49
|
+
"examples/bad_seo/db/seeds.rb",
|
50
|
+
"examples/bad_seo/db/schema.rb",
|
51
|
+
"examples/bad_seo/app/helpers/application_helper.rb",
|
52
|
+
"examples/bad_seo/app/helpers/posts_helper.rb",
|
53
|
+
"examples/bad_seo/app/models/post.rb",
|
54
|
+
"examples/bad_seo/app/controllers/application_controller.rb",
|
55
|
+
"examples/bad_seo/app/controllers/posts_controller.rb"
|
56
56
|
]
|
57
57
|
|
58
58
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seo_checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 2
|
8
|
-
- 0
|
9
|
-
version: 0.2.0
|
4
|
+
version: 0.2.1
|
10
5
|
platform: ruby
|
11
6
|
authors:
|
12
7
|
- Richard Huang
|
@@ -47,44 +42,42 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
47
42
|
requirements:
|
48
43
|
- - ">="
|
49
44
|
- !ruby/object:Gem::Version
|
50
|
-
segments:
|
51
|
-
- 0
|
52
45
|
version: "0"
|
46
|
+
version:
|
53
47
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
48
|
requirements:
|
55
49
|
- - ">="
|
56
50
|
- !ruby/object:Gem::Version
|
57
|
-
segments:
|
58
|
-
- 0
|
59
51
|
version: "0"
|
52
|
+
version:
|
60
53
|
requirements: []
|
61
54
|
|
62
55
|
rubyforge_project:
|
63
|
-
rubygems_version: 1.3.
|
56
|
+
rubygems_version: 1.3.5
|
64
57
|
signing_key:
|
65
58
|
specification_version: 3
|
66
59
|
summary: seo_checker check your website if it is seo.
|
67
60
|
test_files:
|
68
|
-
- examples/bad_seo/
|
69
|
-
- examples/bad_seo/app/controllers/posts_controller.rb
|
70
|
-
- examples/bad_seo/app/helpers/application_helper.rb
|
71
|
-
- examples/bad_seo/app/helpers/posts_helper.rb
|
72
|
-
- examples/bad_seo/app/models/post.rb
|
73
|
-
- examples/bad_seo/config/boot.rb
|
74
|
-
- examples/bad_seo/config/environment.rb
|
75
|
-
- examples/bad_seo/config/environments/development.rb
|
76
|
-
- examples/bad_seo/config/environments/production.rb
|
61
|
+
- examples/bad_seo/config/routes.rb
|
77
62
|
- examples/bad_seo/config/initializers/backtrace_silencers.rb
|
78
|
-
- examples/bad_seo/config/initializers/inflections.rb
|
79
|
-
- examples/bad_seo/config/initializers/mime_types.rb
|
80
63
|
- examples/bad_seo/config/initializers/new_rails_defaults.rb
|
81
64
|
- examples/bad_seo/config/initializers/session_store.rb
|
82
|
-
- examples/bad_seo/config/
|
83
|
-
- examples/bad_seo/
|
84
|
-
- examples/bad_seo/
|
85
|
-
- examples/bad_seo/
|
86
|
-
- examples/bad_seo/
|
87
|
-
- examples/bad_seo/
|
65
|
+
- examples/bad_seo/config/initializers/inflections.rb
|
66
|
+
- examples/bad_seo/config/initializers/mime_types.rb
|
67
|
+
- examples/bad_seo/config/environment.rb
|
68
|
+
- examples/bad_seo/config/boot.rb
|
69
|
+
- examples/bad_seo/config/environments/production.rb
|
70
|
+
- examples/bad_seo/config/environments/development.rb
|
88
71
|
- examples/bad_seo/test/test_helper.rb
|
72
|
+
- examples/bad_seo/test/performance/browsing_test.rb
|
73
|
+
- examples/bad_seo/test/functional/posts_controller_test.rb
|
89
74
|
- examples/bad_seo/test/unit/helpers/posts_helper_test.rb
|
90
75
|
- examples/bad_seo/test/unit/post_test.rb
|
76
|
+
- examples/bad_seo/db/migrate/20100228140057_create_posts.rb
|
77
|
+
- examples/bad_seo/db/seeds.rb
|
78
|
+
- examples/bad_seo/db/schema.rb
|
79
|
+
- examples/bad_seo/app/helpers/application_helper.rb
|
80
|
+
- examples/bad_seo/app/helpers/posts_helper.rb
|
81
|
+
- examples/bad_seo/app/models/post.rb
|
82
|
+
- examples/bad_seo/app/controllers/application_controller.rb
|
83
|
+
- examples/bad_seo/app/controllers/posts_controller.rb
|