Skip to content

Commit a0fc0c5

Browse files
committed
SEO
1 parent 4371a1b commit a0fc0c5

7 files changed

Lines changed: 192 additions & 1 deletion

File tree

docs/Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ group :jekyll_plugins do
1111
gem 'jekyll-sitemap'
1212
gem 'jekyll-og-image'
1313
gem 'jekyll-redirect-from'
14+
gem 'jekyll-ai-visible-content'
1415
end

docs/_config.yml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ title: RubyLLM
22
description: One beautiful API for ChatGPT, Claude, Gemini, and more. Chat, images, embeddings, tools.
33
url: https://rubyllm.com
44
baseurl: /
5+
lang: en-US
6+
locale: en_US
7+
repository: crmne/ruby_llm
58
remote_theme: just-the-docs/just-the-docs
69

710
# Collections for organizing content
@@ -42,21 +45,29 @@ defaults:
4245
type: "getting_started"
4346
values:
4447
layout: "default"
48+
seo:
49+
type: "WebPage"
4550
- scope:
4651
path: ""
4752
type: "core_features"
4853
values:
4954
layout: "default"
55+
seo:
56+
type: "WebPage"
5057
- scope:
5158
path: ""
5259
type: "advanced"
5360
values:
5461
layout: "default"
62+
seo:
63+
type: "WebPage"
5564
- scope:
5665
path: ""
5766
type: "reference"
5867
values:
5968
layout: "default"
69+
seo:
70+
type: "WebPage"
6071

6172
logo: "/assets/images/logotype.svg"
6273
favicon_ico: "/assets/images/logo.svg"
@@ -65,6 +76,13 @@ twitter:
6576
username: paolino
6677
card: summary_large_image
6778

79+
social:
80+
name: RubyLLM
81+
links:
82+
- https://github.com/crmne/ruby_llm
83+
- https://rubygems.org/gems/ruby_llm
84+
- https://github.com/sponsors/crmne
85+
6886
search_enabled: true
6987
search:
7088
heading_level: 2
@@ -114,6 +132,97 @@ plugins:
114132
- jekyll-sitemap
115133
- jekyll-og-image
116134
- jekyll-redirect-from
135+
- jekyll-ai-visible-content
136+
137+
author:
138+
type: Organization
139+
name: RubyLLM
140+
url: https://rubyllm.com
141+
twitter: paolino
142+
143+
ai_visible_content:
144+
enabled: true
145+
entity:
146+
type: Organization
147+
id_slug: ruby-llm
148+
name: RubyLLM
149+
alternate_names:
150+
- ruby_llm
151+
- Ruby LLM
152+
description: one consistent Ruby API for chat, image generation, embeddings, transcription, moderation, tools, agents, structured output, streaming, and Rails integration across OpenAI, Anthropic, Gemini, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, xAI, and OpenAI-compatible providers.
153+
image: /assets/images/logotype.jpg
154+
same_as:
155+
- https://github.com/crmne/ruby_llm
156+
- https://rubygems.org/gems/ruby_llm
157+
- https://github.com/sponsors/crmne
158+
knows_about:
159+
- Ruby
160+
- Ruby on Rails
161+
- Large language models
162+
- AI agents
163+
- Retrieval augmented generation
164+
- Function calling
165+
- Structured output
166+
- Vector embeddings
167+
- Streaming AI responses
168+
- Multi-modal AI
169+
- OpenAI
170+
- Anthropic Claude
171+
- Google Gemini
172+
- AWS Bedrock
173+
- DeepSeek
174+
- Mistral AI
175+
- xAI
176+
- OpenRouter
177+
- Perplexity
178+
- Ollama
179+
- Vertex AI
180+
- GPUStack
181+
- OpenAI-compatible APIs
182+
json_ld:
183+
auto_inject: false
184+
include_website_schema: true
185+
include_breadcrumbs: true
186+
include_blog_posting: false
187+
include_faq: true
188+
include_how_to: true
189+
article_body: excerpt
190+
compact: true
191+
crawlers:
192+
allow_gptbot: true
193+
allow_perplexitybot: true
194+
allow_claudebot: true
195+
allow_googlebot: true
196+
allow_bingbot: true
197+
generate_robots_txt: true
198+
llms_txt:
199+
enabled: true
200+
title: RubyLLM Documentation
201+
description: Developer documentation for RubyLLM, a Ruby library for building AI applications with chat, agents, tools, embeddings, image generation, audio transcription, moderation, streaming, and Rails integration.
202+
include_full_text: true
203+
sections:
204+
- heading: Canonical Resources
205+
content: |
206+
- Documentation: https://rubyllm.com
207+
- Source code: https://github.com/crmne/ruby_llm
208+
- RubyGems package: https://rubygems.org/gems/ruby_llm
209+
- heading: Primary Topics
210+
content: |
211+
RubyLLM covers provider-agnostic AI application development in Ruby, including OpenAI, Anthropic, Gemini, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, xAI, OpenAI-compatible APIs, agents, tools, structured output, embeddings, image generation, audio transcription, moderation, streaming, Rails integration, async workloads, model registry usage, and upgrade guidance.
212+
linking:
213+
enable_entity_links: false
214+
apply_to_metadata: false
215+
enable_related_posts: false
216+
validation:
217+
warn_name_inconsistency: false
218+
warn_missing_same_as: true
219+
warn_missing_dates: false
220+
warn_orphan_pages: false
221+
warn_missing_descriptions: true
222+
fail_build_on_error: false
223+
content_only: true
224+
verbose: false
225+
max_examples: 5
117226

