├── src
├── icon128.png
├── icon16.png
├── icon256.png
├── icon32.png
├── icon48.png
├── icon64.png
├── manifest.json
└── script.js
├── graphics
├── iconOri.psd
├── tileOri.psd
└── tileSmall.png
└── README.md
/src/icon128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/src/icon128.png
--------------------------------------------------------------------------------
/src/icon16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/src/icon16.png
--------------------------------------------------------------------------------
/src/icon256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/src/icon256.png
--------------------------------------------------------------------------------
/src/icon32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/src/icon32.png
--------------------------------------------------------------------------------
/src/icon48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/src/icon48.png
--------------------------------------------------------------------------------
/src/icon64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/src/icon64.png
--------------------------------------------------------------------------------
/graphics/iconOri.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/graphics/iconOri.psd
--------------------------------------------------------------------------------
/graphics/tileOri.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/graphics/tileOri.psd
--------------------------------------------------------------------------------
/graphics/tileSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathiasrw/no-noise-hacker-news/HEAD/graphics/tileSmall.png
--------------------------------------------------------------------------------
/src/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "No Noise Hacker News",
3 | "version": "0.1.0",
4 | "permissions": [
5 | "https://news.ycombinator.com/*"
6 | ],
7 | "content_scripts": [
8 | {
9 | "matches": ["https://news.ycombinator.com/*"],
10 | "js": ["script.js"],
11 | "run_at": "document_end"
12 | }
13 | ],
14 | "manifest_version": 2,
15 | "icons": {
16 | "16": "icon16.png",
17 | "32": "icon32.png",
18 | "48": "icon48.png",
19 | "64": "icon64.png",
20 | "128": "icon128.png",
21 | "256": "icon256.png"
22 | }
23 | }
--------------------------------------------------------------------------------
/src/script.js:
--------------------------------------------------------------------------------
1 | document.body.innerHTML = document.body.innerHTML.replace(new RegExp(/
.+?
/, "g"), "");
2 |
3 | /*
4 | Noise list generate with data from https://bigquery.cloud.google.com/dataset/bigquery-public-data:hacker_news per november 2015
5 |
6 | All domains with more than 2500 stories with more than 60% of stories having 3 or less votes
7 |
8 | Sites with usergenerated content was manually filtered out.
9 |
10 | //SQL:
11 | SELECT
12 | REGEXP_EXTRACT((REGEXP_EXTRACT(stories.url,'http://([^/]+)/')),'([^\\.]+\\.[^\\.]+(?:\\.[a-zA-Z].)?)$') AS stories_url_domain,
13 | COUNT(stories.id) AS stories_count,
14 | COUNT(CASE WHEN stories.score <= 3 THEN 1 ELSE NULL END) AS storiescountscore_3_minus,
15 | COUNT(CASE WHEN stories.score <= 3 THEN 1 ELSE NULL END) / COUNT(stories.id) *100 AS stories_percent_3_minus,
16 | FROM [fh-bigquery:hackernews.stories]
17 | AS stories
18 |
19 | WHERE
20 | REGEXP_EXTRACT((REGEXP_EXTRACT(stories.url,'http://([^/]+)/')),'([^\\.]+\\.[^\\.]+(?:\\.[a-zA-Z].)?)$')
21 | NOT IN ( // Sites with usergenerated content
22 | 'blogspot.com',
23 | 'youtube.com',
24 | 'wordpress.com',
25 | 'tumblr.com',
26 | 'google.com',
27 | 'wikipedia.org',
28 | 'github.com',
29 | 'bit.ly',
30 | 'typepad.com',
31 | 'reddit.com',
32 | 'stackoverflow.com',
33 | 'quora.com',
34 | 'youtu.be',
35 | 'stackexchange.com'
36 | )
37 | GROUP EACH BY 1
38 | HAVING
39 | COUNT(stories.id) > 2500
40 | AND stories_percent_3_minus > 60
41 | ORDER BY 4 aSC
42 | LIMIT 500
43 |
44 |
45 | Result:
46 | techcrunch.com
47 | nytimes.com
48 | arstechnica.com
49 | wired.com
50 | bbc.co.uk
51 | wsj.com
52 | businessinsider.com
53 | forbes.com
54 | cnn.com
55 | venturebeat.com
56 | mashable.com
57 | theverge.com
58 | thenextweb.com
59 | cnet.com
60 | washingtonpost.com
61 | theatlantic.com
62 | readwriteweb.com
63 | gigaom.com
64 | theguardian.com
65 | economist.com
66 | reuters.com
67 | bloomberg.com
68 | yahoo.com
69 | guardian.co.uk
70 | zdnet.com
71 | engadget.com
72 | slate.com
73 | technologyreview.com
74 | theregister.co.uk
75 | posterous.com
76 | bbc.com
77 | gizmodo.com
78 | npr.org
79 | businessweek.com
80 | itworld.com
81 | fastcompany.com
82 | huffingtonpost.com
83 | telegraph.co.uk
84 | networkworld.com
85 |
86 | */
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | _Chrome extension to avoid noisy domains in the Hacker News feed_
2 |
3 | [](https://chrome.google.com/webstore/detail/no-noise-hacker-news/meeppdmpplgpkpgdlnhfagmplkmkjhnm/)
4 |
5 | # No Noise Hacker News - Chrome browser extension
6 |
7 |
8 |
9 | Do you ever wish you could filter [Hacker News](https://news.ycombinator.com/) to avoid the noise? I am talking about the noise from big websites trying to push their content to HN hoping for a bigger audience.
10 |
11 | I have a feeling some websites sometimes think _"Let us push (all) the content and let the community sort out what is interesting"_ while flooding the feed like a [Kudzu](https://en.wikipedia.org/wiki/Kudzu_in_the_United_States) of stories shadowing the light of attention (especially in the "new" section).
12 |
13 |
14 |
15 | This is the source of [the chrome extension No Noise Hacker News](https://chrome.google.com/webstore/detail/no-noise-hacker-news/meeppdmpplgpkpgdlnhfagmplkmkjhnm/) that filteres away stories from domains that - per november 2015 - had more than than 2500 submitted stories but less than 40% had more than 3 votes. See [`src/script.js`](https://github.com/mathiasrw/no-noise-hacker-news/blob/master/src/script.js) for more details on how the domains were identified.
16 |
17 | ## Todo
18 | * Let the top bar icon get color when stories have been filtered
19 | * Clicking on the top bar icon gives you the option to reload the page with no stories filtered
20 | * Let the list of domains be updated with data for 2016 or the last X days
21 | * Let people add and remove listed domains by themselves
22 |
23 |
24 | _PR very welcome_
25 |
26 |
27 | ## But?
28 |
29 | #### Is this censoring?
30 | - No, this is a way of limiting domains with a high amount of noise.
31 |
32 | #### Will it hide a really interesting story?
33 | - Yes, but any story that is number 1 will never be filtered (so if its really good, you will still see it)
34 |
35 | #### How can I see if anything is being filtered?
36 | The sequence of numbers at the left side will skip the order of natural numbers.
37 |
38 | #### I really want to see what is being filtered?
39 | Open the page in incognito mode to avoid filtering anything.
40 |
41 | #### Can I alter the list of domains being filtered?
42 | - Not right now, but that is where I want to go with this plugin. PRs are very welcome.
43 |
44 | #### What is being filtered
45 | At the moment the following domains are filtered:
46 | - techcrunch.com
47 | - nytimes.com
48 | - arstechnica.com
49 | - wired.com
50 | - bbc.co.uk
51 | - wsj.com
52 | - businessinsider.com
53 | - forbes.com
54 | - cnn.com
55 | - venturebeat.com
56 | - mashable.com
57 | - theverge.com
58 | - thenextweb.com
59 | - cnet.com
60 | - washingtonpost.com
61 | - theatlantic.com
62 | - readwriteweb.com
63 | - gigaom.com
64 | - theguardian.com
65 | - economist.com
66 | - reuters.com
67 | - bloomberg.com
68 | - yahoo.com
69 | - guardian.co.uk
70 | - zdnet.com
71 | - engadget.com
72 | - slate.com
73 | - technologyreview.com
74 | - theregister.co.uk
75 | - posterous.com
76 | - bbc.com
77 | - gizmodo.com
78 | - npr.org
79 | - businessweek.com
80 | - itworld.com
81 | - fastcompany.com
82 | - huffingtonpost.com
83 | - telegraph.co.uk
84 | - networkworld.com
85 |
86 | See [`src/script.js`](https://github.com/mathiasrw/no-noise-hacker-news/blob/master/src/script.js) for more details on how the domains were identified.
87 |
88 |
89 |
--------------------------------------------------------------------------------