Saved Markdown

v1.0.4

Publish content to saved.md and return a public shareable URL. Use when the user wants to publish, host, or share a Markdown, HTML, or JSX page via saved.md,...

0· 222·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for anboias/saved-markdown.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Saved Markdown" (anboias/saved-markdown) from ClawHub.
Skill page: https://clawhub.ai/anboias/saved-markdown
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install saved-markdown

ClawHub CLI

Package manager switcher

npx clawhub@latest install saved-markdown
Security Scan
Capability signals
CryptoCan make purchases
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description, the POST/GET saved.md API endpoints in SKILL.md/CLAUDE.md, and templates all align: this is a publishing/templating skill for saved.md. There are no unrelated env vars, binaries, or external hosts requested.
Instruction Scope
Runtime instructions explicitly read and modify skill-local files (templates/, templates/INDEX.md) and require appending metadata to entries.json for every publish. They also instruct network calls only to saved.md's API (POST/GET). This file-read/write behavior is coherent with a template/publishing skill but means user content and metadata will be persisted in the skill repository — review that if you expect no local traces.
Install Mechanism
Instruction-only skill with no install spec or external downloads. No code is executed from third-party URLs. Lowest-risk install profile.
Credentials
The skill requests no environment variables or credentials and its documented network calls are limited to saved.md. There are no disproportionate credential asks.
Persistence & Privilege
always:false (normal). The skill's instructions cause persistent writes inside the skill (templates and entries.json). Writing its own templates/logs is expected for this use-case, but it does mean content and metadata (including any delete phrase or titles) may remain in the agent/skill storage.
Assessment
This skill appears to do what it says: it generates and publishes pages to https://saved.md and keeps template files and a local entries.json log. Before installing, consider: (1) saved.md is the only external endpoint — ensure you trust that service for any content you publish; (2) publishes and created templates are persisted in the skill repository (entries.json and templates/) and may contain user content or delete phrases — if that concerns you, use the 'local-only' mode or review/clean entries.json and template files after publishing; (3) SKILL.md references a preferred script (python scripts/publish.py) that is not present in the provided files — the direct API method is the fallback; (4) if you need stronger guarantees (no local persistence, audit logs, or different delete semantics) ask the author for clarity or a version that does not write user data to the skill filesystem.

Like a lobster shell, security has layers — review code before you run it.

latestvk971ha37sepkw1qgc2vnrfsma58514pm
222downloads
0stars
5versions
Updated 1w ago
v1.0.4
MIT-0

saved-markdown

Publish immutable, anonymous pages to https://saved.md. Pages can be Markdown (with chart widgets), HTML (sanitized static pages with CSS), or JSX (sandboxed interactive React).


Core principle

Frontmatter decides when to use this skill.
Everything below defines how to execute once triggered.


Workflow modes

After triggering, pick the mode that best matches user intent. If unclear, default to one-shot and mention that other modes exist.

ModeWhenWhat happens
One-shotQuick reports, logs, exportsGenerate → publish → return URL
InteractiveResumes, landing pages, anything user-facingGenerate → show draft → user edits → publish
Local-onlyUser explicitly wants no publishingSave .md / .html / .jsx, no API call
EnhanceExisting markdown needs charts or polishRead → enhance → publish new URL

Pages are immutable — edits always produce a new URL.


Execution flow (high level)

  1. Decide mode
  2. Decide starting point (template scaffold or freehand)
  3. Decide format (Markdown / HTML / JSX)
  4. Generate or transform content
  5. Validate
  6. Publish (unless local-only)

Starting point decision

1) User explicitly asks for a scaffold

  • Read templates/INDEX.md
  • Show relevant templates (filter by format if known)
  • Let user choose
  • Load selected template

2) User wants a scaffold from a screenshot / description

  • Follow templates/create-template.md
  • Create a new template file under:
    • templates/markdowns/ for markdown
    • templates/htmls/ for html
    • templates/jsx/ for jsx
  • Update templates/INDEX.md
  • Then continue like a normal template flow

3) User wants to enhance existing markdown

  • Analyze content
  • Identify visualization opportunities:
    • trends → line
    • categories → bar
    • proportions → pie
    • relationships → scatter
  • Add multiple charts where justified
  • Keep original structure intact
  • Publish as a new page

4) User describes content (no scaffold mentioned)

  • Match content type using routing table
  • Load corresponding scaffold template
  • Generate content from it

5) Nothing matches

  • Generate freehand:
    • title
    • structured body
    • optional footer

Format decision

FormatUse whencontentType
MarkdownReports, docs, dashboards, resumes, charts"markdown" (or omit)
HTMLLayout-heavy pages, visual polish, static UI"html"
JSXInteractivity, filters, state, dynamic charts"jsx"

Critical rule

If using HTML or JSX, always explicitly set contentType.
Otherwise the page renders incorrectly.


Content-type routing

Use this when generating structured Markdown or HTML content.

Content typeTriggersTemplate
Resume / CVresume, CV, profileresume-cv.md
Reportreport, analysis, findingsreport.md
Company profilecompany, about, servicescompany-profile.md
DashboardKPIs, metrics, scorecarddashboard-metrics.md
Documentationdocs, guide, manualdocumentation-guide.md
Proposalproposal, pitch, quoteproposal-pitch.md
Newsletternewsletter, digest, changelognewsletter-update.md
Portfolioportfolio, projectsportfolio-showcase.md
Eventevent, invitation, RSVPevent-invitation.md
Genericeverything elsefreehand

Golden rule

Never invent content to fill sections.
Omit anything without real data.


Template scaffold workflow

When a template is selected:

  1. Read template file from templates/
  2. Show the scaffold skeleton to the user in a code block
  3. Ask what to change:
    • content
    • sections
    • colors
  4. Replace placeholders with user data and remove irrelevant sections
  5. Validate
  6. Publish

If the user already provided full content, skip template browsing and go straight to generation.


Markdown enhancement (charts)

When enhancing markdown:

  • Add charts using markdown-ui-widget
  • Use multiple charts when data supports it
  • Ensure:
    • numeric values are plain numbers (no $, %, K, etc.)
    • units go in labels, not values

Template guide: templates/charts.md


Validation checklist

Before publishing:

  • Content under 100 KB
  • Correct contentType
  • Charts valid (if markdown)
  • HTML sanitized (no scripts)
  • JSX:
    • only allowed imports (react, react-dom)
    • no external packages
  • No placeholder text left

Template guide: templates/validation.md


Publishing

Preferred (script)

python scripts/publish.py --file <path> --content-type <markdown|html|jsx> --title "<title>"

Direct API contract (source-of-truth behavior)

Use POST https://saved.md/api/pages with JSON.

Required/expected payload fields:

  • markdown (string): page source body for markdown, html, or jsx pages
  • contentType (string): "markdown", "html", or "jsx"

Example payload:

{
  "markdown": "# My Page\n\nPublished from skill",
  "contentType": "markdown"
}

For markdown pages, contentType may be omitted, but setting it explicitly is recommended for consistency.

Remixing an existing page (immutable URLs)

When users request edits to an existing saved.md URL:

  1. Parse page id from URL
  2. GET /api/pages/{id} and read markdown + contentType
  3. Apply requested edits to the returned markdown
  4. POST /api/pages using the edited markdown and the same contentType
  5. Return the new URL (old URL remains unchanged)

Never imply in-place updates are possible.

Comments

Loading comments...