118227
# Jekyll uses Dart Sass; suppress deprecations emitted by upstream theme styles.
119228
sass:

docs/_includes/head.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
{% include_cached favicon.html %}
4848

4949
{% seo %}
50+
{% ai_json_ld %}
5051

5152
{% include head_custom.html %}
5253
</head>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# frozen_string_literal: true
2+
3+
# jekyll-ai-visible-content's manual {% ai_json_ld %} tag searches pages and
4+
# posts. RubyLLM's docs live mostly in custom collections, so include those too.
5+
module JekyllAiVisibleContentCollectionJsonLd
6+
private
7+
8+
def find_page_object(site, page_hash)
9+
super || collection_doc(site, page_hash)
10+
end
11+
12+
def collection_doc(site, page_hash)
13+
url = page_hash['url'] || page_hash['permalink']
14+
site.collections.values.flat_map(&:docs).find { |doc| doc.url == url }
15+
end
16+
end
17+
18+
Jekyll::Hooks.register :site, :after_init do
19+
next unless defined?(JekyllAiVisibleContent::Tags::AiJsonLdTag)
20+
21+
tag = JekyllAiVisibleContent::Tags::AiJsonLdTag
22+
next if tag < JekyllAiVisibleContentCollectionJsonLd
23+
24+
tag.prepend(JekyllAiVisibleContentCollectionJsonLd)
25+
end
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# frozen_string_literal: true
2+
3+
# Jekyll assigns custom collection documents a synthetic date based on build
4+
# time. These docs are evergreen reference pages, so hide that synthetic date
5+
# from Liquid consumers such as jekyll-seo-tag.
6+
module RubyLlmDocumentCollectionSeo
7+
DOC_COLLECTIONS = %w[
8+
getting_started
9+
core_features
10+
advanced
11+
reference
12+
].freeze
13+
14+
def date
15+
return nil if docs_collection?
16+
17+
super
18+
end
19+
20+
private
21+
22+
def docs_collection?
23+
@obj.respond_to?(:collection) && DOC_COLLECTIONS.include?(@obj.collection.label)
24+
end
25+
end
26+
27+
Jekyll::Drops::DocumentDrop.prepend(RubyLlmDocumentCollectionSeo)

docs/about.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
layout: default
3+
title: About RubyLLM
4+
description: RubyLLM is an open source Ruby gem for building AI applications across major model providers with one consistent Ruby API.
5+
permalink: /about/
6+
nav_exclude: true
7+
search_exclude: true
8+
entity_type: Organization
9+
image: /assets/images/logotype.jpg
10+
topics:
11+
- Ruby
12+
- Large language models
13+
- AI agents
14+
- Ruby on Rails
15+
- OpenAI
16+
- Anthropic Claude
17+
- Google Gemini
18+
- AWS Bedrock
19+
- Ollama
20+
---
21+
22+
# About RubyLLM
23+
24+
RubyLLM is an open source Ruby gem that gives developers one consistent API for building AI applications across OpenAI, Anthropic, Gemini, Bedrock, DeepSeek, Mistral, Ollama, OpenRouter, Perplexity, GPUStack, xAI, and OpenAI-compatible providers.
25+
26+
It supports chat, multi-modal inputs, image generation, embeddings, audio transcription, moderation, tools, agents, structured output, streaming, Rails integration, async workloads, and model registry access.
27+
28+
RubyLLM is maintained by [Carmine Paolino](https://paolino.me) and developed in the open on [GitHub](https://github.com/crmne/ruby_llm). The published gem is available on [RubyGems](https://rubygems.org/gems/ruby_llm).

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: default
3-
title: Home
3+
title: RubyLLM
44
nav_order: 1
55
description: One beautiful Ruby API for GPT, Claude, Gemini, and more. Easily build chatbots, AI agents, RAG applications, and content generators.
66
permalink: /

0 commit comments

Comments
 (0)