com um clique
com um clique
Write blog posts and content in Wes Bos's voice and style. Use when drafting blog posts, writing tutorials, creating course descriptions, or producing any written content for wesbos.com.
Create or edit a blog post for wesbos.com
| name | tip |
| description | Create a new Hot Tip for wesbos.com |
When the user asks to create a new tip or edit an existing one. Tips are short-form Hot Tips originally posted to social media (X/Twitter, LinkedIn, TikTok, Instagram, Threads, Bluesky, YouTube Shorts, Reddit, Facebook). The input may be as little as a single social media link.
fetchSocial.ts to pull post data from a social media URL. It reuses the project's fetchers (src/lib/socials/) without needing the app's DB or Cloudflare worker. Run it with:
pnpm fetch-social <url>
It outputs JSON to stdout (status messages go to stderr). Supports: tiktok, twitter (needs X_BEARER_TOKEN env var), linkedin, instagram, bluesky. Key fields vary by platform — look for desc/full_text/headline for the post text and createTime/createdAt/datePublished for the date.listPosts.ts to list recent posts or search by keyword. Run it with:
pnpm list-posts [twitter|bluesky|all] [search query]
Returns a JSON array of { platform, id, url, text, date } objects sorted by date. Supports twitter and bluesky (these have public/API-accessible feeds). Use this to find the post URLs for a tip when the user describes it but doesn't provide links. Search is only supported on twitter — bluesky always returns the latest posts.fetchSocial.ts returns no data (some platforms block server-side fetches for certain posts), fall back to the browser MCP: navigate to the URL, wait for load, snapshot/screenshot to read the content.New tips should be standalone .mdx files in src/content/tips/:
src/content/tips/<slug>.mdx
If the tip has local image or video assets, create a folder instead:
src/content/tips/<slug>/
<slug>.mdx
image1.webp
video.mp4
Use kebab-case for the slug. Keep it concise and descriptive.
---
tags:
- js
- css
date: 2024-11-29T15:44:16.000Z
slug: my-tip-slug
links:
- https://x.com/wesbos/status/123456
- https://www.linkedin.com/posts/wesbos_...
- https://www.tiktok.com/@wesbos/video/123456
- https://www.instagram.com/reel/ABC123/
- https://www.threads.com/@wesbos/post/ABC123
- https://bsky.app/profile/wesbos.com/post/abc123
- https://www.youtube.com/shorts/abc123
---
Required fields:
tags — array of lowercase tags. Common tags: css, js, tools, html, npm, vscode, git, react, ts, frameworks, ai, httpdate — ISO 8601 format. Use the original post date if available, otherwise the current dateslug — kebab-case, must match the filename (without .mdx)Optional fields:
links — array of URLs where the tip was posted on social mediaSearch the web for the tip across these platforms (use the user's handles):
| Platform | Handle / Profile URL |
|---|---|
| X/Twitter | https://x.com/wesbos |
https://www.linkedin.com/in/wesbos | |
| TikTok | https://www.tiktok.com/@wesbos |
https://www.instagram.com/wesbos | |
| Threads | https://www.threads.com/@wesbos |
| Bluesky | https://bsky.app/profile/wesbos.com |
| YouTube | https://www.youtube.com/@WesBos (Shorts) |
https://www.reddit.com/user/wesbos | |
https://www.facebook.com/wesbos.developer |
Search strategy: take a distinctive phrase from the tip and search for it along with site:x.com wesbos, site:linkedin.com wesbos, etc. Add every URL found to the links array. Note that very recent posts (within a few days) may not be indexed by search engines yet — inform the user so they can add links later.
The supported social link types in the codebase are defined in src/utils/parseSocialLinks.ts: twitter, instagram, tiktok, youtube, linkedin, threads, bluesky. Links to other platforms (reddit, facebook) can still be included but won't get rich embeds.
.agent/skills/wes-bos-writing-style/SKILL.md — read it before writing any tip content. Key points: casual authority, Canadian spelling (colour, favourite), short punchy sentences, no AI-sounding filler phrases like "The best part?", "Here's the thing:", "Let's dive in", etc.pnpm content-index — this regenerates src/content/index.ts. The tip won't appear on the site without this.pnpm dev