Site customization lets you tell PNL Reader exactly how to extract content from any website. When the default reader mode doesn't work well on a site, you can create your own configuration.
- Open PNL Reader extension menu
- Click Site Customization in the settings dropdown
- Fill in the form and click Save Customization
Here's what each field does:
A friendly name for your customization. This helps you identify it later.
Example: "Reddit Posts and Comments"
A URL pattern to match. Can be a simple string or a regular expression.
Simple string (easiest):
"https://example.com/articles/"
This matches any URL that contains https://example.com/articles/.
Regular expression (more powerful):
"https://www.reddit.com/r/\\w+/comments/\\w+/.*"
This matches any Reddit post URL using regex patterns.
Regex tips (optional):
- Use
\\d+to match numbers - Use
[^/]+to match any characters except/ - Use
.*to match anything - Escape special characters like
.with\\.
These fields tell PNL Reader where to find the article content.
CSS selector(s) for the main content. This is the most important field.
Single selector: "#chapter-content"
Multiple selectors: [".post-body", ".comments"]
When you use multiple selectors, content from all matching elements is combined in order.
CSS selector for the article title.
Example: "h1.post-title"
CSS selector for author information.
Example: "a[href*='/user/']"
CSS selector for the publish date/time.
Example: "time[datetime]"
CSS selectors for elements to remove from the content. Useful for hiding ads, share buttons, or other clutter.
Example: [".ads", ".share-buttons", ".sidebar"]
Enable previous/next page navigation for multi-page articles.
CSS selector for the "previous page" link.
Example: "a.prev-chapter"
CSS selector for the "next page" link.
Example: "a.next-chapter"
Add custom styles for the extracted content. These styles are applied in reader mode.
/* Style comments */
.comment {
border-left: 2px dashed var(--pico-muted-border-color);
padding-left: 1em;
margin: 1em 0;
}
/* Highlight author names */
.author {
font-weight: bold;
color: var(--pico-primary);
}Available CSS variables:
--pico-primary- Primary accent color--pico-muted-color- Muted text color--pico-muted-border-color- Muted border color--pico-background-color- Background color--pnl-reader-line-height- Current line height setting
{
"name": "NovelFull Chapters",
"urlMatch": "https://novelfull.com/[^/]+/[^/]+\\.html$",
"article": {
"content": "#chapter-content",
"title": "a.chapter-title",
"excludes": ["div"]
}
}For a more advanced example with custom CSS styling, see Site Customization - Reddit Posts and Comments.
- Open the website you want to customize
- Right-click on the content you want to extract
- Click Inspect to open Developer Tools
- Look at the HTML structure and find unique selectors
Tips:
- Use IDs when available (
#main-content) - Use class names (
.article-body) - Use attribute selectors (
[data-type="post"]) - Combine selectors for specificity (
article .content p)
Made a great customization? Share it with the community!
- Fill in your configuration in the Site Customization page
- Click Share at pnl.dev
- Review and submit your post
Your configuration will be available at Reader Trove for others to use.
Formatting tips:
When sharing, your configuration is wrapped in a JSON code block. If you have custom CSS, it's better to put it in a separate CSS code block rather than inline in the JSON. This makes it easier to read and edit:
### Configuration
```json
{
"name": "My Site",
"urlMatch": "https://example.com/",
"article": {
"content": ".article-body"
}
}
```
### Custom CSS
```css
.comment {
border-left: 2px solid #ccc;
padding-left: 1em;
}
```The Share at pnl.dev button does this automatically for you.
Creating customizations can be tricky. Don't hesitate to:
- Ask questions at pnl.dev/category/3/feedback
- Browse existing configurations at Reader Trove
- Report issues if something doesn't work as expected
The community is here to help. Every question helps improve PNL Reader for everyone.
Happy reading! 📖