Mastering Cross-Posting: From Facebook Frustrations to Dual Blogging Excellence | May 23 2026, 14:28

I have perfected the cross-posting from Facebook to my two blog sites [which almost no one visits] – beinginamerica.com and raufaliev.com. When a new post is published on Facebook, a mechanism is triggered to translate the post into English, process attached images, generate descriptions for them, create a title based on the text of the post and descriptions of the images, generate tags from the same basis, record the post in turso db – this is a cloud database, free up to certain limits, create embeddings via openai, record in qdrant cloud – this is also a cloud database, but vector-based, and finally, upload images to wordpress via API, and publish the post in English and Russian via API.

All would be well, but of all the APIs, the silliest one is Facebook’s. Firstly, for pages like mine, transitioned to New Experience, it’s almost impossible to use most of this API. Well, it’s possible, but you have to spend a long time proving to Facebook that you really need it, by showing startup documents, demonstrating the application, etc. Obviously, they are reluctant to deal with something that takes content out of their system. In addition, the token that gives access to the latest messages is relatively short-lived (possibly a few weeks), and it needs to be obtained anew through a browser only. So, any automation requires regular attention, otherwise it breaks.

If you mess up and don’t offload the latest posts through this Facebook Graph API in time, they just disappear from the list of recent ones and that’s it, no more API access to them. The only way is to request an archive download from Facebook. This download is also rather silly – it requires a lot of transformations and removing unnecessary stuff. For example, in the file containing posts, which I process, for some reason there are links that I sent in comments without accompanying text. And the comments are in a separate file!

To assign tags, I had to solve a separate challenge. Here’s the thing: there are about 10,000 posts over all time. That’s a big chunk, and you can’t build tags from it because it doesn’t fit into the contextual window of the LLM. But you need to. So, I did this: a script takes random posts from the 10,000 in such a volume that their total size is just below the specified limit in tokens, and at the end of this block, it adds the prompt “generate the most common tags for me, 30 pieces” (I simplify the prompt used). In the end, I ran this 10 times and got 10 sets of tags with 30 pieces each, generated for different slices of the database. That made 300 tags, some of which are complete duplicates, while others are synonyms and closely related in meaning. All this is fed into the LLM, and we get a list of tags and a hierarchy of tags. Now we have a limited set of tags that reflect the 10,000 posts as closely as possible. Turns out, that in almost 20 years on Facebook, my breakdown is as follows:

Tag Posts

==================================================

#Russia 3412

#Thoughts 3146

#Tech 3105

#Culture 2765

#Hobbies 2726

#AI 1603

#Science 1367

#Software 1358

#Travel 1298

#Learning 1138

#Society 1050

#Nature 958

#Education 915

#Business 902

#Art 894

#Programming 889

#Humor 840

#History 807

#Gadgets 750

#Moscow 713

#USA 614

#Cinema 567

#Webdev 493

#Music 476

#Sports 473

#Mindset 443

#Auto 400

#Books 386

…

and so on. This list includes both tags from the limited list and tags that the LLM appointed to content simply because it didn’t find anything suitable in the limited one.

Tags from the limited list became categories on the site. The rest of the tags + these just became regular wordpress tags.

As for image search. I had two ideas on how to do it. The first – OpenCLIP. It’s pretty straightforward but requires hosting the model somewhere. Easy on my machine, but inconvenient to start it each time, plus I planned to move the migrator to a cheap server on Amazon. It’s also okay to calculate in cloud models, but you have to pay a bit, which is yet another dependency. But the main thing – it works quite well without it. I generate descriptions for images using OpenAI, which is used for translating into English anyway, and then create embeddings using a large model. So far, all search tests are a great success. Especially when there’s text on the image, and it’s a big question whether OpenCLIP would have interpreted it successfully.

In the end:

1) wordpress raufaliev.com – free

2) wordpress beinginamerica.com – free

3) turso db where all posts are stored – free

4) qdrant cloud where embeddings are stored – free

5) openai for translation and image descriptions – not free, but inexpensive (cost $30 for post processing over a year).

I attach two screenshots – how the search by images works, and by texts, as well as the migrator dashboard.

Nadezhda’s Firsts: Oil Painting and Piano | March 12 2026, 18:55

Last week, Nadezhda Shulga painted an oil painting for the first time in her life and played the piano with one hand for the first time in her life! Nadya, well done!!! She asked me so many times to paint nature, that she eventually went ahead and painted it herself.

