Skip to content(if available)orjump to list(if available)

WikiTok

WikiTok

230 comments

·February 4, 2025

aizk

Hi! I'm the dev here! I built this on a whim at after seeing someone ask for it on twitter. It was 12:30 at night but I couldn't pass down the opportunity to build it.

The code is very simple, there's no backend at all actually, I believe because wikipedia's api is very permissive and you can just make the requests in the frontend. So you just simply request random articles, get some snippets, and the image attached!

I used Claude and cursor do 90% of the heavy lifting, so I am positive there's plenty of room for optimizations. But right now as it stands, it's quite fun to play with, even without anything very sophisticated.

Here is the source code. https://github.com/IsaacGemal/wikitok

tomashubelbauer

Shoutout to APIs that do not enforce CORS preventing requests be made from FE without a need for a BE. There's so many toy apps I started building that would have just worked if this was more common, but they have CORS restrictions requiring me to spin up a BE which for many one-off tools and personal tools just isn't worth doing and maintaining. Same with OAuth.

egonschiele

nit: same-origin policy is the restriction. CORS isn't the restriction, it's the thing that helps you. CORS is the solution, not the problem.

ahoka

Yes, exactly. People who want to "disable" it have no idea how the web works. Developers have all kinds of misconceptions about what it is, I even heard someone saying it disallows backends to call their API.

bawolff

And in particular CORS is the region you can read the wikkpedia api cross origin (unless you are doing jsonp, but hopefully they are using CORS because it is better in every way)

tasuki

There's many services to solve this pain point. I've used https://allorigins.win/ in the past.

reynaldi

These services are called CORS proxies! I recently made an updated list of the currently working free ones here: https://gist.github.com/reynaldichernando/eab9c4e31e30677f17...

Do note that these proxies are for testing only, and they are heavily rate limited.

For production use case, you might consider using Corsfix (https://corsfix.com)

(I am affiliated with Corsfix)

aizk

Oh this looks neat!

Klonoar

I kind of miss the era of JSON-P supported APIs. Feels like such a weird little moment in time.

aizk

The only caveat I feel is that the speed of the API is definitely not comparable to something more purpose built for this kind of scale, but overall I'm happy as it works well enough that I don't have to think about it too hard.

mikedelfino

I think Github Actions could be used for scheduled builds, so that the initial load would have random articles right in. Further requests could then be made in advance so users would not notice any delay from the API.

bawolff

Could you just preload the next few entries before the user swipes?

jumploops

Shameless plug for Magic Loops -- we run code in isolated MicroVMs and students love our lack of CORS enforcement, as the APIs they build can be easily integrated into their hackathon projects :)

aizk

Tell me more?

qudat

Many platforms can enable proxying through their service to avoid CORS issues: https://pico.sh/pgs#proxy-to-another-service

anon3459

Using nextjs with a serverless function acting as a proxy is pretty simple

Liquidor

Don't you mean Node.js ? I don't see why you would use a full Next.js framework for just a reverse proxy.

nathansherburn

A great way to get around this is with an edge function from deno deploy.

bazmattaz

This is awesome. I can imagine you likely are not interested in building one but this site could hugely benefit from a recommendations algorithm.

For example an algorithm could understand how much a user really enjoys a certain article and then starts sending the users down a rabbit hole of similar and tangential content. Designing, building and maintaining an algorithm like this though is no small feat.

aizk

I would not be surprised if Claude + Openai's reasoning models could develop a simple rudimentary algorithm that would work. Of course it wouldn't be as sophisticated as something like TikTok and would require a lot of fine tuning, but it's definitely possible.

singpolyma3

Or even use an LLM directly "user liked articles with these titles, what others might they like"

t_mann

+ keeping it in the front end with local storage

Aeolun

You are joking right?

smus

why would it be a joke?

aizk

Not to plug myself too shamelessly, but here's my resume if anyone is interested :) https://www.aizk.sh/Isaac's%20Resume.pdf

Narciss

This is far from a shameless plug, you built the thing! V nice love the idea.

aizk

I think tomorrow I'm going to write a detailed blog of exactly what I did building out WikiTok. One last little bit of info on this subject (and at the end of it I'll say that I'm open to work or whatever).

preciousoo

I remember seeing that tweet, I thought it was the craziest coincidence ever when I saw this on the front page. I guess it’s not haha

aizk

As soon as I saw the tweet, I realized the opportunity was there waiting for me. And also, twitter's algorithm is REALLY good at pairing the right tweets to one another, so many people saw those two tweets side by side, which added to the humor.

echelon

Next steps: ingest these offline and process them into quick 30 second videos with the most salient facts. TTS narration, additional images. Generate stock video using the images in the API and perhaps text-to-video. That would be a killer app.

