jekyll_ai_related_posts 0.1.0 → 0.1.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.
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