The Lost Version of Repin’s “Unexpected”: A Revolutionary Woman’s Tale | March 01 2026, 23:59

It turns out that in the first version of the painting “Unexpected” the main character was a woman, a Narodovoltsy revolutionary! This was a smaller version, later Repin painted a larger one with a man – the one everyone knows.

And the first version is kept in the Tretyakov Gallery but it is not displayed.

Well, as everyone knows. In general, Russian and Ukrainian artists are hardly known outside their countries. There seems to be one painting by Repin in the Metropolitan Museum of NY and a few in the Orsay, but that’s almost nothing, and I wouldn’t be surprised if they are all in storage.

Here people know Rublev, the Russian avant-garde (Malevich, Kandinsky, Chagall), but nobody (except professionals) knows Shishkin, Levitan, Vasnetsov, Surikov, Savrasov. Despite the fact that many of them studied in Europe and worked from there. Remember Ivanov and his “The Appearance of Christ Before the People”.

Now I’m googling why. They write that the French considered Russian art of that era something akin to journalism in oil. Like, using the canvas as a platform to preach morals, tell stories, expose social injustices. Social drama, suffering peasants, harsh winter landscapes, and execution scenes – all this seemed frightening to Americans. Kind of like Dostoevsky in oil. How can you hang that above a fireplace?

Exploring the Tango Vibes: Astor Piazzolla and Beyond | February 23 2026, 06:31

A few days ago, I decided to Google whether Astor Piazzolla’s music would be performed anywhere nearby, and saw that this very weekend, close by in Strathmore, there is a Tango After Dark show featuring Piazzolla’s music, accompanied by an Argentine orchestra and Argentine tango dancers. Really cool, but I didn’t bring any recordings here.

While Googling what this exotic instrument the local soloist was playing – the bandoneon – I stumbled upon a very very very cool concert of Mario Pietrodarchi accompanied by the Minsk Orchestra. This concert occupies the top five spots in the most popular recordings of the Belarusian State Chamber Orchestra – just go to popular and listen to everything, all of it’s great. You’ve probably already heard Libertango and Oblivion without me, they are ubiquitous, so I’m attaching Angel’s Dance (Milonga del angel) in the comments.

Surreal Daydreams: Cooking Up a Fantastical Adventure | February 08 2026, 15:36

Just a normal day

So I decided to fry some eggs. I grab the frying pan, and it asks me, “Which floor?”. Unfazed, I pull a piano out of my pocket and press the brake pedal. Suddenly, a flight attendant pops out of the oven and politely asks: “Tea, coffee, or hold a brick?”. I chose the brick, because it was checkered blue and smelled of spring.

I step out onto the balcony and see — instead of a courtyard, there’s an ocean of kefir. I get into a submarine, start the chainsaw, and then a traffic cop on a dolphin stops me. He whistles into a cucumber and says:

— Why are you without a panama hat in a public place?

I show him my passport, but instead of a photo, there’s a dressed herring. He bursts into tears of joy, gifts me a cactus, and flies away on an umbrella towards Syzran.

I go back inside, wanting to put the cactus in a vase, but the vase has married a vacuum cleaner and left on a honeymoon to the mezzanine. Well, I spit, wiped the sweat away with a towel, but it turned out to be the neighbor’s cat. The cat meowed, turned into 18 rubles in a single coin, and rolled under the sofa.

I approach it, get in the elevator, sit down on a bicycle, start a motorcycle, then bang, a conductor comes up to me and says, “Sir, give up your seat”. And I say I don’t smoke. Then this kid starts crying! But I didn’t lose my cool, and hit him on the face, and he grabs his knee and screams: “My back! My back!”

I exit this electric train,

and see, there’s a minibus standing there. Well, I approach and say: “Winston Blue and 0.5 vodka”. But it gives me Bond and beer. I take this prima and moonshine, and run away from those cops! Then these firefighters caught up with me in an ambulance! Caught up and say: “You forgot your change!”. So, I take a kilogram of apples and head to the market to trade.

I bring them, haven’t even set out these bananas, right then an old lady runs up and buys all the peaches, and tells me to put them in a small bag! And I think, she’s totally insane, how am I supposed to put 20 watermelons into her bag?! I took the money and went home! Never went to the forest again… didn’t touch mushrooms… even quit smoking.