Bonus: come up with a heuristic or model to filter out or de-rank universally uninteresting articles.

larodi

Kudos for the anthropological experiment. Indeed makes you wonder what's there about the sliding that makes it so entertaining.

I suggest you add some sort of summary that flows, so to add certain level of animation. Some articles have actual sound and animations to them.

Great inspiration!

viraptor

> Indeed makes you wonder what's there about the sliding that makes it so entertaining.

Check out "skinner box" - the fact that you may get something interesting or may not is more exciting than just getting something good. They're lootboxes of information/entertainment.

larodi

It’s lottery indeed, you are right.

piloto_ciego

This is freaking really cool, I’m at work browsing HN instead of doing actual work, but I’ll look into it more later, but the “killer feature” I think would be to add audio narration do this, or a quick summary, I would scroll that all day…

Awesome job!

rzz3

This is super super cool. I’ll tell you the single barrier to me actually using this regularly—it needs an algorithm. It would be so cool (and a good learning project) to even build the simplest of recommendation algorithms behind it based on my likes, dislikes, bookmarks, and whether I click “read more”.

xhrpost

Wonder what it would take to add a simple algorithm to this. Part of what makes short media apps (dangerously) addictive is that they eventually learn what you like and feed you more of that. An app like this with such an algo could help with the stickiness (and presumably get us away from the other apps at least for a little bit). "Oh this person likes science stuff, let's feed them more, oh they specifically like stuff related to quantum mechanics, let's place a summary paragraph from a related page topic in there."

aizk

On one hand I am thinking about what a very basic algorithm would like (maybe even just categories I might do) and maybe how it would make people happy.

On the other hand, I'm not sure exactly the details of wikipedia's api TOS. Also as it stands this website is entirely in the frontend at the moment, and I'm enjoying just scaffolding out what I can with limited a more limited set of tools to speak.

I realize now the suffix "tok" implies a crazy ML algo that is trained every single movement, click, tap, and pause you make, but I don't think I really want that.

codingdave

It should be possible to keep this all front-end, even with some basic algorithm for the searches - just use localStorage. That keep things simple and resolve privacy concerns, as people own their data and can delete them any time.

aizk

Update - I chatted with some devs at wikipedia, and they confirmed I'm not hitting their servers hard, which is great.

Aeolun

Compared to default wikipedia traffic this should be a drop in a bucket right?

bawolff

> On the other hand, I'm not sure exactly the details of wikipedia's api TOS

https://www.mediawiki.org/wiki/API:Etiquette

You are basically allowed to do whatever as long as it doesn't cause an operational issue, you dont have too many requests in-flight at one time , and you put contact info in the user-agent or Api-User-Agent header. (Adding a unique api-user-agent header is probably the most important requirement, since if it does cause problems it lets operations team easily see what is happening)

I think the wiktok thing is exactly the sort of thing wikimedia folks hope people will use the api to create.

valec

keep user profiles maybe with cookies or by encouraging sign-ups and then use NMF

https://en.wikipedia.org/wiki/Non-negative_matrix_factorizat...

layman51

About the “Tok” suffix, I also think that while it has the algorithm connotations, it also has been used a lot to describe communities that have formed on TikTok. For example, BookTok (where some bookstores have started to pay attention to how people on TikTok can make some books popular again seemingly on a whim) or WitchTok.

l3x4ur1n

StickTok where people show cool sticks they found in the nature!

keerthiko

browser-store and cookies, among other tools, provide nice front-end-only persistent storage for holding things like recommendation weights/scoring matrices. maybe a simple algorithm that can evaluate down from a few bytes stored in weights might be all the more elegant.

aDyslecticCrow

For each 10 seconds of reading, increment the tags on the current article as "favoured". Then, poll randomly from those tags for the next recommended article. Add some logarithms of division to prevent the tags from infinite scaling.

epolanski

Can you tell that YouTube reels engineers? Because their Algo is a disaster where I'm only fed Sopranos and NBA content. I don't hate it, but god I have so many subscriptions (civil aviation, personal finance, etc) that I never ever see on my feed.

istjohn

Do you mind expanding on the last sentence?

aDyslecticCrow

I misspelt the last sentence a bit. I meant division "or" logarithm.

Basically, we have an unbounded counter that is gonna start breaking things. So we need to normalize it to a percentage score (by dividing it by the total favoured count across all tags), or pass it through a logarithm to bound it.

This approach only works if all content is accurately tagged, which works basically nowhere on the internet except Wikipedia.

TZubiri

The relatedness of articles is already baked in with blue wiki links too. So it shouldn't be too hard to make something that just looks for neighbors.

Now, something that learns that if you like X you might like Y, even if they are disconnected. Is closer to the dystopic ad maximizing algorithm of TikTok et al.

