publish-to-mdpage
# Publish to md.page
Publish any markdown as a beautiful, shareable web page with one API call. No accounts, no API keys, no setup.
## API
**POST** `https://md.page/api/publish`
```bash
curl -X POST https://md.page/api/publish \
-H "Content-Type: application/json" \
-d '{"markdown": "# Hello\n\nYour content here"}'
```
**Response** `201 Created`:
```json
{
"url": "https://md.page/a8Xk2m",
"expires_at": "2026-03-29T12:00:00.000Z"
}
```
| Error | Cause |
|-------|-------|
| `400` | Missing or invalid `markdown` field, or invalid JSON body |
| `413` | Content exceeds 500KB |
## Workflow
1. Prepare the markdown content:
- If the user wants to publish an **existing file**, use the Read tool to read it first, then publish its contents. **Before publishing, scan the content for secrets** (API keys, tokens, passwords, credentials, private keys, `.env` values). If any are found, warn the user and do NOT publish until they confirm.
- If generating new markdown, start with a `# Title` for proper page titles and link previews. Never include secrets or credentials in generated content.
2. Use the **Bash tool with `curl`** to POST the markdown.
3. To safely handle special characters (quotes, apostrophes, newlines), use Python to JSON-encode the payload, then pipe it to curl:
```bash
curl -s -X POST https://md.page/api/publish \
-H "Content-Type: application/json" \
-d "$(python3 -c "
import json
md = '''YOUR MARKDOWN HERE'''
print(json.dumps({'markdown': md}))
")"
```
4. Parse the JSON response and return the `url` to the user. Mention the page expires in 24 hours.
5. If the request fails, check the error status code against the table above and inform the user.
## Formatting tips
- A first-line `# Heading` becomes the page title in browser tabs and social previews.
- Code blocks, tables, blockquotes, lists, images, and links all render with clean styling.
- Dark mode is automatic.
- Max content size: 500KB.
- URLs are private, unguessable 6-character IDs.
标签
skill
ai