4 min read

Auto-Summarizing Bookmarks with Gemini 1.5

I've been using the Gemini 1.5 Pro API. Today, I was pleased to learn it's available through OpenRouter so folks who don't have early access to the API have a path to begin using it.

In this post I am sharing an n8n workflow designed to automatically add summaries to my bookmarks in Omnivore using the latest Gemini model. My script is a slight adaptation of a method originally shared by Ugur on the Omnivore Discord.

Since I want to ensure folks can use it I've created two different flavors of the workflow, each aimed at accomplishing the same task but through slightly different approaches. One version doesn't require a personal Google Gemini API key and the other one does.

In either case, whenever I save a bookmark, such as how to write GNOME Apps with Swift, an Omnivore webhook triggers my self-hosted n8n Google Cloud instance to execute.

n8n script using Gemini via OpenRouter

What the n8n workflow does...

  1. Receives a webhook request from Omnivore with article data.
  2. Retrieves the full article content from the Omnivore API.
  3. Converts the article content from HTML to markdown format.
  4. Sends the markdown content to Gemini to generate a summary using the (currently free) 1.5 Pro model.
  5. Adds additional fields to the data and prepends "###### Summary \n" to the generated summary.
  6. Updates the original bookmark in Omnivore with the Gemini generated summary as the annotation.

The Gemini generated content listed below was automatically added as a summary to the bookmarked content in Omnivore:

Summary

This is a well-written and informative piece about Adwaita for Swift and its potential for GNOME app development. It effectively highlights the benefits of using this framework, including:

Increased Readability and Ease of Use:

β€’ The declarative style and data-centric approach of Adwaita for Swift lead to cleaner and more concise code compared to imperative frameworks.
β€’ Features like automatic UI updates based on data changes and simplified data persistence improve developer experience.

Cross-Platform Development:

β€’ Adwaita for Swift allows developers to create apps for Linux, macOS, and Windows using a single codebase, promoting code reuse and efficiency.

Integration with GNOME Ecosystem:

β€’ Adwaita for Swift enables the creation of GNOME apps with native look and feel, leveraging the modern Adwaita design language.
β€’ The framework supports publishing apps on Flathub, facilitating distribution and discoverability.

The provided code examples effectively demonstrate the differences between Adwaita for Swift and traditional imperative frameworks like PyGObject, showcasing the framework's conciseness and clarity.

The call to action at the end is comprehensive and encourages various forms of involvement, catering to different levels of expertise and interest.

Overall, this is a valuable resource for anyone interested in learning about or using Adwaita for Swift for GNOME app development. It effectively communicates the benefits of the framework and provides clear guidance on how to get involved.

The n8n workflow is available as a gist in two formats:

  1. Supports OpenRouter so you do not require a Google Gemini API Key
Omnivore Gemini 1.5 n8n Summary Workflow
Omnivore Gemini 1.5 n8n Summary Workflow. GitHub Gist: instantly share code, notes, and snippets.
  1. Requires using a personal Google Gemini API Key (and does not use OpenRouter)
Omnivore Gemini 1.5 n8n Summary Workflow (not using OpenRouter)
Omnivore Gemini 1.5 n8n Summary Workflow (not using OpenRouter) - Gemini_1.5_Pro.json

To use these workflow you'll need:

  • an Omnivore account,
  • either:
  • to update the workflow with your Omnivore key,
  • access to an n8n instance so you can import the json workflow,
  • either:
    • If using OpenRouter, configure the two http auth credentials in their respective n8n workflow modules to use your Omnivore key and OpenRouter key, or
    • If using your personal Google Gemini 1.5 API Key, configure the http auth credentials in the respective n8n workflow module to use your Omnivore key and then configure your Gemini API key in the respective n8n workflow module.

Note: I've hardcoded the Gemini 1.5 model in both workflows.

PS Is summarizing bookmarked content useful? Probably not.