Automation Pipeline4 min read

My Japanese Rotation Was Running in the Korean Order

My content engine rotated genres per language, but every language followed the same order. In Japan, eto fortunes drew 1,418 views and blood type drew 2. This post covers why I changed only the order and left the weights alone.

#rotation#localization#japan#content-strategy#python
Left: a rotation where every language shares one genre order. Right: a separate Japanese order table with eto and horoscope first.
Only the order was split by language. Korean and English kept theirs unchanged.

Same order, different markets

My content engine has a rotation that cycles through genres such as personality and compatibility, posting one at a time. Each language stores its own position, but there was only one order. Every language walked the genres in the order they were registered in code (REGISTRY, MATCH).

The problem only showed up when I split the Japanese numbers by genre. 干支占い (Chinese zodiac fortune) had 1,418 views and 星座 (Western horoscope) had 225. In the same rotation, 動物顔 (animal-face type) had 15 and 血液型 (blood type) had 2. The engine made all of them the same way, yet the market response split sharply by genre.

The rotation didn't know any of that. It worked through the Japanese genres in the same order as Korean and English, so a 1,418-view genre and a 2-view genre waited their turn on equal terms.

Does your multilingual pipeline give each language its own queue order, or does it translate the content and share a single order?

The first fix I thought of was useless

My first idea was repeat weighting: list the strong genres two or three times in the rotation so they come up more often.

In this engine, that does nothing useful. Each genre has a finite pool of material, and anything already posted is filtered out through published.json. A genre can appear many times in the rotation, but the number of new items it can supply stays the same. A higher weight only drains the pool faster, and once the pool is empty, its turns get skipped by the dedup. Repeating a genre doesn't add volume. It just spends the pool sooner.

That left order as the only thing I could actually change: which genre gets used first.

What would you do? Raise the weight to publish more, or change the order to publish sooner?

The change: one per-language order table

In rotation.py and rotation_match.py I added a per-language order table, LANG_APP_ORDER, plus _order_for(lang), which returns the order for a given language. Across the two files that came to 33 lines added and 4 removed.

For Japanese personality content, I moved 干支 (ddi) and 星座 (zodiac) to the front and 動物顔 (animalface) and 血液型 (bloodtype) to the back. For Japanese compatibility content, 干支相性 goes first. Twelve zodiac animals give 78 pairings, which I judged would keep that genre supplied for a while.

I left the Korean and English order exactly as it was. Any language without an entry in the table falls back to the existing REGISTRY/MATCH order. I also kept the per-language index format unchanged so existing state files would still load. I didn't want one market's data to change another market's order.

Self-check

  • In your multilingual queue or rotation, can the order itself vary by language, or only the position?
  • Have you broken down performance by language × genre rather than by language alone?
  • With finite material and dedup, have you checked whether raising a weight adds total output or just drains the pool faster?

The honest part

This change only reorders. The total amount of 干支 and 星座 content I can publish in Japanese is the same, and once the 78 pairings run out, the genres I moved back will come up again. My notes can't tell me whether 1,418 and 225 reflect the genres themselves or a few posts that carried the totals. I didn't record how many posts each genre had. I kept the state format the same, but I have no record of whether any Japanese items were skipped or repeated at the moment the order changed. I also haven't measured whether the new order changed Japanese views.

Related