agent guide · DevMeme field guide
Find a Programming Meme with a Browser
Direct answer
Open https://devme.me/?q={encoded query}. The first HTML response contains query-specific cards. Use a browser when the workflow needs interactive query changes, then open the selected canonical /meme/{slug} page before extracting context or attribution.
Capability and version
Public HTML search — JavaScript required only for interactive changes
Supported surface
This guide covers public DevMeme HTML, the search state stored in ?q=, canonical meme pages, category and tag pages, /rss.xml, and /sitemap.xml. The internal JSON route is not a public API.
Authentication
Public search and public meme pages do not require authentication. Do not sign in solely to discover or cite a meme. Account-bound profile and sync surfaces are separate from this workflow.
Prerequisites
- An HTTP client for the initial result page, or a JavaScript browser for interactive changes.
- A desktop user agent when the workflow depends on the selectors below.
- One concise query derived from the user’s tool, error, phrase, language, or work situation.
Steps
- Encode the shortest useful clue: a tool, error, phrase, language, or work situation.
- Open
https://devme.me/?q={encoded query}with a desktop user agent. - Read the server-rendered result grid. If the query must change, enter it into
#search-input. - After an interactive change, wait for the grid’s child list to change and for the address bar to contain the same
qvalue. - Read visible anchors under
#meme-gridwhose paths begin with/meme/. - Open the selected result and retain its canonical URL, title, visible explanation, source link when present, and relevant categories or tags.
A mobile browser user agent can be redirected to compact Discover with the same query. Use a desktop context when your automation depends on the selectors in this contract.
Copyable example
await page.goto('https://devme.me/', {
waitUntil: 'domcontentloaded',
});
const input = page.locator('#search-input');
const gridChanged = page.evaluate(() => new Promise((resolve, reject) => {
const grid = document.querySelector('#meme-grid');
if (!grid) return reject(new Error('DevMeme result grid was not found'));
const observer = new MutationObserver(() => {
observer.disconnect();
resolve(true);
});
observer.observe(grid, { childList: true });
}));
await input.fill('docker');
await gridChanged;
await page.waitForFunction(() => (
new URL(location.href).searchParams.get('q') === 'docker'
));
const firstResult = page.locator('#meme-grid a[href^="/meme/"]').first();
await firstResult.waitFor();
const canonicalPath = await firstResult.getAttribute('href');
The example uses the browser-visible interface. Do not replace it with a direct call to an internal /api/ route.
URL and response contract
- Search state:
/?q={URL-encoded text}. - Search field:
#search-input. - Result container:
#meme-grid. - Stable selected item:
/meme/{slug}. - Search URLs are not sitemap entries or canonical citation targets.
- The first HTML response contains query-specific cards. Later query changes and continuation are client-side states.
For a known canonical example, open Ancient Debugging Wisdom from Confucius.
Expected result
The browser shows query-specific meme cards, the address bar contains ?q=docker, and the selected card exposes a relative /meme/{slug} link that resolves to one canonical public meme page.
Limits, caching, retries, and errors
Query pages are utility requests and are not eligible for the shared anonymous HTML cache. Results can change with the catalog and search settings. If the document or search service returns 503, retry with bounded backoff rather than treating the default or an empty grid as a valid answer.
Use RSS discovery when the job is to monitor a fixed recent window rather than answer a keyword query. Use categories or tags when a stable topic directory is more appropriate than ranked search.
Attribution rules
Use the canonical meme URL and its visible title. Preserve a visible original-source link when the page provides one, and do not state that DevMeme owns a third-party image merely because the page is indexed there.
Related resources
- How to Search Programming MemesUse DevMeme search, understand its URL and browser state, refine the visible gallery, and troubleshoot common result issues.
- Browse Programming Memes by Category and TagUse DevMeme categories for broad engineering areas and tags for specific tools, errors, languages, and recurring themes.
- How to Save Programming MemesSave a DevMeme item in your browser, find it in the Saved profile collection, and understand when account sync applies.
- Discover New Programming Memes with RSSRead DevMeme's unauthenticated RSS 2.0 feed, handle its 50-item index order and cache headers, and retry truthful 503 failures.
Sources
- DevMeme public gallery and search official-product · checked 2026-07-28
- DevMeme committed sitemap official-product · checked 2026-07-16
- DevMeme RSS feed official-product · checked 2026-07-16
Real reader questions
- Can an agent use the search URL without a JavaScript browser?
- Yes for the initial query-specific result page. Use a JavaScript browser when the workflow must edit the query, change browser-local search settings, continue paging, or exercise navigation.
- Is /api/memes a supported public agent API?
- No. It is an internal application route without a frozen public DTO, CORS contract, rate-limit policy, or version guarantee. Use the public browser workflow, canonical pages, RSS, or sitemap.
- Which URL should an agent retain after choosing a result?
- Retain the canonical /meme/{slug} URL from the visible result link. The /?q= URL records a search task, not the stable identity of the selected meme.
- How should an agent detect that the gallery has updated?
- Confirm that the address bar contains the requested q value, read the visible result count, and then inspect the /meme/ links. When the agent edits the field, wait for the grid child list to change.
- Does DevMeme search order stay fixed?
- No. Results depend on the current index and the browser's relevance, newest, or oldest setting. Treat order as a discovery aid rather than a durable ranking.