Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
An n8n workflow you start by hand: it lists crop photos in a Google Cloud Storage bucket and embeds them with Voyage AI. The vectors are saved in a Qdrant collection, four photos at a time.
Crop photos embedded with Voyage and saved to Qdrant is an n8n workflow in the Developer category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
Manual run
It starts when you press Execute workflow, with these values set in two nodes:
A Qdrant collection with one point for each photo, holding its vector, its crop name and its link
What you need before you start.
Vector database
Holds the photo vectors as points with the named vector voyage, and creates the collection and its index when they are missing.
NeedsA Qdrant cluster address and an API key, in a Qdrant API credential
Embedding model
Turns each photo into a vector with voyage-multimodal-3 from its public address.
NeedsA Voyage AI API key, in a Header Auth credential
Photo storage
Lists the objects under a folder prefix in a bucket, which hold the photos.
NeedsA Google Cloud account, in a Google Cloud Storage credential
Checked by Mindket on 13 Nov 2026
This n8n workflow fills a Qdrant collection with picture vectors. A manual trigger starts it. It checks whether the collection exists and creates it, with an index on crop_name, when it does not. Then it lists the photos in a Google Cloud Storage bucket, leaves out the tomato folder and asks Voyage AI for an embedding of each photo, four at a time. Every photo becomes a point with its crop name and its address. Thirteen nodes do the work, beside twelve sticky notes that explain the steps.
Developers and data teams who want a labelled image collection in a vector database, for search, classification or anomaly checks. Skip it if your pictures are private. Voyage downloads each photo from a public address, so the bucket files must be readable without signing in.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Agriculture | Data teams | Index labelled crop photos for later classification | A team loads photos sorted in folders by crop, such as cucumber and wheat. |
| E-commerce | Catalog engineers | Build an image index for products sorted by category | An engineer loads product photos from folders named after each category. |
| Machine learning | ML engineers | Prepare a labelled collection for a nearest neighbour test | An engineer loads one folder for each class and tests a classifier on the points. |
| Research | Analysts | Keep an image dataset in a vector database to search it by meaning | An analyst keeps the photos and their folder names together in one collection. |
You need some n8n and a little cloud know-how: three credentials, a public bucket and a Qdrant cluster.
Any n8n that can reach Qdrant, Voyage AI and Google Cloud Storage will run it. Qdrant can be a Cloud cluster or a server of your own.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Four accounts are involved.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| Qdrant | A cluster with its address and an API key, saved in a Qdrant API credential |
| Voyage AI | An API key, saved in a Header Auth credential named Authorization with the value Bearer and your key |
| Google Cloud Storage | A bucket with public pictures sorted in folders by class, and a Google Cloud Storage credential |
workflow.json.Check Qdrant Collection Existence, Create Qdrant Collection, Payload index on crop_name and Batch Upload to Qdrant.Embed crop image.Google Cloud Storage, replace <YOUR_BUCKET_NAME> with your bucket and set prefix to the folder that holds the class folders.Qdrant cluster variables and replace <YOUR_QDRANT_CLUSTER_URL> with your cluster address. Check the collection name, the batch size of 4 and the vector size of 1024.Filtering out tomato to test anomalies. It skips the tomato folder on purpose, so delete or edit it if you want every class.Press Execute workflow. The run creates the collection when it is missing, lists the bucket, embeds the photos in batches and saves them. Run it once for each collection, because a second run saves every photo again.
| To change | Where |
|---|---|
| The bucket and the folder | bucketName and prefix in Google Cloud Storage |
| The collection, the batch size and the vector size | The values in Qdrant cluster variables |
| The folders that are skipped | The condition in Filtering out tomato to test anomalies |
| The fields saved with each photo | batchPayloadQdrant in Batches in the API's format |
| The embedding model | model in Embed crop image, with the vector size to match |
A bucket holds agricultural-crops/cucumber/ and agricultural-crops/wheat/ with a few photos in each, and a tomato folder.
The run skips the tomato photos. Every other photo becomes a point in the collection with the vector voyage, a crop_name such as cucumber and an image_path that links to the photo.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has two stages. The first prepares the Qdrant collection. The second turns the photos into vectors and saves them. Try it on a bucket with ten photos first.
For experts. Qdrant and Voyage are called with plain HTTP Request nodes, so the named vector voyage and the batch point format stay in your hands.
| Node | What it does | What to know |
|---|---|---|
Check Qdrant Collection Existence | Asks Qdrant whether the collection exists | If collection exists reads result.exists |
Create Qdrant Collection | Makes the collection with one named vector, Cosine distance | The vector size has to match the model, 1024 for the file’s model |
Payload index on crop_name | Adds a keyword index on crop_name | Counting the photos of each crop later needs this index |
Batch Upload to Qdrant | Saves ids, vectors and payloads in the batch format | The ids are the UUIDs made in the Code node |
The batching step was rewritten in JavaScript, and a second run saves every photo again.
_input and blocks standard library imports such as uuid unless the instance allows them (n8n’s docs, read on 12 November 2026). Mindket’s copy does the same job in JavaScriptvoyage-multimodal-3, which those docs still list as a recommended modelAn n8n workflow you start by hand. It lists the crop photos in a Google Cloud Storage bucket, turns each one into an embedding with Voyage AI and saves the vectors in a Qdrant collection, four photos at a time.
workflow.json: the workflow as n8n exports it, twenty-five nodes. Thirteen do the work and twelve are sticky notes that explain the steps. It holds no credential.README.md: these notes._items and _item, has no _input, and blocks standard library imports such as uuid unless the instance allows them (n8n's docs, read on 12 November 2026). Mindket's copy does the same job in JavaScript.<YOUR_QDRANT_CLUSTER_URL> and <YOUR_BUCKET_NAME>.agricultural-crops/cucumber/photo-1.jpg. Voyage downloads every picture from its address.workflow.json.Check Qdrant Collection Existence, Create Qdrant Collection, Payload index on crop_name and Batch Upload to Qdrant.Authorization and give it the value Bearer <YOUR_VOYAGE_KEY> with your own key. Select it in Embed crop image.Google Cloud Storage.<YOUR_BUCKET_NAME> with your bucket. Set prefix to the folder that holds the class folders. The file uses agricultural-crops.Qdrant cluster variables and replace <YOUR_QDRANT_CLUSTER_URL> with your cluster address, with https:// in front and no slash at the end. Check the collection name, the batch size of 4 and the vector size of 1024.Filtering out tomato to test anomalies. It skips the tomato folder on purpose. Delete the node or edit it if you want every class.Qdrant cluster variables sets the cluster address, the collection name, the vector size and the batch size.Check Qdrant Collection Existence (HTTP Request 4.2) asks Qdrant whether the collection exists, and If collection exists reads the answer.Create Qdrant Collection makes it with one named vector, voyage, compared by Cosine distance. Payload index on crop_name then adds a keyword index on the crop_name field.Google Cloud Storage lists every object under the prefix. Get fields for Qdrant builds a publicLink for each photo and takes the cropName from the folder that holds it.Filtering out tomato to test anomalies drops the tomato photos.batchSize and gives each photo a UUID, because Qdrant does not make point ids. Batches in the API's format reshapes each batch for Voyage and for Qdrant.Embed crop image sends a batch to Voyage's multimodal embeddings API with the model voyage-multimodal-3 and input_type set to document. Batch Upload to Qdrant saves the batch with its ids, vectors and payloads.bucketName and prefix in Google Cloud Storage.Qdrant cluster variables.Filtering out tomato to test anomalies.batchPayloadQdrant in Batches in the API's format.model in Embed crop image. Change the vector size to match and use a new collection.voyage-multimodal-3, which those docs still list as a recommended model.NOTICE.md 749 B README.md 5 KB workflow.json 22 KB
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
block · Kit
Self-hostable workspace where people and AI agents share the same rooms, built on a Nostr relay that logs every action as a signed event. For teams that want t…
backnotprop · Kit
Opens your AI coding agent's plans, specs and code changes in a browser so you can annotate or comment on them and send the feedback straight back to the agent.
alibaba · Kit
Reviews Git changes with an AI agent that reads files and searches the codebase, then writes comments tied to exact lines. It suits developers who want automat…