easterncalculus

That's what I was thinking this might have already. Maybe this could get insights from the articles linked from the ones you like too? Sort of like https://www.sixdegreesofwikipedia.com/

mvieira38

This would eventually collapse to people reading articles they do not actually like (i.e. get happiness from reading), I think, maybe tragic history facts or something like that? The truth of social media harm is that it's more about humans than the algorithms themselves. Humans just tend to engage more with negative emotions. Even IRL we tend to look for intrigue and negative interactions, just look at the people who stay with toxic partners even with no financial ties, or even friend groups who turn into dysfunctional gossip fests. The only way to avoid this is by actively fighting against this tendency, and having no algorithm at all in an application helps.

marci

RHAAS

Rabbit-holing as a service

belinder

tvtropes did it first

aizk

Oh I just looked, sadly tv tropes doesn't have an API. I'd love to work off their data but that would be a bit more involved.

marci

Where? I thought it was just the wikipedia of tv tropes.

tbossanova

I would prefer at least an option to keep it on random mode. Both for the occasional exposure to cool stuff and to make it less rabbit-holey.

hummuscience

Since its text, especially text with links to other articles, there is no need for tags.

If I had a clue how to do this (sorry, just a neuroscientist), I would probably create "communities" of pages on a network graph and weight the traversal across the graph network based on pages that the person liked (or spend X time on before).

ya1sec

Awesome. I have a project with a similar tik-tok-esque philosophy for serving all sorts of noncommercial content from the web. The interface is one button and a random page is embedded in an iframe. I use random wikipedia pages as a fallback in case my algorithm returns a dead page.

I call it moonjump: https://moonjump.app/

aizk

No way, StumbleUpon? I remember that site when I was a kid. Good memories.

sgt

I tried that and I was immediately taken to "the best place in the world to have herpes". I didn't click.

ya1sec

hahahha. try the search engine - it uses the marginalia API and will select a random result to embed. maybe don't search for herpes though.

therealfiona

This is awesome. I've been passively looking for a Stumbleupon replacement, but never stumble upon it. Thank you for posting here. You have given me back a slice of old internet.

Tijdreiziger

Pretty nice! Reminds me of StumbleUpon.

ya1sec

Yeah, pretty similar to StumbleUpon. Right now the links are sourced from a handful of are.na channels and some other collections of content. I plan on warehousing this data and tagging it such that users can configure categories of sites that they'd like to stumble upon. HN submissions are mixed into the algorithm as well.

extraduder_ire

Cool. I immediately recognized the melonking loading gif.

duxup

I like the idea, but one thing about Wikipedia is that with technical or granular topics it approaches things in a focused way. A specific molecular biology term's page isn't there to explain exactly how it fits into a larger biology topic. It makes random pages difficult to glean information from.

Even wikipedia articles I understand, more on computer topics, fall into the category of "the only people who understand this page are people who ... already understand it / don't need to read this".

Granted sometimes the social media context is kinda opaque, but usually "man fall down it funny" is pretty universal.

myself248

Math articles are excruciatingly bad on this. I find myself setting the language to "simple english" and it helps.

duxup

Wikipedia math articles all remind me of what i learned in High School, that math is absolutely the worst to learn from someone who "just gets it" as often those folks have no concept how someone else might not "just get it". I suspect the wikipiedia articles are written by folks who "just get it".

hnuser123456

I'm around calc 2 level, and spent some time learning ANN architectures, but it's taken a very long time to increase my ability to parse the more arcane topics since graduating.

For example, this[1] is something I'd like to be able to just glance over and know all the applications and appreciate the beauty... but it's very hard to prevent my eyes from glossing over. Maybe someone has a youtube video on the topic that makes it easier to catch up.

https://en.wikipedia.org/wiki/Lp_space

wwweb

A wiki (or any encyclopedia, for that matter) is not meant to be an introduction or a HOWTO.

layman51

Some other commenters have offered the idea of an algorithm to steer the randomness of the articles. I wonder if an algorithm would help with this issue of having random articles be too technical for you even though you are interested in the larger topic.

TZubiri

>"the only people who understand this page are people who ... already understand it / don't need to read this".

That is provably false

duxup

I like to think of it as amusingly “dramatic” rather than false. ;)

Way back when I was in college and the internet was new-ish. There were a few places you could ask math questions. A classmate of mine found that if he just asked a question online he would never get any responses. So what he would do is add some false generalizations in his question.

In doing that he would be inundated with people answering his question, even if just to prove him wrong.

TZubiri

I don't think it's relevant in this case. But it's a well known internet law

https://meta.wikimedia.org/wiki/Cunningham%27s_Law

Matthyze

Wikipedia is useful for reference, but not education. Not sure whether that's intentional.

joshuahedlund

Maybe pairing this with an LLM could be useful here?

doctoboggan

This, plus an AI generated voice reading a TikTok-creator style catchy summary, plus TikTok's actual algorithm for surfacing content would actually make a decent app I believe.

EDIT: Also the name should be WikTok instead of WikiTok.

mikedelfino

At this point, you could create short videos with relevant images and accompanying audio, post them on TikTok, and profit.

ailef

I've built something similar a few years ago, combining Wikipedia content and open domain pictures/videos to create long form videos automatically. Uploaded a bunch on YouTube as well. Wrote a blog post in case anyone is interested: http://ailef.tech/2020/04/29/turn-any-wikipedia-article-into...

CaptainFever

Also, the voiceover should be over some Minecraft parkour or Subway Surfers.

Like this: https://pdftobrainrot.org/

ptojr

I second this! A voice-over would be very nice

tbossanova

I personally would hate it, but I can just turn sound off so no reason not to do it.

null

[deleted]

srameshc

I just admire how some people can build simple things. I see so many from simple games to visualizations to many other kinds on HN here. Hopefully someday I will be able to think of something simple and showcase here.

brianstrimp

Extra bonus for just putting it out there with a Github link.

Instead of landing page, login, "just $4/month or $20/year" with a "Show HN" and everybody patting them on the back for a "successful launch".

rchaud

Don't forget the growth hacker clasic "sign up for the wait list to access the private beta" and "join the community on Discord".

vunderba

The author is refreshingly transparent about the inspiration for the project saying, "I built this on a whim at after seeing someone ask for it on twitter."

Who knows, maybe you'll stumble upon sth to build in the same way.

aizk

Thank you! I've built a lot of apps, and I've gone viral a fair number of times, but I haven't done both at the same time.

I can pinpoint to you the exact tweet (well it's technically a retweet) and you can see what gave me the inspiration. For quite a lot of people the two tweets showed up side by side, which is even funnier.

https://x.com/rauchg/status/1886807959340245137

odirf

These simple ideas can be implemented by AI (like this) Unfortunately, this makes it lose some of its charm.

zavg

I think that the project has a potential.

I am a big fun of Wikipedia and sometimes TikTok (a "guilty pleasure"). I would be happy to have an app/web site like this but with

- more smart feed based on your activity/attention (was mentioned in other comments);

- maybe more fancy way to present information (not sure if it is feasible to implement). Currently just a text snippet and image do not seem like super engaging.

arrowsmith

How is this different from Wikipedia’s own “random article” feature?

f1shy

Good question: i had that thought for a second. But the I realized that for me, Incan imagine killing time here, but not in the random page. It is an image and a short text which allows to decide fast if it is interesting or not.

I used to take a technical dictionary, and read random articles when bored. So I tried with random wiki, but just didn’t work. I will try this and I can already say, it will work.

j3s

it looks and feels completely different, for one thing

guessmyname

Your question doesn’t quite make sense.

It sounds like you’re suggesting the two web pages are identical, just on different domains, but they’re obviously completely different.

A better way to phrase your question would be: "Why would a TikTok-style (infinite scrolling) website for browsing Wikipedia articles appeal to today’s internet users?"

LVB

It’s a reasonable question, and one I had myself. Of course the UX is different, but that is self evident and we don’t need to be pedantic. What’s not obvious is whether this is wrapping the existing RandomPage API, filtering it, doing some sort of prediction/recommendation, etc.

tbossanova

So perhaps your question is “how does this choose articles differently from wikipedias own random page?”? Which I also wondered.

arrowsmith

> we don’t need to be pedantic

You must be new to HN

redcobra762

The question is fine; once you stop interpreting the words literally, you can clearly infer the question to be about substance rather than numerical identity.

> How is this (meaningfully) different from Wikipedia’s own “random article” feature?

dangrape123

[flagged]

pockmarked19

> Your question doesn’t quite make sense.

Agreed, yet it is the standard question most people throw out for any unfamiliar idea. God forbid they have to form a single thought to grok something…although more charitably it is a form of “why should I care?”.

Your rephrasing is a bit different, it discards the selfish aspect of the question which I think is not correct.

Funnily though, anyone asking why they should care probably shouldn’t care yet.

pockmarked19

Nice to know HNers don’t read past the first word. Can’t say I am surprised.

AzariaK

Nice site!

I wanted to show a similar site I made a few years ago. Might update it now:

https://wikisurfer.pages.dev/

lucaslazarus

This is great! Now all that's left is plugging this into some text-to-speech and a subway surfers/minecraft parkour background

hao1300

Awesome idea. You inspired me to build something similar for Steam: https://steamtok.com/