The ML Platform Behind Uber's AI
Michelangelo AI: 우버의 엔드‑투‑엔드 머신러닝 플랫폼
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Image searches directly in markdown!
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live images in markdown, powered by search.
Give your AI a system instruction to embed images using direct-img.link and they just work — no uploads, no APIs, no tokens.



That's it. The image is searched, cached, and served.
Use + to separate words, like Google:
https://direct-img.link/orange+cat
https://direct-img.link/new+york+city
| Query | URL |
|---|---|
| orange cat | /orange+cat |
| spider-man | /spider-man |
| u.s. president | /u.s.+president |
| 90's fashion | /90%27s+fashion |
Add ?i= to serve a later search result instead of the first, e.g. when the first image isn't the one you want:
https://direct-img.link/orange+cat?i=2
i is 1–40, default 1. Higher values serve max-i.webp, which lists each site's range, and other invalid values serve bad.webp?i=02 = ?i=2)i is a different image. ?i=2 is the 2nd working imagei values take a little longer the first time, since the working images before it are downloaded to count themi working images, an AI image is served instead (except on free., which serves bad.webp)i above 10 serves an AI image without searchingi is cached separately. A search's results are kept for 1 hour, so other i values of the same query within that hour don't search again and don't count toward the limit. One that was already counted downloads only its own imageAll queries are normalized before caching and searching:
| Rule | Example | Result |
|---|---|---|
+ and %20 are treated as spaces | orange+cat, orange%20cat | orange cat |
| Lowercased | Orange+Cat | orange cat |
| Trimmed | +orange+cat+ | orange cat |
| Multiple spaces collapsed | orange++cat | orange cat |
| Trailing slashes stripped | orange+cat/ | orange cat |
| Control characters removed | orange\x00cat | orangecat |
| Slashes & Dots rejected | info.php, wp-admin/ | bad.webp served |
| Max length: 200 characters | — | 400 error if exceeded |
spider-man), apostrophes (90's) — passed throughcafé, 日本) — supported via URL encodingLiteral slashes (/) and dots (.) in the URL path are rejected to prevent bot abuse (e.g. info.php or wp-admin/ probes). If your query genuinely contains these characters, you must encode them:
| Query | URL |
|---|---|
| AC/DC | /AC%2FDC ✅ |
| node.js | /node%2Ejs ✅ |
| info.php | /info.php ❌ (rejected) |
| AC/DC | /AC/DC ❌ (rejected) |
?...) other than i (and src on free.) serve bad.webp — /orange+cat?size=large ❌#...) are never sent to the server by browsers%2520 becomes %20 (literal), not a spacebad.webp is served (remembered for 24h). If a search finds fewer than i working images, an AI image of the query is served for the missing ones, and cached like any other image. bad.webp is served if the AI image fails too, or on free.donate.webp is served and nothing is cached, so the query works again once either is backNeed images you can publish? free.direct-img.link only serves images marked free of restrictions (public domain or CC0), so no credit is needed. Same URL format, plus an optional src:



| Param | Values | Default |
|---|---|---|
src | openverse, wikimedia (case-insensitive) | Openverse's results, then Wikimedia's |
i | 1–20 — works the same as on the main site | 1 |
?i=2&src=wikimedia = ?src=wikimedia&i=2)i above 20 serves max-i.webp, which lists each site's range. Other invalid values serve bad.webpi working ones), bad.webp is served (remembered for 24h) instead of an AI image. With a src, only that source's images are searchedbad.webp is served but not cached, so the next request searches againsrc + i + query combination is cached separately. Like the main site, other i values within an hour of a search reuse its results and don't count as searchesfree. (its robots.txt allows everything), so free images embedded in your pages can show up in image search and link previews. The main site and ai. allow only the homepageSources:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