bearblog
Create and manage blog posts on Bear Blog (bearblog.dev). Supports extended Markdown, custom attributes, and browser-based publishing.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install openclaw-skills-bearblog
Repository
Skill path: skills/azade-c/bearblog
Create and manage blog posts on Bear Blog (bearblog.dev). Supports extended Markdown, custom attributes, and browser-based publishing.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: openclaw.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install bearblog into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/openclaw/skills before adding bearblog to shared team environments
- Use bearblog for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: bearblog
description: Create and manage blog posts on Bear Blog (bearblog.dev). Supports extended Markdown, custom attributes, and browser-based publishing.
metadata: {"clawdbot":{"emoji":"๐ป","homepage":"https://bearblog.dev","requires":{"config":["browser.enabled"]}}}
---
# Bear Blog Skill
Create, edit, and manage posts on [Bear Blog](https://bearblog.dev) โ a minimal, fast blogging platform.
## Authentication
Bear Blog requires browser-based authentication. Log in once via the browser tool, and cookies will persist.
```
browser action:navigate url:https://bearblog.dev/accounts/login/
```
## Creating a Post
### Step 1: Navigate to the post editor
```
browser action:navigate url:https://bearblog.dev/<subdomain>/dashboard/posts/new/
```
### Step 2: Fill the editor
Bear Blog uses a **plain text header format**.
The editor fields are:
- `div#header_content` (contenteditable): attributes (one per line)
- `textarea#body_content`: Markdown body
**Verified:** use `fill`/`type` on those two fields, then click **Publish** (or **Save as draft**). No `evaluate` needed.
**Header format:**
```
title: Your Post Title
link: custom-slug
published_date: 2026-01-05 14:00
tags: tag1, tag2, tag3
make_discoverable: true
is_page: false
class_name: custom-css-class
meta_description: SEO description for the post
meta_image: https://example.com/image.jpg
lang: en
canonical_url: https://original-source.com/post
alias: alternative-url
```
**Body format:** Standard Markdown with extensions (see below).
The separator `___` (three underscores) is used in templates to separate header from body.
### Step 3: Publish
Click the publish button or submit the form with `publish: true`.
## Post Attributes Reference
| Attribute | Description | Example |
|-----------|-------------|---------|
| `title` | Post title (required) | `title: My Post` |
| `link` | Custom URL slug | `link: my-custom-url` |
| `published_date` | Publication date/time | `published_date: 2026-01-05 14:30` |
| `tags` | Comma-separated tags | `tags: tech, ai, coding` |
| `make_discoverable` | Show in discovery feed | `make_discoverable: true` |
| `is_page` | Static page vs blog post | `is_page: false` |
| `class_name` | Custom CSS class (slugified) | `class_name: featured` |
| `meta_description` | SEO meta description | `meta_description: A post about...` |
| `meta_image` | Open Graph image URL | `meta_image: https://...` |
| `lang` | Language code | `lang: fr` |
| `canonical_url` | Canonical URL for SEO | `canonical_url: https://...` |
| `alias` | Alternative URL path | `alias: old-url` |
## Extended Markdown
Bear Blog uses [Mistune](https://github.com/lepture/mistune) with plugins:
### Text Formatting
- `~~strikethrough~~` โ ~~strikethrough~~
- `^superscript^` โ superscript
- `~subscript~` โ subscript
- `==highlighted==` โ highlighted (mark)
- `**bold**` and `*italic*` โ standard
### Footnotes
```markdown
Here's a sentence with a footnote.[^1]
[^1]: This is the footnote content.
```
### Task Lists
```markdown
- [x] Completed task
- [ ] Incomplete task
```
### Tables
```markdown
| Header 1 | Header 2 |
|----------|----------|
| Cell 1 | Cell 2 |
```
### Code Blocks
````markdown
```python
def hello():
print("Hello, world!")
```
````
Syntax highlighting via Pygments (specify language after ```).
### Math (LaTeX)
- Inline: `$E = mc^2$`
- Block: `$$\int_0^\infty e^{-x^2} dx$$`
### Abbreviations
```markdown
*[HTML]: Hypertext Markup Language
The HTML specification is maintained by the W3C.
```
### Admonitions
```markdown
.. note::
This is a note admonition.
.. warning::
This is a warning.
```
### Table of Contents
```markdown
.. toc::
```
## Dynamic Variables
Use `{{ variable }}` in your content:
### Blog Variables
- `{{ blog_title }}` โ Blog title
- `{{ blog_description }}` โ Blog meta description
- `{{ blog_created_date }}` โ Blog creation date
- `{{ blog_last_modified }}` โ Time since last modification
- `{{ blog_last_posted }}` โ Time since last post
- `{{ blog_link }}` โ Full blog URL
- `{{ tags }}` โ Rendered tag list with links
### Post Variables (in post templates)
- `{{ post_title }}` โ Current post title
- `{{ post_description }}` โ Post meta description
- `{{ post_published_date }}` โ Publication date
- `{{ post_last_modified }}` โ Time since modification
- `{{ post_link }}` โ Full post URL
- `{{ next_post }}` โ Link to next post
- `{{ previous_post }}` โ Link to previous post
### Post Listing
```markdown
{{ posts }}
{{ posts limit:5 }}
{{ posts tag:"tech" }}
{{ posts tag:"tech,ai" limit:10 order:asc }}
{{ posts description:True image:True content:True }}
```
Parameters:
- `tag:` โ filter by tag(s), comma-separated
- `limit:` โ max number of posts
- `order:` โ `asc` or `desc` (default: desc)
- `description:True` โ show meta descriptions
- `image:True` โ show meta images
- `content:True` โ show full content (only on pages)
### Email Signup (upgraded blogs only)
```markdown
{{ email-signup }}
{{ email_signup }}
```
## Links
### Standard Links
```markdown
[Link text](https://example.com)
[Link with title](https://example.com "Title text")
```
### Open in New Tab
Prefix URL with `tab:`:
```markdown
[External link](tab:https://example.com)
```
### Heading Anchors
Headings automatically get slugified IDs:
```markdown
## My Section Title
```
Links to: `#my-section-title`
## Typography
Automatic replacements:
- `(c)` โ ยฉ
- `(C)` โ ยฉ
- `(r)` โ ยฎ
- `(R)` โ ยฎ
- `(tm)` โ โข
- `(TM)` โ โข
- `(p)` โ โ
- `(P)` โ โ
- `+-` โ ยฑ
## Raw HTML
HTML is supported directly in Markdown:
```html
<div class="custom-class" style="text-align: center;">
<p>Centered content with custom styling</p>
</div>
```
**Note:** `<script>`, `<object>`, `<embed>`, `<form>` are stripped for free accounts. Iframes are whitelisted (YouTube, Vimeo, Spotify, etc.).
## Whitelisted Iframe Sources
- youtube.com, youtube-nocookie.com
- vimeo.com
- soundcloud.com
- spotify.com
- codepen.io
- google.com (docs, drive, maps)
- bandcamp.com
- apple.com (music embeds)
- archive.org
- And more...
## Dashboard URLs
Replace `<subdomain>` with your blog subdomain:
- **Blog list:** `https://bearblog.dev/dashboard/`
- **Dashboard:** `https://bearblog.dev/<subdomain>/dashboard/`
- **Posts list:** `https://bearblog.dev/<subdomain>/dashboard/posts/`
- **New post:** `https://bearblog.dev/<subdomain>/dashboard/posts/new/`
- **Edit post:** `https://bearblog.dev/<subdomain>/dashboard/posts/<uid>/`
- **Styles:** `https://bearblog.dev/<subdomain>/dashboard/styles/`
- **Navigation:** `https://bearblog.dev/<subdomain>/dashboard/nav/`
- **Analytics:** `https://bearblog.dev/<subdomain>/dashboard/analytics/`
- **Settings:** `https://bearblog.dev/<subdomain>/dashboard/settings/`
## Example: Complete Post
**Header content:**
```
title: Getting Started with AI Assistants
link: ai-assistants-intro
published_date: 2026-01-05 15:00
meta_description: A beginner's guide to working with AI assistants
tags: ai, tutorial, tech
is_page: false
lang: en
```
**Body content:**
```markdown
AI assistants are changing how we work. Here's what you need to know.
## Why AI Assistants?
They help with:
- [x] Writing and editing
- [x] Research and analysis
- [ ] Making coffee (not yet!)
> "The best tool is the one you actually use." โ Someone wise
## Getting Started
Check out [OpenAI](tab:https://openai.com) or [Anthropic](tab:https://anthropic.com) for popular options.
---
*What's your experience with AI? Let me know!*
{{ previous_post }} {{ next_post }}
```
## Tips
1. **Preview before publishing** โ Use the preview button to check formatting
2. **Use templates** โ Set up a post template in dashboard settings for consistent headers
3. **Schedule posts** โ Set `published_date` in the future
4. **Draft mode** โ Don't click publish to keep as draft
5. **Custom CSS** โ Add `class_name` and style in your blog's CSS
6. **SEO** โ Always set `meta_description` and `meta_image`
## Troubleshooting
- **Post not showing?** Check `publish` status and `published_date`
- **Tags not working?** Use comma separation, no quotes
- **Styling issues?** Check `class_name` is slugified (lowercase, hyphens)
- **Date format error?** Use `YYYY-MM-DD HH:MM`
---
## Skill Companion Files
> Additional files collected from the skill directory layout.
### _meta.json
```json
{
"owner": "azade-c",
"slug": "bearblog",
"displayName": "Bearblog",
"latest": {
"version": "1.0.1",
"publishedAt": 1770040612215,
"commit": "https://github.com/clawdbot/skills/commit/e4337b557749ef653bcdca8d0013fc8b0941f51f"
},
"history": [
{
"version": "1.0.0",
"publishedAt": 1767628816496,
"commit": "https://github.com/clawdbot/skills/commit/60aa9bb8ceb7cc053a13587655f0cd611a00b050"
}
]
}
```