Teaching KeywordMoves to see with PixelCue

Illustration of a glass camera eye examining painted scenes as coloured paper shapes collect in an archive box.

I’ve been joining two of my local tools together. PixelCue can look at images and other visual media; KeywordMoves keeps keyword evidence from different sources separate instead of flattening everything into one pretend score. The missing piece was a clean way for one to ask the other a very small question: what keywords do you see in this file?

Illustration of an image passing through a visual-language model and emerging as keyword tags, with a second path showing live progress updates.
PixelCue provides visual analysis as a local service, while KeywordMoves requests one file’s keywords and listens for progress.

PixelCue now has a simple local REST service. A client sends one file path to /v1/keywords and gets a plain JSON list back. KeywordMoves has a matching pixelcue operation and a keyword-only output mode, so the smallest useful run really does return only the phrases.

The server is also the foundation for PixelCue’s planned React interface. The current Python desktop interface is useful while the analysis code develops, but the longer-term shape is a local web service with more than one possible client. Keeping analysis behind a documented endpoint means the web interface, KeywordMoves and future tools do not all need their own copies of the model-loading logic.

Making slow downloads visible

The slightly awkward part is the first model run. Hugging Face can take bloody ages to download model weights, and an ordinary HTTP request can look dead even when useful work is still happening.

PixelCue therefore exposes request-scoped Socket.IO updates alongside the REST endpoint. A client can subscribe using the request ID and see inspection, model loading, model-download, analysis, completion and failure stages. KeywordMoves allows six hours by default for this particular operation. That is deliberately generous; it avoids turning a slow first download into a false timeout and another unnecessary attempt.

Progress is still only progress. The final REST response or failure remains the actual result.

Keeping the evidence honest

The integration treats PixelCue’s output as visual semantic evidence. If a model returns phrases such as a place, object, colour or mood, those can become candidates to research. They do not prove that anybody searches for the phrase, that it will rank, or that the same phrase is popular on a social platform.

That separation matters to KeywordMoves. Search Console impressions, Google Trends indices, platform-native observations and model-generated visual tags answer different questions. The new plugin records which model and endpoint produced the tags instead of making them look like universal keyword scores.

What I verified

The focused PixelCue service tests passed, as did live health and WebSocket checks. The complete KeywordMoves suite passed 1,809 tests with two skips. I also forced a real Socket.IO client to use WebSocket transport, subscribed it to a request room and checked the acknowledgement.

The React interface is still to come, and I have not treated this work as a finished public release. What is now in place is the reusable seam underneath it: one-file visual keyword extraction over REST, with enough live progress to make the slow first model download understandable rather than mysterious.

Abstract eye turning visual evidence into texture, shape and colour keywords.
Abstract eye turning visual evidence into texture, shape and colour keywords.

Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *