jekyll_ai_related_posts 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8b59977a0c1d912e06792f7123c7d443547f1decb9fdf4042d90a4fcd4e1eb4e
4
- data.tar.gz: 159db1306777a201cff3a9d3532ddba444164dbfb780207fb9457ce4898df5f8
3
+ metadata.gz: 6b3f80af93fac9879714b6ee8806b101b1a2ede2337f285b19091888a9105718
4
+ data.tar.gz: 94d1b81c2c3ea6bde9628795e7ca24c1df5bf33108229d6a16cb72f336fcb676
5
5
  SHA512:
6
- metadata.gz: e0f73857997bdacd22059c542a1d2a642a3ea76aa165241c155a0e8b2cafdc4f48607f334a2ed7a265a252e86969d9e523bf4ef2ac5889e1f39c36d1a27792f5
7
- data.tar.gz: a5f5f573459deb7fab308b1fb98a1d60ce1aeda95e28860161ed886a3ab90c43f1b7d36fea6cc5c570b05cd15284a59240e8676f5b10f44290b05fbacbd379df
6
+ metadata.gz: 74cc6e541c458483e3891a3b10d0dc6f49266fec3e06312dceb733593c37c97c686e73f79e43d8c5d26e4edcf696c10f3695fc1d79e6941dceaf3983b9938f51
7
+ data.tar.gz: ab0d010676d87c601cdcb8237bc1b5275ecd2ca1dc39ae2648c83e4ae729c5acd6e3d5642d1a712ad5b5017dc8864e968b3d2a9e7308f97e45499155e7f44e41
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Jekyll AI Related Posts 🪄
2
2
 
3
+ Rubygems: [jekyll_ai_related_posts](https://rubygems.org/gems/jekyll_ai_related_posts)
4
+
3
5
  Jekyll ships with functionality that populates
4
6
  [related_posts](https://jekyllrb.com/docs/variables/) with the ten most recent
5
7
  posts. If you install
@@ -18,7 +20,12 @@ posts with the accuracy of OpenAI's models (or any other LLM, for that matter).
18
20
 
19
21
  Jekyll AI Related Posts is a [Jekyll
20
22
  plugin](https://jekyllrb.com/docs/plugins/installation/). It can be installed
21
- using any Jekyll plugin installation method.
23
+ using any Jekyll plugin installation method. For example, in your `_config.yml`:
24
+
25
+ ```yaml
26
+ plugins:
27
+ - jekyll_ai_related_posts
28
+ ```
22
29
 
23
30
  ## Configuration
24
31
 
@@ -57,6 +64,20 @@ to use it:
57
64
  </ul>
58
65
  ```
59
66
 
67
+ ### First Run
68
+
69
+ The first time the plugin runs, it will fetch embeddings for all your posts.
70
+ Based on some light testing, this took me 0.5 sec per post, or about 50 sec for
71
+ a blog with 100 posts. All subsequent runs will be faster since embeddings will
72
+ be cached.
73
+
74
+ ### Cost
75
+
76
+ The API costs to use this plugin with OpenAI's API are minimal. I ran this
77
+ plugin for all 84 posts on [mikekasberg.com](https://www.mikekasberg.com) for
78
+ $0.00 in API fees (1,277 tokens on the text-embedding-3-small model). (Your
79
+ results may vary, but should remain inexpensive.)
80
+
60
81
  ### Upgrading from Built-In Related Posts
61
82
 
62
83
  If you're already using Jekyll's built-in `site.related_posts` and you want to
@@ -68,6 +89,17 @@ upgrade to AI related posts:
68
89
  option to the `jekyll` command. You can remove the `classifier-reborn` gem and
69
90
  its dependencies (Numo).
70
91
 
92
+ ### Cache File (.ai_related_posts_cache.sqlite3)
93
+
94
+ This plugin will cache embeddings in `.ai_related_posts_cache.sqlite3` in your
95
+ Jekyll source root (typically the root of your project directory). The file
96
+ itself is a SQLite database file. For most cases, I'd recommend adding this file
97
+ to your `.gitignore` since it's a binary cache file. However, you _may_ choose
98
+ to check it in to git if, for example, you want to share cached embeddings
99
+ across many machines (and are willing to check in a binary file on the order of
100
+ 1-10Mb to do so). If the file is not present, it will be re-created and
101
+ embeddings will be fetched from the API (which may result in higher API usage
102
+ fees if done frequently).
71
103
 
72
104
  ## How It Works
73
105
 
@@ -88,10 +120,9 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
88
120
  `rake spec` to run the tests. You can also run `bin/console` for an interactive
89
121
  prompt that will allow you to experiment.
90
122
 
91
- To install this gem onto your local machine, run `bundle exec rake install`. To
92
- release a new version, update the version number in `version.rb`, and then run
93
- `bundle exec rake release`, which will create a git tag for the version, push
94
- git commits and the created tag, and push the `.gem` file to
123
+ To release a new version, update the version number in `version.rb`, and then
124
+ run `bundle exec rake release`, which will create a git tag for the version,
125
+ push git commits and the created tag, and push the `.gem` file to
95
126
  [rubygems.org](https://rubygems.org).
96
127
 
97
128
  ## Contributing
@@ -12,6 +12,11 @@ module JekyllAiRelatedPosts
12
12
  @site = site
13
13
  setup_database
14
14
 
15
+ @indexed_posts = {}
16
+ site.posts.docs.each do |p|
17
+ @indexed_posts[p.relative_path] = p
18
+ end
19
+
15
20
  if fetch_enabled?
16
21
  Jekyll.logger.info "[ai_related_posts] Generating related posts..."
17
22
  @embeddings_fetcher = new_fetcher
@@ -20,11 +25,6 @@ module JekyllAiRelatedPosts
20
25
  ensure_embedding_cached(p)
21
26
  end
22
27
 
23
- @indexed_posts = {}
24
- site.posts.docs.each do |p|
25
- @indexed_posts[p.relative_path] = p
26
- end
27
-
28
28
  @site.posts.docs.each do |p|
29
29
  find_related(p)
30
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JekyllAiRelatedPosts
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll_ai_related_posts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Kasberg
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.1'
19
+ version: '7.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '7.1'
26
+ version: '7.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement