Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions doc/AI_TUTORIAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,12 @@ A Recipe that relies on full article bodies should supply siteinfo for the
sites it relies on under `~/.automatic/assets/siteinfo/`, rather than treating
the bundled snapshot as a guarantee of coverage.

Where no record matches, the plugin leaves the item exactly as it arrived, and
the run continues. That is the behaviour to rely on and also the reason the
document above holds a title, a link and a date per article and no body: an
index page read without a `description_selector` carries no description for
`FilterFullFeed` to have improved on.
Where no record matches, the plugin leaves the item exactly as it arrived and
the run continues. If the index page also provides no description, that item
therefore has metadata but no article body. If a bundled or user-supplied
siteinfo record does match, `FilterFullFeed` may replace the description with
the selected article body. The tutorial relies on that conditional behavior,
not on either outcome being guaranteed for a particular site.

Text can enter these items from the index page or from the article page,
and both are
Expand Down Expand Up @@ -418,9 +419,9 @@ in a Recipe they are interchangeable at the same position:
interval: 2
```

Nothing before or after the swapped entry changes. `token`, `model` and `prompt`
are required by all four; `max_tokens` exists only for Claude, because that API
requires it. Model names move with the services, so take them from the provider
Nothing before or after the swapped entry changes. `token`, `model` and
`prompt` are shared required settings of the AI filters; `max_tokens` exists
only for Claude because that API requires it. Model names move with the services, so take them from the provider
you are using rather than from this document, and see
[`PLUGINS.md`](PLUGINS.md) section 6.3 for each plugin's endpoint,
authentication and answer handling.
Expand Down
8 changes: 4 additions & 4 deletions doc/PLUGINS.md
Original file line number Diff line number Diff line change
Expand Up @@ -1249,9 +1249,9 @@ for new integrations, and authenticates with the token as a bearer token.
| `retry` | integer | Attempts after a failure. Default `0`. |
| `interval` | integer | Seconds between attempts. Default `0`. |

The endpoint is fixed by this plugin rather than exposed as a setting, an operator has no version of this
plugin that talks to a different host, and a setting for it would be a way to
send the token somewhere else. The answer is read out of the typed `output`
The endpoint is fixed by this plugin rather than exposed as a setting. An
operator has no version of this plugin that talks to a different host, and a
setting for the endpoint would provide a way to send the token somewhere else. The answer is read out of the typed `output`
array, from the `output_text` of the assistant's message.

```yaml
Expand Down Expand Up @@ -1313,7 +1313,7 @@ URL and out of anything that logs one.
| Key | Type | Meaning |
| --- | --- | --- |
| `token` | string | Gemini API key, sent as `x-goog-api-key`. Required. |
| `model` | string | Model name, bare — `gemini-3.5-flash`, not `models/gemini-3.5-flash`. Required. |
| `model` | string | Bare model name without the `models/` prefix. Required. |
| `prompt` | string | The instruction, sent as `system_instruction`. Required. |
| `retry` | integer | Attempts after a failure. Default `0`. |
| `interval` | integer | Seconds between attempts. Default `0`. |
Expand Down