Search monocle.com's editorial archive by free-text query (e.g. a city name like Copenhagen), with optional topic and format filters. Returns title, canonical URL, author, publication date, topic + tags, excerpt, and featured-image URL for each matching article. Read-only.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versioncopenhagen-monocle-searchExecute the skills CLI command in your project's root directory to begin installation:
Fetches copenhagen-monocle-search from monocle.com/copenhagen-monocle-search-blusxu and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate copenhagen-monocle-search. Access via /copenhagen-monocle-search in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| name | copenhagen-monocle-search |
| title | Monocle Editorial Search |
| description | >- Search monocle.com's editorial archive by free-text query (e.g. a city name like Copenhagen), with optional topic and format filters. Returns title, canonical URL, author, publication date, topic + tags, excerpt, and featured-image URL for each matching article. Read-only. |
| website | monocle.com |
| category | media |
| tags | - media - editorial - search - wordpress - rss - monocle |
| source | 'browserbase: agent-runtime 2026-05-19' |
| updated | '2026-05-19' |
| recommended_method | api |
| alternative_methods | - method: api rationale: >- Per-query RSS feed at /feed/?s={q}&search_format=post returns 10 items per page with title, link, dc:creator (author), pubDate, multiple <category> tags, excerpt, and full content:encoded — richer than the HTML article-cards (which lack author bylines). No auth, no anti-bot, plain HTTP fetch. 404 on past-end page is a clean termination signal. - method: browser rationale: >- HTML search page at /?s={q}&search_format=post is needed when you want the total-results count or featured-image URLs (both absent from RSS). Also works without stealth or proxies. Use as a complement to RSS rather than a replacement. - method: api rationale: >- Don't probe the WP REST API — every /wp-json/wp/v2/* route returns 404 rest_no_route despite the site advertising it via the Link header. Confirmed disabled at the WordPress level. |
| verified | false |
| proxies | false |
Search the Monocle editorial archive (monocle.com) for articles matching a query — title, canonical URL, author byline, publication date, primary topic, category tags, excerpt, and (optionally) full article body. Optionally filter by topic (Affairs, Design, Travel, ...) and exclude non-editorial formats (radio episodes, city guides, events, partnered content). Read-only — never logs in, never modifies state. Copenhagen is the canonical example query; the skill generalises to any city, place, person, or keyword Monocle has written about.
pubDate from RSS to detect new items since last poll).Monocle is a public WordPress site (Automattic VIP — X-Hacker header) with ElasticPress-backed search (X-Elasticpress-Query: true on responses). The official WP REST API is disabled (/wp-json/wp/v2/posts?search=... → 404 rest_no_route, despite the Link: <https://monocle.com/wp-json/>; rel="https://api.w.org/" header advertising it). However, the per-query RSS feed is enabled and returns richer data than the HTML search page — most notably it includes the <dc:creator> author byline and <content:encoded> full-body HTML, both of which are absent from the HTML article-card markup. Lead with the RSS path; HTML browse is a fallback when you also need featured-image URLs or the total result count.
There is no anti-bot wall: bare browse cloud fetch (no --proxies, no --verified) returns 200 OK from both the HTML and RSS endpoints. Cookie consent is JS-only and never blocks the underlying HTML/XML body.
Build the query URL. Two interchangeable shapes both work:
Query string: https://monocle.com/feed/?s={URL-enc query}&search_format=post[&search_topic={slug}][&paged={N}]
Path style: https://monocle.com/search/{URL-enc query}/feed/?search_format=post[&search_topic={slug}][&paged={N}]
s (or path segment): the search term.
search_format=post: the editorial filter — restricts to WordPress posts (i.e. magazine articles), excluding event, travel_guide, radio_episode, partnered_content. Omit this param to return all formats.
search_topic={slug}: optional single-topic facet (e.g. design, affairs, urbanism, travel-and-restaurants). See the topic-slug list in "Site-Specific Gotchas".
paged=N: 1-indexed page. Each page returns 10 <item> blocks. Walking past the last page returns HTTP 404 — a clean termination signal.
Fetch:
browse cloud fetch "https://monocle.com/feed/?s=copenhagen&search_format=post&paged=1"
No --proxies, no session, no cookies needed. Response is application/rss+xml; charset=UTF-8, ~120-150 KB per page for 10 items including full bodies.
Parse each <item>:
<title> — article title (HTML-entity decode required: e.g. ’ → ').<link> — canonical article URL (https://monocle.com/{topic}/{slug}/).<dc:creator> — author byline (CDATA-wrapped; RSS-only, not in HTML cards).<pubDate> — RFC-2822 timestamp (e.g. Fri, 20 Jun 2025 18:29:50 +0000).<category> (repeated 1-N times) — primary topic comes first, followed by tag slugs. First category is the same value rendered as the topic badge in the HTML.<description> — CDATA-wrapped HTML excerpt (1-2 sentences). Strip the trailing The post <a>...</a> appeared first on... boilerplate.<content:encoded> — CDATA-wrapped full article body HTML. Use only if you need the body; otherwise skip — it's ~10-15 KB per item.Paginate until HTTP 404 is returned by paged=N. Result count is not exposed in RSS — if you need the total up-front, hit the HTML page once (step below) and parse the count selector before walking RSS.
Use when you need featured-image URLs (not in RSS) or the up-front total-results count, or when the RSS feed is unreachable.
Build the URL (same param surface as RSS, no /feed/ segment):
https://monocle.com/?s={URL-enc query}&search_format=post[&search_topic={slug}][&paged={N}]
Or path style: https://monocle.com/search/{query}[/page/{N}/][?search_format=post].
Fetch with browse cloud fetch <url> — no stealth needed. Or drive interactively with browse open <url> if you want screenshots/snapshots for debugging.
Parse the HTML:
<div class="o-search-results__actions"> <p>{N} stories about "{query}"</p> → regex (\d+)\s+stories about\s+["“]([^"”]+)["”].<article id="{POST_ID}" class="c-article-card ...">. The id attribute is the stable WordPress post ID — use it for deduping.span.c-article-card__category a — href is the topic URL, text is the topic name.h3.c-article-card__title a — href is the canonical article URL, text is the title.p.c-article-card__description.ul.c-article-card__meta li — each <li> may begin with an inline SVG decoration; strip inner tags before reading text (e.g. Issue #185, 3 min read). Naive <li>([^<]+)</li> regex skips Issue-# items because of the leading SVG.figure.c-article-card__image img — src and srcset (1x / 2x).posts-pagination; next page is https://monocle.com/search/{query}/page/{N+1}/ (preserves any ?search_format / ?search_topic query params)./wp-json/wp/v2/* route returns {"code":"rest_no_route","status":404}, even though the response headers include X-WP-Total, X-WP-TotalPages, Access-Control-Allow-Headers: X-WP-Nonce, and a Link header pointing to /wp-json/. Don't waste cycles probing alternate REST routes — the site has stripped them at the WordPress level. Use the RSS feed instead.search_topic[] array notation is silently ignored. ?s=copenhagen&search_topic[]=design&search_topic[]=culture returns the unfiltered set (171 results), not the union (the design-only subset is 49). Only single-value search_topic=<slug> filtering works through the URL layer. To collect across multiple topics, issue separate requests per topic and dedupe by post ID (<article id="...").https://monocle.com/?search_format=post — the s={query} param is discarded. Always build URLs directly with both params rather than relying on the in-page filter UI.search_format=post. Monocle's UI calls them "Article" but the underlying WP post-type slug is post. The other four format slugs (event, travel_guide, radio_episode, partnered_content) are not editorial content and should be excluded for an editorials-only query. Omitting search_format returns the union of all five..c-article-card) has no author element. If you need the byline, you must hit the RSS feed (or click through to the individual article page).<media:content> or <enclosure> elements. If you need thumbnails, scrape figure.c-article-card__image img from the HTML page./page/N/) and RSS pagination (?paged=N) return 10 items per page. There is no per-page override (per_page=, posts_per_page=, etc.).HTTP 404 for RSS and a rendered "no results" HTML page for the search route. Use 404 (RSS) or the absence of .c-article-card blocks (HTML) as the loop-termination signal.ul.c-article-card__meta, items like <li><svg>...</svg> Issue #185 </li> will be missed by a <li>([^<]+)</li> regex. Either parse as DOM and read textContent, or use a regex that strips inner <svg>…</svg> first. Read-time items (3 min read) have no leading SVG and parse cleanly.Copenhagen’s for Copenhagen's). Decode before emitting.description carries boilerplate. The RSS <description> ends with <p>The post <a>...</a> appeared first on <a href="https://monocle.com">Monocle</a>.</p> — strip this paragraph for a clean excerpt.content:encoded is large. Each item's full-body HTML is ~10-15 KB. If you only need title + URL + date, parse only the elements you need rather than the full item. For bulk runs, prefer reading the RSS feed once and persisting parsed items rather than re-fetching.search_format): post (Article — editorial), event, travel_guide (City Guide), radio_episode, partnered_content.search_topic, observed from the filter modal's data-value attributes): affairs, architecture, art, arts, aviation, books, business, craft, culture, defence, design, diplomacy, economics, economy, education, entertaining, entertainment, entrepreneurialism, environment, fashion, film, food-drink, furniture, government, health, hospitality, industry, konfekt, manufacturing, media, monocle-films, monocle-radio, music, photography, politics, product-design, property, recipe, residences, retail, shoots, society, soft-power, sport, technology, the-faster-lane, the-monocle-concierge, the-monocle-minute, the-weekend-opener, transport, travel-and-restaurants, urbanism, wine. (The label shown in the filter UI is the title-cased slug with hyphens replaced by spaces.)?s= vs /search/{query} are equivalent. Both forms hit the same handler and produce identical results. Path-style URLs are slightly cleaner for direct linking; query-style is easier to build programmatically.{
"query": "copenhagen",
"format": "post",
"topic": null,
"total_results": 171,
"page": 1,
"items": [
{
"post_id": 195123,
"title": "Why Copenhagen's 3 Days of Design leaves such a lasting impression",
"url": "https://monocle.com/design/3-days-of-design-copenhagen-comment/",
"author": "Kate Lucey",
"published_at": "2025-06-20T18:29:50Z",
"primary_topic": "Design",
"categories": ["Design", "3 days of design", "design fairs"],
"excerpt": "Designers from Tokyo to Porto headed to Copenhagen to rethink what a design fair can be, with thoughtful collaborations and intimate, idea-led showcases.",
"issue": null,
"read_time_minutes": null,
"image_url": "https://monocle.com/wp-content/uploads/2025/06/EIS_20250617_1313_CROP.jpg?w=745"
},
{
"post_id": 189311,
"title": "Copenhagen's latest park demonstrates the virtues of having no kids on the block",
"url": "https://monocle.com/affairs/urbanism/copenhagens-adult-only-opera-park/",
"author": "Carlota Rebelo",
"published_at": "2025-06-15T09:00:00Z",
"primary_topic": "Urbanism",
"categories": ["Urbanism", "parks", "denmark"],
"excerpt": "Inside the sanctuary of Opera Park, a child-free green space designed strictly for grown-ups.",
"issue": "185",
"read_time_minutes": 3,
"image_url": "https://monocle.com/wp-content/uploads/2025/06/Monocle_Skip_Final_LargerBG_thumb.jpg?w=745"
}
],
"next_page": "https://monocle.com/feed/?s=copenhagen&search_format=post&paged=2"
}
Outcome shapes:
// No results for the query
{ "query": "asdfqwerzxcv", "format": "post", "total_results": 0, "items": [] }
// Past last page (RSS 404)
{ "query": "copenhagen", "format": "post", "page": 99, "items": [], "end_of_results": true }
// Topic filter applied
{ "query": "copenhagen", "format": "post", "topic": "design", "total_results": 49, "items": [...] }
// All formats (omit search_format)
{ "query": "copenhagen", "format": null, "total_results": 352, "items": [...] }
Notes on the JSON above: issue and read_time_minutes come from the HTML ul.c-article-card__meta block and are null on items not tied to a print issue (e.g. web-only comment pieces — id=195123 above is one). image_url is HTML-only; pure-RSS callers will see image_url: null. author is RSS-only; pure-HTML callers will see author: null. For a complete record, run the RSS feed and HTML page once each and merge on post_id (the <article id> attribute on HTML matches the WP post ID; RSS items don't expose the ID directly — match by canonical URL slug).
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
jezweb/claude-skills
kostja94/marketing-skills
aaaaqwq/claude-code-skills
dengineproblem/agents-monorepo
agentbay-ai/agentbay-skills
glebis/claude-skills
Keeps context tight: copenhagen-monocle-search is the kind of skill you can hand to a new teammate without a long onboarding doc.
Solid pick for teams standardizing on skills: copenhagen-monocle-search is focused, and the summary matches what you get after install.
Solid pick for teams standardizing on skills: copenhagen-monocle-search is focused, and the summary matches what you get after install.
I recommend copenhagen-monocle-search for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
copenhagen-monocle-search has been reliable in day-to-day use. Documentation quality is above average for community skills.
copenhagen-monocle-search is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
Registry listing for copenhagen-monocle-search matched our evaluation — installs cleanly and behaves as described in the markdown.
We added copenhagen-monocle-search from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
We added copenhagen-monocle-search from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
copenhagen-monocle-search fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
showing 1-10 of 68