bearblog
Bear Blog Skill
Create, edit, and manage posts on Bear Blog — 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://<subdomain>.bearblog.dev/dashboard/post/
Step 2: Fill the editor
Bear Blog uses a plain text header format — no JavaScript DOM manipulation needed!
The editor has two textareas:
header_content— metadata attributes (one per line)body_content— the actual post content in Markdown
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 with plugins:
Text Formatting
~~strikethrough~~→strikethrough^superscript^→ superscript~subscript~→ subscript==highlighted==→ highlighted (mark)**bold**and*italic*— standard
Footnotes
Here's a sentence with a footnote.[^1]
[^1]: This is the footnote content.
Task Lists
- [x] Completed task
- [ ] Incomplete task
Tables
| Header 1 | Header 2 |
|----------|----------|
| Cell 1 | Cell 2 |
Code Blocks
```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
*[HTML]: Hypertext Markup Language
The HTML specification is maintained by the W3C.
Admonitions
.. note::
This is a note admonition.
.. warning::
This is a warning.
Table of Contents
.. 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
{{ 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-separatedlimit:— max number of postsorder:—ascordesc(default: desc)description:True— show meta descriptionsimage:True— show meta imagescontent:True— show full content (only on pages)
Email Signup (upgraded blogs only)
{{ email-signup }}
{{ email_signup }}
Links
Standard Links
[Link text](https://example.com)
[Link with title](https://example.com "Title text")
Open in New Tab
Prefix URL with tab::
[External link](tab:https://example.com)
Heading Anchors
Headings automatically get slugified IDs:
## 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:
<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://<subdomain>.bearblog.dev/dashboard/ - New post:
https://<subdomain>.bearblog.dev/dashboard/post/ - Edit post:
https://<subdomain>.bearblog.dev/dashboard/post/<uid>/ - Styles:
https://<subdomain>.bearblog.dev/dashboard/styles/ - Navigation:
https://<subdomain>.bearblog.dev/dashboard/nav/ - Analytics:
https://<subdomain>.bearblog.dev/dashboard/analytics/ - Settings:
https://<subdomain>.bearblog.dev/dashboard/settings/
Example: Complete Post
Header content:
title: Getting Started with AI Assistants
link: ai-assistants-intro
published_date: 2026-01-05 15:00
tags: ai, tutorial, tech
make_discoverable: true
is_page: false
meta_description: A beginner's guide to working with AI assistants
lang: en
Body content:
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
- Preview before publishing — Use the preview button to check formatting
- Use templates — Set up a post template in dashboard settings for consistent headers
- Schedule posts — Set
published_datein the future - Draft mode — Don't click publish to keep as draft
- Custom CSS — Add
class_nameand style in your blog's CSS - SEO — Always set
meta_descriptionandmeta_image
Troubleshooting
- Post not showing? Check
publishstatus andpublished_date - Tags not working? Use comma separation, no quotes
- Styling issues? Check
class_nameis slugified (lowercase, hyphens) - Date format error? Use
YYYY-MM-DD HH:MM